Fairshare between two and more: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Draco) |
Not a robot (talk | contribs) (Add PL/M) |
||
Line 1,597: | Line 1,597: | ||
11 : {0,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,0,2,3,4} |
11 : {0,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,0,2,3,4} |
||
</pre> |
</pre> |
||
=={{header|PL/M}}== |
|||
<syntaxhighlight lang="plm">100H: |
|||
BDOS: PROCEDURE (F,A); DECLARE F BYTE, A ADDRESS; GO TO 5; END BDOS; |
|||
EXIT: PROCEDURE; GO TO 0; END EXIT; |
|||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT; |
|||
PRINT$NUMBER: PROCEDURE (N); |
|||
DECLARE S (7) BYTE INITIAL ('..... $'); |
|||
DECLARE (N, P) ADDRESS, C BASED P BYTE; |
|||
P = .S(5); |
|||
DIGIT: |
|||
P = P - 1; |
|||
C = N MOD 10 + '0'; |
|||
N = N / 10; |
|||
IF N > 0 THEN GO TO DIGIT; |
|||
CALL PRINT(P); |
|||
END PRINT$NUMBER; |
|||
FAIR$SHARE: PROCEDURE (N, BASE) ADDRESS; |
|||
DECLARE (N, BASE, SUM) ADDRESS; |
|||
SUM = 0; |
|||
DO WHILE N>0; |
|||
SUM = SUM + N MOD BASE; |
|||
N = N / BASE; |
|||
END; |
|||
RETURN SUM MOD BASE; |
|||
END FAIR$SHARE; |
|||
DECLARE BASES (4) BYTE INITIAL (2, 3, 5, 11); |
|||
DECLARE (I, N) BYTE; |
|||
DO I=0 TO LAST(BASES); |
|||
CALL PRINT$NUMBER(BASES(I)); |
|||
CALL PRINT(.': $'); |
|||
DO N=0 TO 24; |
|||
CALL PRINT$NUMBER(FAIR$SHARE(N, BASES(I))); |
|||
END; |
|||
CALL PRINT(.(13,10,'$')); |
|||
END; |
|||
CALL EXIT; |
|||
EOF</syntaxhighlight> |
|||
{{out}} |
|||
<pre>2 : 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 |
|||
3 : 0 1 2 1 2 0 2 0 1 1 2 0 2 0 1 0 1 2 2 0 1 0 1 2 1 |
|||
5 : 0 1 2 3 4 1 2 3 4 0 2 3 4 0 1 3 4 0 1 2 4 0 1 2 3 |
|||
11 : 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 0 2 3 4</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |