Rep-string: Difference between revisions

1,208 bytes added ,  14 days ago
Add ed example
(Add Refal)
(Add ed example)
 
(3 intermediate revisions by 3 users not shown)
Line 68:
'1' has reps []
</pre>
 
=={{header|ABC}}==
<syntaxhighlight lang="abc">HOW TO RETURN repstrings str:
PUT {} IN reps
FOR len IN {0..floor(#str/2-1)}:
PUT str|floor(#str/2-len) IN rep
PUT rep IN rpt
WHILE #rpt < #str: PUT rpt^rep IN rpt
IF rpt|#str = str: INSERT rep IN reps
RETURN reps
 
PUT {} IN tests
PUT "1001110011" IN tests[1]
PUT "1110111011" IN tests[2]
PUT "0010010010" IN tests[3]
PUT "1010101010" IN tests[4]
PUT "1111111111" IN tests[5]
PUT "0100101101" IN tests[6]
PUT "0100100" IN tests[7]
PUT "101" IN tests[8]
PUT "11" IN tests[9]
PUT "00" IN tests[10]
PUT "1" IN tests[11]
 
FOR t IN tests:
WRITE t, repstrings t /
</syntaxhighlight>
{{out}}
<pre>1001110011: {"10011"}
1110111011: {"1110"}
0010010010: {"001"}
1010101010: {"10"; "1010"}
1111111111: {"1"; "11"; "111"; "1111"; "11111"}
0100101101: {}
0100100: {"010"}
101: {}
11: {"1"}
00: {"0"}
1: {}</pre>
 
=={{header|Action!}}==
Line 1,433 ⟶ 1,472:
sl = len s$ div 2 + 1
while sl > 1
r$ = substr s$ sl -1999
if r$ = substr s$ 1 len r$
return substr r$ 1 (sl - 1)
Line 1,504 ⟶ 1,543:
"1" too-short-no-rep
</syntaxhighlight>
 
=={{header|Ed}}==
 
This is not a comprehensive solution, as it only handles sequences repeated twice. But it's good enough for a tool not intended for general-purpose programming.
 
<syntaxhighlight>
H
g/([01]*)\1(.*)/s//\1/
,p
Q
</syntaxhighlight>
 
{{out}}
<pre>
10011
1110
001
1010
11111
010
010
 
1
0
 
</pre>
 
=={{header|Elixir}}==
84

edits