Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,53 @@
|
|||
MODULE Coconuts;
|
||||
FROM FormatString IMPORT FormatString;
|
||||
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
|
||||
|
||||
CONST MAX_SAILORS = 9;
|
||||
|
||||
PROCEDURE Scenario(coconuts,ns : INTEGER);
|
||||
VAR
|
||||
buf : ARRAY[0..63] OF CHAR;
|
||||
hidden : ARRAY[0..MAX_SAILORS-1] OF INTEGER;
|
||||
nc,s,t : INTEGER;
|
||||
BEGIN
|
||||
IF ns>MAX_SAILORS THEN RETURN END;
|
||||
|
||||
coconuts := (coconuts DIV ns) * ns + 1;
|
||||
LOOP
|
||||
nc := coconuts;
|
||||
FOR s:=1 TO ns DO
|
||||
IF nc MOD ns = 1 THEN
|
||||
hidden[s-1] := nc DIV ns;
|
||||
nc := nc - hidden[s-1] - 1;
|
||||
IF (s=ns) AND (nc MOD ns = 0) THEN
|
||||
FormatString("%i sailors require a minimum of %i coconuts\n", buf, ns, coconuts);
|
||||
WriteString(buf);
|
||||
|
||||
FOR t:=1 TO ns DO
|
||||
FormatString("\tSailor %i hides %i\n", buf, t, hidden[t-1]);
|
||||
WriteString(buf)
|
||||
END;
|
||||
|
||||
FormatString("\tThe monkey gets %i\n", buf, ns);
|
||||
WriteString(buf);
|
||||
FormatString("\tFinally, each sailor takes %i\n", buf, nc DIV ns);
|
||||
WriteString(buf);
|
||||
RETURN
|
||||
END
|
||||
ELSE
|
||||
BREAK
|
||||
END
|
||||
END;
|
||||
INC(coconuts,ns)
|
||||
END
|
||||
END Scenario;
|
||||
|
||||
VAR
|
||||
ns : INTEGER;
|
||||
BEGIN
|
||||
FOR ns:=2 TO MAX_SAILORS DO
|
||||
Scenario(11,ns);
|
||||
END;
|
||||
|
||||
ReadChar
|
||||
END Coconuts.
|
||||
Loading…
Add table
Add a link
Reference in a new issue