35 lines
758 B
Plaintext
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
|