23 lines
625 B
Ruby
23 lines
625 B
Ruby
class Array
|
|
def func_power_set
|
|
inject([[]]) { |ps,item| # for each item in the Array
|
|
ps + # take the powerset up to now and add
|
|
ps.map { |e| e + [item] } # it again, with the item appended to each element
|
|
}
|
|
end
|
|
|
|
def non_continuous_subsequences
|
|
func_power_set.reject {|seq| continuous?(seq)}
|
|
end
|
|
|
|
def continuous?(seq)
|
|
seq.each_cons(2) {|a, b| return false if a.succ != b}
|
|
true
|
|
end
|
|
end
|
|
|
|
p (1..3).to_a.non_continuous_subsequences
|
|
p (1..4).to_a.non_continuous_subsequences
|
|
p (1..5).to_a.non_continuous_subsequences
|
|
p ("a".."d").to_a.non_continuous_subsequences
|