Sum to 100: Difference between revisions

511 bytes removed ,  2 months ago
m
→‎{{header|ALGOL 68}}: Avoid line wrap
m (→‎{{header|Wren}}: Minor tidy)
m (→‎{{header|ALGOL 68}}: Avoid line wrap)
Line 438:
# we don't distinguish between strings starting "+1" and starting " 1" #
FOR s1 FROM -1 TO 0 DO
sum string[ 1 ] := sign char[ s1 ];
FOR s2 FROM -1 TO 1 DO
sum string[ 3 ] := sign char[ s2 ];
FOR s3 FROM -1 TO 1 DO
sum string[ 5 ] := sign char[ s3 ];
FOR s4 FROM -1 TO 1 DO
sum string[ 7 ] := sign char[ s4 ];
FOR s5 FROM -1 TO 1 DO
sum string[ 9 ] := sign char[ s5 ];
FOR s6 FROM -1 TO 1 DO
sum string[ 11 ] := sign char[ s6 ];
FOR s7 FROM -1 TO 1 DO
sum string[ 13 ] := sign char[ s7 ];
FOR s8 FROM -1 TO 1 DO
sum string[ 15 ] := sign char[ s8 ];
FOR s9 FROM -1 TO 1 DO
sum string[ 17 ] := sign char[ s9 ];
INT number := 0;
INT part := IF s1 < 0 THEN -1 ELSE 1 FI;
IF s2 = 0 THEN part *:= 10 +:= 2 * SIGN part ELSE number +:= part; part := 2 * s2 FI;
IF s3 = 0 THEN part *:= 10 +:= 3 * SIGN part ELSE number +:= part; part := 3 * s3 FI;
IF s4 = 0 THEN part *:= 10 +:= 4 * SIGN part ELSE number +:= part; part := 4 * s4 FI;
IF s5 = 0 THEN part *:= 10 +:= 5 * SIGN part ELSE number +:= part; part := 5 * s5 FI;
IF s6 = 0 THEN part *:= 10 +:= 6 * SIGN part ELSE number +:= part; part := 6 * s6 FI;
IF s7 = 0 THEN part *:= 10 +:= 7 * SIGN part ELSE number +:= part; part := 7 * s7 FI;
IF s8 = 0 THEN part *:= 10 +:= 8 * SIGN part ELSE number +:= part; part := 8 * s8 FI;
IF s9 = 0 THEN part *:= 10 +:= 9 * SIGN part ELSE number +:= part; part := 9 * s9 FI;
number +:= part;
IF number >= LWB solutions IF AND number ><= LWBUPB solutions THEN
solutions[ number ] +:= ";" AND+ numbersum <= UPB solutionsstring;
count [ THENnumber ] +:= 1
solutions[ number ] +:= ";" + sum stringFI;
BOOL inserted count [ number ] +:= 1FALSE;
FOR l pos FROM LWB largest TO UPB largest FI;WHILE NOT inserted DO
IF number > largest[ l pos BOOL] inserted := FALSE;THEN
# found a FORnew llarger posnumber FROM LWB largest TO UPB largest WHILE NOT inserted DO#
FOR m pos FROM UPB largest BY IF-1 number > largest[TO l pos ]+ 1 THENDO
largest [ m #pos found] a:= newlargest larger number # [ m pos - 1 ];
largest FORcount[ m pos FROM] UPB:= largest BYcount[ -1 TO lm pos +- 1 DO]
largest [ m pos ] := largest [ m pos - 1 ]OD;
largest largest count[ ml pos ] := largest count[ m pos - 1 ]number;
largest count[ l pos ] := OD1;
largest [ l pos ]inserted := number;TRUE
ELIF number = largest count[ l pos ] := 1;THEN
# have another way of generating this number inserted := TRUE#
largest ELIF number = largestcount[ l pos ] THEN+:= 1;
inserted := # have another way of generating this number #TRUE
largest count[ l pos ] +:= 1;FI
inserted := TRUEOD
FI
OD
OD
OD
OD
OD
OD
FIOD
OD
OD
OD
OD
OD;
 
Line 541 ⟶ 539:
print( ( newline ) )
 
END
END</syntaxhighlight>
{{out}}
<pre>
3,032

edits