RPG attributes generator: Difference between revisions
Content added Content deleted
(Added solution for Action!) |
(Added Algol 68) |
||
Line 457: | Line 457: | ||
attribs: 14,10,7,9,12,12 sum=64 highCount=0 failed |
attribs: 14,10,7,9,12,12 sum=64 highCount=0 failed |
||
attribs: 12,13,16,16,18,16 sum=91 highCount=4 success |
attribs: 12,13,16,16,18,16 sum=91 highCount=4 success |
||
</pre> |
|||
=={{header|ALGOL 68}}== |
|||
{{Trans|Action!}} |
|||
<lang algol68>BEGIN # RPG attributes generator # |
|||
INT attrib count = 6; |
|||
MODE RESULT = STRUCT( BOOL success, INT sum, high count, [ 1 : attrib count ]INT a ); |
|||
PROC generate attrib = INT: |
|||
BEGIN |
|||
INT min := 255, sum := 0; |
|||
FOR i FROM 0 TO 3 DO |
|||
INT v = ENTIER( next random * 6 ) + 1; |
|||
IF v < min THEN |
|||
min := v |
|||
FI; |
|||
sum +:= v |
|||
OD; |
|||
sum - min |
|||
END # generate attrib #; |
|||
PROC generate = ( REF RESULT res )VOID: |
|||
BEGIN |
|||
high count OF res := 0; |
|||
sum OF res := 0; |
|||
FOR i FROM LWB a OF res TO UPB a OF res DO |
|||
INT v = generate attrib; |
|||
IF v >= 15 THEN |
|||
high count OF res +:= 1 |
|||
FI; |
|||
sum OF res +:= v; |
|||
( a OF res )[ i ] := v |
|||
OD; |
|||
success OF res := ( high count OF res >= 2 AND sum OF res >= 75 ) |
|||
END # generate # ; |
|||
RESULT res; |
|||
success OF res := FALSE; |
|||
WHILE NOT success OF res DO |
|||
generate( res ); |
|||
print( ( "attribs: " ) ); |
|||
FOR i FROM LWB a OF res TO UPB a OF res DO |
|||
print( ( whole( ( a OF res )[ i ], 0 ) ) ); |
|||
IF i < UPB a OF res THEN |
|||
print( ( " " ) ) |
|||
FI |
|||
OD; |
|||
print( ( " sum=", whole( sum OF res, 0 ) |
|||
, " highCount=", whole( high count OF res, 0 ) |
|||
, " ", IF success OF res THEN "success" ELSE "failed" FI |
|||
, newline |
|||
) |
|||
) |
|||
OD |
|||
END</lang> |
|||
{{out}} |
|||
<pre> |
|||
attribs: 12 7 15 12 7 13 sum=66 highCount=1 failed |
|||
attribs: 10 10 11 13 9 9 sum=62 highCount=0 failed |
|||
attribs: 10 13 10 15 10 11 sum=69 highCount=1 failed |
|||
attribs: 10 16 15 11 16 8 sum=76 highCount=3 success |
|||
</pre> |
</pre> |
||