Non-continuous subsequences: Difference between revisions

Added Elixir
m (→‎{{header|Sidef}}: minor code simplifications)
(Added Elixir)
Line 78:
2 5
3 5</pre>
 
=={{header|ALGOL 68}}==
===Recursive===
Line 817 ⟶ 818:
nc.writeln;
}</lang>
 
=={{header|Elixir}}==
{{trans|Erlang}}
<lang elixir>defmodule RC do
defp masks(n) do
maxmask = trunc(:math.pow(2, n)) - 1
Enum.map(3..maxmask, &Integer.to_string(&1, 2))
|> Enum.filter_map(&contains_noncont(&1), &String.rjust(&1, n, ?0)) # padding
end
defp contains_noncont(n) do
Regex.match?(~r/10+1/, n)
end
defp apply_mask_to_list(mask, list) do
Enum.zip(to_char_list(mask), list)
|> Enum.filter_map(fn {include, _} -> include > ?0 end, fn {_, value} -> value end)
end
 
def ncs(list) do
Enum.map(masks(length(list)), fn mask -> apply_mask_to_list(mask, list) end)
end
end
 
IO.inspect RC.ncs([1,2,3])
IO.inspect RC.ncs([1,2,3,4])
IO.inspect RC.ncs('abcd')</lang>
 
{{out}}
<pre>
[[1, 3]]
[[2, 4], [1, 4], [1, 3], [1, 3, 4], [1, 2, 4]]
['bd', 'ad', 'ac', 'acd', 'abd']
</pre>
 
=={{header|Erlang}}==
Anonymous user