RosettaCodeData/Task/Rep-string/Julia/rep-string.julia

35 lines
758 B
Plaintext

function list_reps{T<:String}(r::T)
n = length(r)
replst = T[]
for m in 1:n>>1
s = r[1:chr2ind(r,m)]
(s^(div(n,m)+1))[1:chr2ind(r,n)] == r || continue
push!(replst, s)
end
return replst
end
tests = {"1001110011",
"1110111011",
"0010010010",
"1010101010",
"1111111111",
"0100101101",
"0100100",
"101",
"11",
"00",
"1",
"\u2200\u2203\u2200\u2203\u2200\u2203\u2200\u2203"}
for r in tests
replst = list_reps(r)
rlen = length(replst)
print(@sprintf(" %s ", r))
if rlen == 0
println("is not a rep-string.")
else
println("is a rep-string of ", join(replst, ", "), ".")
end
end