Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
52
Task/Rep-string/REXX/rep-string-1.rexx
Normal file
52
Task/Rep-string/REXX/rep-string-1.rexx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
/* REXX ***************************************************************
|
||||
* 11.05.2013 Walter Pachl
|
||||
* 14.05.2013 Walter Pachl extend to show additional rep-strings
|
||||
**********************************************************************/
|
||||
Call repstring '1001110011'
|
||||
Call repstring '1110111011'
|
||||
Call repstring '0010010010'
|
||||
Call repstring '1010101010'
|
||||
Call repstring '1111111111'
|
||||
Call repstring '0100101101'
|
||||
Call repstring '0100100'
|
||||
Call repstring '101'
|
||||
Call repstring '11'
|
||||
Call repstring '00'
|
||||
Call repstring '1'
|
||||
Exit
|
||||
|
||||
repstring:
|
||||
Parse Arg s
|
||||
sq=''''s''''
|
||||
n=length(s)
|
||||
Do l=length(s)%2 to 1 By -1
|
||||
If substr(s,l+1,l)=left(s,l) Then Leave
|
||||
End
|
||||
If l>0 Then Do
|
||||
rep_str=left(s,l)
|
||||
Do i=1 By 1
|
||||
If substr(s,i*l+1,l)<>rep_str Then
|
||||
Leave
|
||||
End
|
||||
If left(copies(rep_str,n),length(s))=s Then Do
|
||||
Call show_rep rep_str /* show result */
|
||||
Do i=length(rep_str)-1 To 1 By -1 /* look for shorter rep_str-s */
|
||||
rep_str=left(s,i)
|
||||
If left(copies(rep_str,n),length(s))=s Then
|
||||
Call show_rep rep_str
|
||||
End
|
||||
End
|
||||
Else
|
||||
Call show_norep
|
||||
End
|
||||
Else
|
||||
Call show_norep
|
||||
Return
|
||||
|
||||
show_rep:
|
||||
Parse Arg rs
|
||||
Say right(sq,12) 'has a repetition length of' length(rs) 'i.e.' ''''rs''''
|
||||
Return
|
||||
show_norep:
|
||||
Say right(sq,12) 'is not a repeated string'
|
||||
Return
|
||||
13
Task/Rep-string/REXX/rep-string-2.rexx
Normal file
13
Task/Rep-string/REXX/rep-string-2.rexx
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/*REXX pgm determines if a str is a repStr, returns minimum len. repStr.*/
|
||||
s=1001110011 1110111011 0010010010 1010101010 1111111111 0100101101 0100100 101 11 00 1
|
||||
/* [↑] a list of binary strings.*/
|
||||
do k=1 for words(s); _=word(s,k) /*process all the binary strings.*/
|
||||
say right(_,25) repString(_) /*show the original & the result.*/
|
||||
end /*k*/ /* [↑] "result" may be negatory.*/
|
||||
exit /*stick a fork in it, we're done.*/
|
||||
/*───────────────────────────────────REPSTRING subroutine───────────────*/
|
||||
repString: procedure; parse arg x; L=length(x); r@= ' rep string='
|
||||
do j=1 for L-1 while j<=L%2; p=left(x,j) /*WHILE tests max*/
|
||||
if left(copies(p,L),L)==x then return r@ left(p,15) '[length' j"]"
|
||||
end /*j*/ /* [↑] we have found a repString*/
|
||||
return ' (no repetitions)' /*(sigh)∙∙∙ a failure to find rep*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue