Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
96
Task/ABC-problem/Simula/abc-problem.simula
Normal file
96
Task/ABC-problem/Simula/abc-problem.simula
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
COMMENT ABC PROBLEM;
|
||||
BEGIN
|
||||
|
||||
CLASS BLOCK(CH1, CH2); CHARACTER CH1, CH2;
|
||||
BEGIN
|
||||
BOOLEAN USED;
|
||||
END;
|
||||
|
||||
CLASS GAME(WORD, POSSIBLE); TEXT WORD; BOOLEAN POSSIBLE;;
|
||||
|
||||
BOOLEAN PROCEDURE CANMAKEWORD(WORD); TEXT WORD;
|
||||
BEGIN
|
||||
INTEGER I, NUMBLOCKS;
|
||||
BOOLEAN ALLPOSSIBLE, FOUND;
|
||||
NUMBLOCKS := UPPERBOUND(BLOCKS, 1);
|
||||
FOR I := 1 STEP 1 UNTIL NUMBLOCKS DO
|
||||
BLOCKS(I).USED := FALSE;
|
||||
ALLPOSSIBLE := TRUE;
|
||||
|
||||
WORD.SETPOS(1);
|
||||
WHILE ALLPOSSIBLE AND WORD.MORE DO
|
||||
BEGIN
|
||||
CHARACTER WORDCHAR;
|
||||
WORDCHAR := WORD.GETCHAR;
|
||||
FOUND := FALSE;
|
||||
FOR I := 1 STEP 1 UNTIL NUMBLOCKS DO
|
||||
BEGIN
|
||||
INSPECT BLOCKS(I) DO
|
||||
BEGIN
|
||||
IF (WORDCHAR = CH1 OR WORDCHAR = CH2) AND NOT USED THEN
|
||||
BEGIN
|
||||
USED := FOUND := TRUE;
|
||||
GOTO L;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
L:
|
||||
IF NOT FOUND THEN
|
||||
ALLPOSSIBLE := FALSE;
|
||||
END;
|
||||
CANMAKEWORD := ALLPOSSIBLE;
|
||||
END CANMAKEWORD;
|
||||
|
||||
REF(BLOCK) ARRAY BLOCKS(1:20);
|
||||
REF(GAME) ARRAY GAMES(1:7);
|
||||
TEXT WORD;
|
||||
BEGIN
|
||||
INTEGER I;
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('B', 'O');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('X', 'K');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('D', 'Q');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('C', 'P');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('N', 'A');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('G', 'T');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('R', 'E');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('T', 'G');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('Q', 'D');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('F', 'S');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('J', 'W');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('H', 'U');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('V', 'I');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('A', 'N');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('O', 'B');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('E', 'R');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('F', 'S');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('L', 'Y');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('P', 'C');
|
||||
I := I+1; BLOCKS(I) :- NEW BLOCK('Z', 'M');
|
||||
END;
|
||||
BEGIN
|
||||
INTEGER N, I; BOOLEAN ANSWER;
|
||||
N := N+1; GAMES(N) :- NEW GAME("A", TRUE);
|
||||
N := N+1; GAMES(N) :- NEW GAME("BARK", TRUE);
|
||||
N := N+1; GAMES(N) :- NEW GAME("BOOK", FALSE);
|
||||
N := N+1; GAMES(N) :- NEW GAME("TREAT", TRUE);
|
||||
N := N+1; GAMES(N) :- NEW GAME("COMMON", FALSE);
|
||||
N := N+1; GAMES(N) :- NEW GAME("SQUAD", TRUE);
|
||||
N := N+1; GAMES(N) :- NEW GAME("CONFUSE", TRUE);
|
||||
FOR I := 1 STEP 1 UNTIL N DO
|
||||
BEGIN
|
||||
INSPECT GAMES(I) DO
|
||||
BEGIN
|
||||
OUTTEXT(WORD);
|
||||
OUTTEXT(" => ");
|
||||
ANSWER := CANMAKEWORD(WORD);
|
||||
OUTCHAR(IF ANSWER THEN 'T' ELSE 'F');
|
||||
IF ANSWER EQV POSSIBLE
|
||||
THEN OUTTEXT(" OK")
|
||||
ELSE OUTTEXT(" ------------- WRONG!");
|
||||
OUTIMAGE;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
|
||||
|
||||
END.
|
||||
Loading…
Add table
Add a link
Reference in a new issue