funkr 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,32 +2,27 @@
2
2
  module Enumerable
3
3
 
4
4
  # enumerable extensions
5
- class NoHead; end
6
-
7
- def head; empty? ? NoHead : first; end
8
-
9
- def tail; self.drop(1); end
10
-
11
5
  def all_different?
12
- return true if tail.empty?
13
- !tail.include?(head) and tail.all_different?
6
+ a = self.to_a
7
+ self.each do |e|
8
+ return false if a.include?(e)
9
+ a.shift
10
+ end
11
+ return true
14
12
  end
15
13
 
16
14
  # http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/src/Data-List.html#group
17
15
  def group_seq_by(&block)
18
- if empty? then []
19
- else
20
- res = []
21
- rst = self
22
- while rst.any? do
23
- v = yield(rst.head)
24
- a,rst = rst.span{|x| (yield x) == v}
25
- res.push(a)
26
- end
27
- return res
16
+ res = []
17
+ rst = self.to_a
18
+ while !rst.empty? do
19
+ v = yield(rst.first)
20
+ a,rst = rst.span{|x| (yield x) == v}
21
+ res.push(a)
28
22
  end
23
+ return res
29
24
  end
30
-
25
+
31
26
  # http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/src/GHC-List.html#span
32
27
  def span(&block)
33
28
  inc = []
@@ -40,14 +35,15 @@ module Enumerable
40
35
 
41
36
  # Constitue des groupes disjoints de n éléments au plus
42
37
  def groups_of(n)
43
- return [] if self.empty?
44
- [self.take(n)] + self.drop(n).groups_of(n)
38
+ g = self.take(n)
39
+ return [] if g.empty?
40
+ [g] + self.drop(n).groups_of(n)
45
41
  end
46
42
 
47
43
  # constitue des groupes de n éléments exactement, décalés de 1
48
44
  def sliding_groups_of(n)
49
45
  return [] if self.size < n
50
- [ self.take(n) ] + self.tail.sliding_groups_of(n)
46
+ [ self.take(n) ] + self.drop(1).sliding_groups_of(n)
51
47
  end
52
48
 
53
49
  # trouve l'index d'une séquence
@@ -1,3 +1,3 @@
1
1
  module Funkr
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.14"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 12
9
- version: 0.0.12
8
+ - 14
9
+ version: 0.0.14
10
10
  platform: ruby
11
11
  authors:
12
12
  - Paul Rivier
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-06-07 00:00:00 +02:00
17
+ date: 2011-07-19 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20