30 lines
688 B
Elixir
30 lines
688 B
Elixir
defmodule Rep_string do
|
|
def find(""), do: IO.puts "String was empty (no repetition)"
|
|
def find(str) do
|
|
IO.puts str
|
|
rep_pos = Enum.find(div(String.length(str),2)..1, fn pos ->
|
|
String.starts_with?(str, String.slice(str, pos..-1))
|
|
end)
|
|
if rep_pos && rep_pos>0 do
|
|
IO.puts String.duplicate(" ", rep_pos) <> String.slice(str, 0, rep_pos)
|
|
else
|
|
IO.puts "(no repetition)"
|
|
end
|
|
IO.puts ""
|
|
end
|
|
end
|
|
|
|
strs = ~w(1001110011
|
|
1110111011
|
|
0010010010
|
|
1010101010
|
|
1111111111
|
|
0100101101
|
|
0100100
|
|
101
|
|
11
|
|
00
|
|
1)
|
|
|
|
Enum.each(strs, fn str -> Rep_string.find(str) end)
|