funkr 0.0.12 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -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