Update all new Tasks

This commit is contained in:
Ingy döt Net 2015-02-20 09:02:09 -05:00
parent 00a190b0a6
commit 91df62d461
5697 changed files with 93386 additions and 804 deletions

View 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

View 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*/