program repstring; tests := [ "1001110011", "1110111011", "0010010010", "1010101010", "1111111111", "0100101101", "0100100", "101", "11", "00", "1" ]; loop for test in tests do print(test + ": " + str repstrings(test)); end loop; proc repstrings(s); return { s(..l) : l in [1..#s div 2] | (s(..l)*(#s div l+1))(..#s) = s }; end proc; end program;