|
|
1.1 root 1: Berkeley Pascal PI -- Version 3.1 (9/7/85)
2:
3: Sun Jul 21 14:56 1985 insan.p
4:
5: 0 TRA4 0
6: 1 program insane(input, output);
7: 2 label
8: 6 GOTO:1 6
9: 3 1;
10: 4 type
11: 5 alfa = packed array[1..10] of char;
12: 6 metaface = (notaface, front, back, top, bottom, left, right);
13: 7 face = front .. right;
14: 8 metapair = (notapair, one2, three4, five6);
15: 9 pair = one2 .. five6;
16: 10 metacolor = (notacolor, red, blue, green, white);
17: 11 color = red .. white;
18: 12 blockno = 1..4;
19: 13 var
20: 14 nosolutions: Boolean;
21: 15 index, halfindex: integer;
22: 16 pointr: integer;
23: 17 datas: array[blockno, face] of alfa;
24: 18 sum: array[blockno, pair, color] of integer;
25: 19 halfsolution: array[blockno, 1..30] of pair;
26: 12 TRA4 12
27:
28: 21 function word(alf: alfa): color;
29: 22 begin
30: 23 if alf = 'red' then
31: 24 word := red else
32: 25 if alf = 'blue' then
33: 26 word := blue else
34: 27 if alf = 'green' then
35: 28 word := green else
36: 29 word := white;
37: patch 12 18
38: 18 BEG:20 0
39: 24 CASE4 12
40: 28 CASE4 1
41: 32 CASE2 22
42: 34 "word"
43: 40 LINO:23
44: 42 RV:5 32 10
45: 48 CONG:10
46: 50 "red"
47: 62 RELG EQ 10
48: 66 IF -2
49: 70 LINO:24
50: 72 LV:5 44
51: 76 CON1:1
52: 78 RANG2:1 4
53: 82 AS2
54: 84 TRA -2
55: patch 66 20
56: 88 LINO:25
57: 90 RV:5 32 10
58: 96 CONG:10
59: 98 "blue"
60: 110 RELG EQ 10
61: 114 IF -2
62: 118 LINO:26
63: 120 LV:5 44
64: 124 CON1:2
65: 126 RANG2:1 4
66: 130 AS2
67: 132 TRA -2
68: patch 114 20
69: 136 LINO:27
70: 138 RV:5 32 10
71: 144 CONG:10
72: 146 "green"
73: 158 RELG EQ 10
74: 162 IF -2
75: 166 LINO:28
76: 168 LV:5 44
77: 172 CON1:3
78: 174 RANG2:1 4
79: 178 AS2
80: 180 TRA -2
81: patch 162 20
82: 184 LINO:29
83: 186 LV:5 44
84: 190 CON1:4
85: 192 RANG2:1 4
86: 196 AS2
87: patch 180 16
88: patch 132 64
89: patch 84 112
90: 198 END
91: patch 18 0
92: 30 end;
93: 200 TRA4 200
94:
95: 32 procedure readin;
96: 33 var
97: 34 hue: alfa;
98: 35 ch: char;
99: 36 cube: blockno;
100: 37 position: face;
101: 206 TRA4 206
102:
103: 39 procedure tone;
104: 40 begin
105: 41 case ch of
106: 42 'r': hue := 'red';
107: 43 'w': hue := 'white';
108: 44 'g': hue := 'green';
109: 45 'b': hue := 'blue';
110: 46 end;
111: patch 206 214
112: 214 BEG:20 0
113: 220 CASE4 0
114: 224 CASE4 1
115: 228 CASE2 40
116: 230 "tone"
117: 236 LINO:41
118: 238 RV1:4 -13
119: 242 CASE1OP:4
120: 244 .=.+8
121: 252 CASE1 114
122: 253 CASE1 119
123: 254 CASE1 103
124: 255 CASE1 98
125: 256 TRA -2
126: patch 242 16
127: 260 LINO:42
128: 262 LV:4 -12
129: 266 CONG:10
130: 268 "red"
131: 280 AS:10
132: 282 TRA -28
133: patch 244 42
134: 286 LINO:43
135: 288 LV:4 -12
136: 292 CONG:10
137: 294 "white"
138: 306 AS:10
139: 308 TRA -54
140: patch 246 68
141: 312 LINO:44
142: 314 LV:4 -12
143: 318 CONG:10
144: 320 "green"
145: 332 AS:10
146: 334 TRA -80
147: patch 248 94
148: 338 LINO:45
149: 340 LV:4 -12
150: 344 CONG:10
151: 346 "blue"
152: 358 AS:10
153: 360 TRA -106
154: patch 256 106
155: 364 END
156: patch 214 0
157: 47 end;
158:
159: 49 begin
160: 50 for cube := 1 to 4 do
161: 51 begin
162: 52 for position := front to right do
163: 53 begin
164: 54 read(ch);
165: 55 tone;
166: 56 datas[cube, position] := hue;
167: 57 end;
168: 58 readln;
169: 59 end;
170: patch 200 366
171: 366 BEG:22 0
172: 372 CASE4 0
173: 376 CASE4 1
174: 380 CASE2 49
175: 382 "readin"
176: 390 LINO:50
177: 392 LV:4 -20
178: 396 CON1:1
179: 398 AS24
180: 400 LV:4 -24
181: 404 CON1:4
182: 406 AS24
183: 408 RV4:4 -20
184: 412 RV4:4 -24
185: 416 REL4 LE
186: 418 IF -2
187: 422 LV:4 -25
188: 426 RV4:4 -24
189: 430 RANG42:1 4
190: 434 AS41
191: 436 LV:4 -25
192: 440 RV4:4 -20
193: 444 RANG42:1 4
194: 448 AS41
195: 450 LV:4 -14
196: 454 RV14:4 -25
197: 458 AS41
198: 460 LINO:52
199: 462 LV:4 -32
200: 466 CON1:1
201: 468 AS24
202: 470 LV:4 -36
203: 474 CON1:6
204: 476 AS24
205: 478 RV4:4 -32
206: 482 RV4:4 -36
207: 486 REL4 LE
208: 488 IF -2
209: 492 LV:4 -37
210: 496 RV4:4 -36
211: 500 RANG42:1 6
212: 504 AS41
213: 506 LV:4 -37
214: 510 RV4:4 -32
215: 514 RANG42:1 6
216: 518 AS41
217: 520 LV:4 -15
218: 524 RV14:4 -37
219: 528 AS41
220: 530 LINO:54
221: 532 UNITINP
222: 534 LV:4 -13
223: 538 READC
224: 540 RSNG2:127
225: 542 AS21
226: 544 LINO:55
227: 546 CALL:2 206
228: 552 LINO:56
229: 554 LV:2 -256
230: 558 RV1:4 -25
231: 562 INX2:60 1 4
232: 568 RV1:4 -37
233: 572 INX2:10 1 6
234: 578 RV:4 -12 10
235: 584 AS:10
236: 586 LINO:52
237: 588 RV4:4 -36
238: 592 LV:4 -37
239: 596 FOR1U:-78
240: patch 488 108
241: 598 LINO:58
242: 600 UNITINP
243: 602 READLN
244: 604 LINO:50
245: 606 RV4:4 -24
246: 610 LV:4 -25
247: 614 FOR1U -168
248: patch 418 198
249: 618 END
250: patch 366 40
251: 60 end;
252: 620 TRA4 620
253:
254: 62 procedure sumcolors;
255: 63 var
256: 64 cube: blockno;
257: 65 side: face;
258: 626 TRA4 626
259: 66 function facepair(aface: face): pair;
260: 67 begin
261: 68 case aface of
262: 69 front, back: facepair := one2;
263: 70 top, bottom: facepair := three4;
264: 71 left, right: facepair := five6
265: 72 end;
266: patch 626 634
267: 634 BEG:24 0
268: 640 CASE4 4
269: 644 CASE4 1
270: 648 CASE2 67
271: 650 "facepair"
272: 660 LINO:68
273: 662 RV1:7 33
274: 666 CASE1OP:6
275: 668 .=.+12
276: 680 CASE1 1
277: 681 CASE1 2
278: 682 CASE1 3
279: 683 CASE1 4
280: 684 CASE1 5
281: 685 CASE1 6
282: 686 TRA -2
283: patch 666 22
284: patch 668 22
285: 690 LINO:69
286: 692 LV:7 36
287: 696 CON1:1
288: 698 RANG2:1 3
289: 702 AS2
290: 704 TRA -20
291: patch 670 40
292: patch 672 40
293: 708 LINO:70
294: 710 LV:7 36
295: 714 CON1:2
296: 716 RANG2:1 3
297: 720 AS2
298: 722 TRA -38
299: patch 674 58
300: patch 676 58
301: 726 LINO:71
302: 728 LV:7 36
303: 732 CON1:3
304: 734 RANG2:1 3
305: 738 AS2
306: 740 TRA -56
307: patch 686 56
308: 744 END
309: patch 634 0
310: 73 end;
311: 746 TRA4 746
312:
313: 75 procedure initializesum;
314: 76 var
315: 77 cube: blockno;
316: 78 side: face;
317: 79 technicolor: color;
318: 80 begin
319: 81 for cube := 1 to 4 do
320: 82 for side := front to right do
321: 83 for technicolor := red to white do
322: 84 sum[cube, facepair(side), technicolor] := 0;
323: patch 746 754
324: 754 BEG:28 0
325: 760 CASE4 0
326: 764 CASE4 1
327: 768 CASE2 80
328: 770 "initializesum"
329: 784 LINO:81
330: 786 LV:6 -8
331: 790 CON1:1
332: 792 AS24
333: 794 LV:6 -12
334: 798 CON1:4
335: 800 AS24
336: 802 RV4:6 -8
337: 806 RV4:6 -12
338: 810 REL4 LE
339: 812 IF -2
340: 816 LV:6 -13
341: 820 RV4:6 -12
342: 824 RANG42:1 4
343: 828 AS41
344: 830 LV:6 -13
345: 834 RV4:6 -8
346: 838 RANG42:1 4
347: 842 AS41
348: 844 LV:6 -1
349: 848 RV14:6 -13
350: 852 AS41
351: 854 LINO:82
352: 856 LV:6 -20
353: 860 CON1:1
354: 862 AS24
355: 864 LV:6 -24
356: 868 CON1:6
357: 870 AS24
358: 872 RV4:6 -20
359: 876 RV4:6 -24
360: 880 REL4 LE
361: 882 IF -2
362: 886 LV:6 -25
363: 890 RV4:6 -24
364: 894 RANG42:1 6
365: 898 AS41
366: 900 LV:6 -25
367: 904 RV4:6 -20
368: 908 RANG42:1 6
369: 912 AS41
370: 914 LV:6 -2
371: 918 RV14:6 -25
372: 922 AS41
373: 924 LINO:83
374: 926 LV:6 -32
375: 930 CON1:1
376: 932 AS24
377: 934 LV:6 -36
378: 938 CON1:4
379: 940 AS24
380: 942 RV4:6 -32
381: 946 RV4:6 -36
382: 950 REL4 LE
383: 952 IF -2
384: 956 LV:6 -37
385: 960 RV4:6 -36
386: 964 RANG42:1 4
387: 968 AS41
388: 970 LV:6 -37
389: 974 RV4:6 -32
390: 978 RANG42:1 4
391: 982 AS41
392: 984 LV:6 -3
393: 988 RV14:6 -37
394: 992 AS41
395: 994 LINO:84
396: 996 LV:2 -448
397: 1000 RV1:6 -13
398: 1004 INX2:48 1 4
399: 1010 PUSH:-4
400: 1012 RV1:6 -25
401: 1016 RANG2:1 6
402: 1020 CALL:2 626
403: 1026 INX2:16 1 3
404: 1032 RV1:6 -37
405: 1036 INX2:4 1 4
406: 1042 CON1
407: 1044 AS24
408: 1046 LINO:83
409: 1048 RV4:6 -36
410: 1052 LV:6 -37
411: 1056 FOR1U:-74
412: patch 952 104
413: 1058 LINO:82
414: 1060 RV4:6 -24
415: 1064 LV:6 -25
416: 1068 FOR1U -158
417: patch 882 188
418: 1072 LINO:81
419: 1074 RV4:6 -12
420: 1078 LV:6 -13
421: 1082 FOR1U -242
422: patch 812 272
423: 1086 END
424: patch 754 40
425: 85 end;
426:
427: 87 begin
428: 88 initializesum;
429: 89 for cube := 1 to 4 do
430: 90 for side := front to right do
431: 91 sum[cube, facepair(side), word(datas[cube,side])] :=
432: 92 sum[cube, facepair(side), word(datas[cube,side])] + 1;
433: patch 620 1090
434: 1090 BEG:24 0
435: 1096 CASE4 0
436: 1100 CASE4 1
437: 1104 CASE2 87
438: 1106 "sumcolors"
439: 1116 LINO:88
440: 1118 CALL:2 746
441: 1124 LINO:89
442: 1126 LV:4 -8
443: 1130 CON1:1
444: 1132 AS24
445: 1134 LV:4 -12
446: 1138 CON1:4
447: 1140 AS24
448: 1142 RV4:4 -8
449: 1146 RV4:4 -12
450: 1150 REL4 LE
451: 1152 IF -2
452: 1156 LV:4 -13
453: 1160 RV4:4 -12
454: 1164 RANG42:1 4
455: 1168 AS41
456: 1170 LV:4 -13
457: 1174 RV4:4 -8
458: 1178 RANG42:1 4
459: 1182 AS41
460: 1184 LV:4 -1
461: 1188 RV14:4 -13
462: 1192 AS41
463: 1194 LINO:90
464: 1196 LV:4 -20
465: 1200 CON1:1
466: 1202 AS24
467: 1204 LV:4 -24
468: 1208 CON1:6
469: 1210 AS24
470: 1212 RV4:4 -20
471: 1216 RV4:4 -24
472: 1220 REL4 LE
473: 1222 IF -2
474: 1226 LV:4 -25
475: 1230 RV4:4 -24
476: 1234 RANG42:1 6
477: 1238 AS41
478: 1240 LV:4 -25
479: 1244 RV4:4 -20
480: 1248 RANG42:1 6
481: 1252 AS41
482: 1254 LV:4 -2
483: 1258 RV14:4 -25
484: 1262 AS41
485: 1264 LINO:91
486: 1266 LV:2 -448
487: 1270 RV1:4 -13
488: 1274 INX2:48 1 4
489: 1280 PUSH:-4
490: 1282 RV1:4 -25
491: 1286 RANG2:1 6
492: 1290 CALL:2 626
493: 1296 INX2:16 1 3
494: 1302 PUSH:-4
495: 1304 LV:2 -256
496: 1308 RV1:4 -13
497: 1312 INX2:60 1 4
498: 1318 RV1:4 -25
499: 1322 INX2:10 1 6
500: 1328 IND:10
501: 1330 CALL:1 12
502: 1336 INX2:4 1 4
503: 1342 LV:2 -448
504: 1346 RV1:4 -13
505: 1350 INX2:48 1 4
506: 1356 PUSH:-4
507: 1358 RV1:4 -25
508: 1362 RANG2:1 6
509: 1366 CALL:2 626
510: 1372 INX2:16 1 3
511: 1378 PUSH:-4
512: 1380 LV:2 -256
513: 1384 RV1:4 -13
514: 1388 INX2:60 1 4
515: 1394 RV1:4 -25
516: 1398 INX2:10 1 6
517: 1404 IND:10
518: 1406 CALL:1 12
519: 1412 INX2:4 1 4
520: 1418 IND4
521: 1420 CON1:1
522: 1422 ADD24
523: 1424 AS4
524: 1426 LINO:90
525: 1428 RV4:4 -24
526: 1432 LV:4 -25
527: 1436 FOR1U -186
528: patch 1222 216
529: 1440 LINO:89
530: 1442 RV4:4 -12
531: 1446 LV:4 -13
532: 1450 FOR1U -270
533: patch 1152 300
534: 1454 END
535: patch 1090 28
536: 93 end;
537: 1456 TRA4 1456
538:
539: 95 procedure find2222;
540: 96 var
541: 97 subtotals: array[red..white] of integer;
542: 98 pair1, pair2, pair3, pair4: pair;
543: 1462 TRA4 1462
544:
545: 100 function two222(pair1, pair2, pair3, pair4: pair): Boolean;
546: 101 var
547: 102 hue: color;
548: 103 begin
549: 104 for hue := red to white do
550: 105 subtotals[hue] :=
551: 106 sum[1, pair1, hue]+
552: 107 sum[2, pair2, hue]+
553: 108 sum[3, pair3, hue]+
554: 109 sum[4, pair4, hue];
555: 110 if (subtotals[red]=2) and
556: 111 (subtotals[blue]=2) and
557: 112 (subtotals[green]=2) and
558: 113 (subtotals[white]=2) then
559: 114 two222 := true else
560: 115 two222 := false;
561: patch 1462 1470
562: 1470 BEG:22 0
563: 1476 CASE4 16
564: 1480 CASE4 1
565: 1484 CASE2 103
566: 1486 "two222"
567: 1494 LINO:104
568: 1496 LV:6 -8
569: 1500 CON1:1
570: 1502 AS24
571: 1504 LV:6 -12
572: 1508 CON1:4
573: 1510 AS24
574: 1512 RV4:6 -8
575: 1516 RV4:6 -12
576: 1520 REL4 LE
577: 1522 IF -2
578: 1526 LV:6 -13
579: 1530 RV4:6 -12
580: 1534 RANG42:1 4
581: 1538 AS41
582: 1540 LV:6 -13
583: 1544 RV4:6 -8
584: 1548 RANG42:1 4
585: 1552 AS41
586: 1554 LV:6 -1
587: 1558 RV14:6 -13
588: 1562 AS41
589: 1564 LINO:105
590: 1566 LV:4 -16
591: 1570 RV1:6 -13
592: 1574 INX2:4 1 4
593: 1580 LV:2 -448
594: 1584 RV1:7 45
595: 1588 INX2:16 1 3
596: 1594 RV1:6 -13
597: 1598 INX2:4 1 4
598: 1604 IND4
599: 1606 LV:2 -448
600: 1610 CON1:48
601: 1612 ADD24
602: 1614 RV1:7 41
603: 1618 INX2:16 1 3
604: 1624 RV1:6 -13
605: 1628 INX2:4 1 4
606: 1634 IND4
607: 1636 ADD4
608: 1638 LV:2 -448
609: 1642 CON1:96
610: 1644 ADD24
611: 1646 RV1:7 37
612: 1650 INX2:16 1 3
613: 1656 RV1:6 -13
614: 1660 INX2:4 1 4
615: 1666 IND4
616: 1668 ADD4
617: 1670 LV:2 -448
618: 1674 CON2 144
619: 1678 ADD24
620: 1680 RV1:7 33
621: 1684 INX2:16 1 3
622: 1690 RV1:6 -13
623: 1694 INX2:4 1 4
624: 1700 IND4
625: 1702 ADD4
626: 1704 AS4
627: 1706 LINO:104
628: 1708 RV4:6 -12
629: 1712 LV:6 -13
630: 1716 FOR1U -166
631: patch 1522 196
632: 1720 LINO:110
633: 1722 LV:4 -16
634: 1726 IND4
635: 1728 CON1:2
636: 1730 REL24 EQ
637: 1732 LV:4 -16
638: 1736 CON1:4
639: 1738 ADD24
640: 1740 IND4
641: 1742 CON1:2
642: 1744 REL24 EQ
643: 1746 AND
644: 1748 LV:4 -16
645: 1752 CON1:8
646: 1754 ADD24
647: 1756 IND4
648: 1758 CON1:2
649: 1760 REL24 EQ
650: 1762 AND
651: 1764 LV:4 -16
652: 1768 CON1:12
653: 1770 ADD24
654: 1772 IND4
655: 1774 CON1:2
656: 1776 REL24 EQ
657: 1778 AND
658: 1780 IF -2
659: 1784 LINO:114
660: 1786 LV:7 48
661: 1790 CON1:1
662: 1792 RSNG2:1
663: 1794 AS2
664: 1796 TRA -2
665: patch 1780 18
666: 1800 LINO:115
667: 1802 LV:7 48
668: 1806 CON1
669: 1808 RSNG2:1
670: 1810 AS2
671: patch 1796 14
672: 1812 END
673: patch 1470 16
674: 116 end;
675: 1814 TRA4 1814
676:
677: 118 procedure listsolution;
678: 119 begin
679: 120 halfsolution[1, halfindex] := pair1;
680: 121 halfsolution[2, halfindex] := pair2;
681: 122 halfsolution[3, halfindex] := pair3;
682: 123 halfsolution[4, halfindex] := pair4;
683: 124 halfindex := halfindex + 1;
684: patch 1814 1822
685: 1822 BEG:28 0
686: 1828 CASE4 0
687: 1832 CASE4 1
688: 1836 CASE2 119
689: 1838 "listsolution"
690: 1852 LINO:120
691: 1854 LV:2 -568
692: 1858 RV4:2 -12
693: 1862 INX4:1 1 30
694: 1868 RV1:4 -17
695: 1872 RANG2:1 3
696: 1876 AS21
697: 1878 LINO:121
698: 1880 LV:2 -568
699: 1884 CON1:30
700: 1886 ADD24
701: 1888 RV4:2 -12
702: 1892 INX4:1 1 30
703: 1898 RV1:4 -18
704: 1902 RANG2:1 3
705: 1906 AS21
706: 1908 LINO:122
707: 1910 LV:2 -568
708: 1914 CON1:60
709: 1916 ADD24
710: 1918 RV4:2 -12
711: 1922 INX4:1 1 30
712: 1928 RV1:4 -19
713: 1932 RANG2:1 3
714: 1936 AS21
715: 1938 LINO:123
716: 1940 LV:2 -568
717: 1944 CON1:90
718: 1946 ADD24
719: 1948 RV4:2 -12
720: 1952 INX4:1 1 30
721: 1958 RV1:4 -20
722: 1962 RANG2:1 3
723: 1966 AS21
724: 1968 LINO:124
725: 1970 LV:2 -12
726: 1974 RV4:2 -12
727: 1978 CON1:1
728: 1980 ADD24
729: 1982 AS4
730: 1984 END
731: patch 1822 0
732: 125 end;
733:
734: 127 begin
735: 128 halfindex := 1;
736: 129 for pair1 := one2 to five6 do
737: 130 for pair2 := one2 to five6 do
738: 131 for pair3 := one2 to five6 do
739: 132 for pair4 := one2 to five6 do
740: 133 if two222(pair1, pair2, pair3, pair4) then
741: 134 listsolution;
742: 135 if halfindex <= 2 then
743: 136 begin
744: 137 nosolutions := true;
745: 138 goto 1;
746: 139 end;
747: patch 1456 1986
748: 1986 BEG:24 0
749: 1992 CASE4 0
750: 1996 CASE4 1
751: 2000 CASE2 127
752: 2002 "find2222"
753: 2012 LINO 128
754: 2016 LV:2 -12
755: 2020 CON1:1
756: 2022 AS24
757: 2024 LINO 129
758: 2028 LV:4 -24
759: 2032 CON1:1
760: 2034 AS24
761: 2036 LV:4 -28
762: 2040 CON1:3
763: 2042 AS24
764: 2044 RV4:4 -24
765: 2048 RV4:4 -28
766: 2052 REL4 LE
767: 2054 IF -2
768: 2058 LV:4 -29
769: 2062 RV4:4 -28
770: 2066 RANG42:1 3
771: 2070 AS41
772: 2072 LV:4 -29
773: 2076 RV4:4 -24
774: 2080 RANG42:1 3
775: 2084 AS41
776: 2086 LV:4 -17
777: 2090 RV14:4 -29
778: 2094 AS41
779: 2096 LINO 130
780: 2100 LV:4 -36
781: 2104 CON1:1
782: 2106 AS24
783: 2108 LV:4 -40
784: 2112 CON1:3
785: 2114 AS24
786: 2116 RV4:4 -36
787: 2120 RV4:4 -40
788: 2124 REL4 LE
789: 2126 IF -2
790: 2130 LV:4 -41
791: 2134 RV4:4 -40
792: 2138 RANG42:1 3
793: 2142 AS41
794: 2144 LV:4 -41
795: 2148 RV4:4 -36
796: 2152 RANG42:1 3
797: 2156 AS41
798: 2158 LV:4 -18
799: 2162 RV14:4 -41
800: 2166 AS41
801: 2168 LINO 131
802: 2172 LV:4 -48
803: 2176 CON1:1
804: 2178 AS24
805: 2180 LV:4 -52
806: 2184 CON1:3
807: 2186 AS24
808: 2188 RV4:4 -48
809: 2192 RV4:4 -52
810: 2196 REL4 LE
811: 2198 IF -2
812: 2202 LV:4 -53
813: 2206 RV4:4 -52
814: 2210 RANG42:1 3
815: 2214 AS41
816: 2216 LV:4 -53
817: 2220 RV4:4 -48
818: 2224 RANG42:1 3
819: 2228 AS41
820: 2230 LV:4 -19
821: 2234 RV14:4 -53
822: 2238 AS41
823: 2240 LINO 132
824: 2244 LV:4 -60
825: 2248 CON1:1
826: 2250 AS24
827: 2252 LV:4 -64
828: 2256 CON1:3
829: 2258 AS24
830: 2260 RV4:4 -60
831: 2264 RV4:4 -64
832: 2268 REL4 LE
833: 2270 IF -2
834: 2274 LV:4 -65
835: 2278 RV4:4 -64
836: 2282 RANG42:1 3
837: 2286 AS41
838: 2288 LV:4 -65
839: 2292 RV4:4 -60
840: 2296 RANG42:1 3
841: 2300 AS41
842: 2302 LV:4 -20
843: 2306 RV14:4 -65
844: 2310 AS41
845: 2312 LINO 133
846: 2316 PUSH:-4
847: 2318 RV1:4 -29
848: 2322 RANG2:1 3
849: 2326 RV1:4 -41
850: 2330 RANG2:1 3
851: 2334 RV1:4 -53
852: 2338 RANG2:1 3
853: 2342 RV1:4 -65
854: 2346 RANG2:1 3
855: 2350 CALL:2 1462
856: 2356 IF -2
857: 2360 LINO 134
858: 2364 CALL:2 1814
859: patch 2356 12
860: 2370 LINO 132
861: 2374 RV4:4 -64
862: 2378 LV:4 -65
863: 2382 FOR1U:-82
864: patch 2270 112
865: 2384 LINO 131
866: 2388 RV4:4 -52
867: 2392 LV:4 -53
868: 2396 FOR1U -170
869: patch 2198 200
870: 2400 LINO 130
871: 2404 RV4:4 -40
872: 2408 LV:4 -41
873: 2412 FOR1U -258
874: patch 2126 288
875: 2416 LINO 129
876: 2420 RV4:4 -28
877: 2424 LV:4 -29
878: 2428 FOR1U -346
879: patch 2054 376
880: 2432 LINO 135
881: 2436 RV4:2 -12
882: 2440 CON1:2
883: 2442 REL24 LE
884: 2444 IF -2
885: 2448 LINO 137
886: 2452 LV:2 -1
887: 2456 CON1:1
888: 2458 RSNG2:1
889: 2460 AS21
890: 2462 LINO 138
891: 2466 TRA4 6
892: patch 2444 26
893: 2472 END
894: patch 1986 68
895: 140 end;
896: 2474 TRA4 2474
897:
898: 142 procedure simultaneous;
899: 143 var
900: 144 done: Boolean;
901: 145 begin
902: 146 nosolutions := false;
903: 147 pointr := 0;
904: 148 done := false;
905: 149 repeat
906: 150 pointr := pointr + 1;
907: 151 repeat
908: 152 index := succ(pointr);
909: 153 if (halfsolution[1, pointr]<>halfsolution[1,index]) and
910: 154 (halfsolution[2, pointr]<>halfsolution[2,index]) and
911: 155 (halfsolution[3, pointr]<>halfsolution[3,index]) and
912: 156 (halfsolution[4, pointr]<>halfsolution[4,index]) then
913: 157 done := true else
914: 158 index := index + 1;
915: 159 until done or (index = pred(halfindex));
916: 160 until done or (pointr = halfindex);
917: 161 if pointr = halfindex then
918: 162 begin
919: 163 nosolutions := true;
920: 164 goto 1;
921: 165 end;
922: patch 2474 2482
923: 2482 BEG:28 0
924: 2488 CASE4 0
925: 2492 CASE4 1
926: 2496 CASE2 145
927: 2498 "simultaneous"
928: 2512 LINO 146
929: 2516 LV:2 -1
930: 2520 CON1
931: 2522 RSNG2:1
932: 2524 AS21
933: 2526 LINO 147
934: 2530 LV:2 -16
935: 2534 CON1
936: 2536 AS24
937: 2538 LINO 148
938: 2542 LV:4 -1
939: 2546 CON1
940: 2548 RSNG2:1
941: 2550 AS21
942: 2552 LINO 150
943: 2556 LV:2 -16
944: 2560 RV4:2 -16
945: 2564 CON1:1
946: 2566 ADD24
947: 2568 AS4
948: 2570 LINO 152
949: 2574 LV:2 -8
950: 2578 RV4:2 -16
951: 2582 SUCC4 -2147483648 2147483647
952: 2592 AS4
953: 2594 LINO 153
954: 2598 LV:2 -568
955: 2602 RV4:2 -16
956: 2606 INX4:1 1 30
957: 2612 IND1
958: 2614 LV:2 -568
959: 2618 RV4:2 -8
960: 2622 INX4:1 1 30
961: 2628 IND1
962: 2630 REL2 NE
963: 2632 LV:2 -568
964: 2636 CON1:30
965: 2638 ADD24
966: 2640 RV4:2 -16
967: 2644 INX4:1 1 30
968: 2650 IND1
969: 2652 LV:2 -568
970: 2656 CON1:30
971: 2658 ADD24
972: 2660 RV4:2 -8
973: 2664 INX4:1 1 30
974: 2670 IND1
975: 2672 REL2 NE
976: 2674 AND
977: 2676 LV:2 -568
978: 2680 CON1:60
979: 2682 ADD24
980: 2684 RV4:2 -16
981: 2688 INX4:1 1 30
982: 2694 IND1
983: 2696 LV:2 -568
984: 2700 CON1:60
985: 2702 ADD24
986: 2704 RV4:2 -8
987: 2708 INX4:1 1 30
988: 2714 IND1
989: 2716 REL2 NE
990: 2718 AND
991: 2720 LV:2 -568
992: 2724 CON1:90
993: 2726 ADD24
994: 2728 RV4:2 -16
995: 2732 INX4:1 1 30
996: 2738 IND1
997: 2740 LV:2 -568
998: 2744 CON1:90
999: 2746 ADD24
1000: 2748 RV4:2 -8
1001: 2752 INX4:1 1 30
1002: 2758 IND1
1003: 2760 REL2 NE
1004: 2762 AND
1005: 2764 IF -2
1006: 2768 LINO 157
1007: 2772 LV:4 -1
1008: 2776 CON1:1
1009: 2778 RSNG2:1
1010: 2780 AS21
1011: 2782 TRA -2
1012: patch 2764 20
1013: 2786 LINO 158
1014: 2790 LV:2 -8
1015: 2794 RV4:2 -8
1016: 2798 CON1:1
1017: 2800 ADD24
1018: 2802 AS4
1019: patch 2782 20
1020: 2804 RV1:4 -1
1021: 2808 RV4:2 -8
1022: 2812 RV4:2 -12
1023: 2816 PRED4 -2147483648 2147483647
1024: 2826 REL4 EQ
1025: 2828 OR
1026: 2830 IF -262
1027: 2834 RV1:4 -1
1028: 2838 RV4:2 -16
1029: 2842 RV4:2 -12
1030: 2846 REL4 EQ
1031: 2848 OR
1032: 2850 IF -300
1033: 2854 LINO 161
1034: 2858 RV4:2 -16
1035: 2862 RV4:2 -12
1036: 2866 REL4 EQ
1037: 2868 IF -2
1038: 2872 LINO 163
1039: 2876 LV:2 -1
1040: 2880 CON1:1
1041: 2882 RSNG2:1
1042: 2884 AS21
1043: 2886 LINO 164
1044: 2890 TRA4 6
1045: patch 2868 26
1046: 2896 END
1047: patch 2482 4
1048: 166 end;
1049: 2898 TRA4 2898
1050:
1051: 168 procedure rearrange;
1052: 169 var
1053: 170 box: blockno;
1054: 171 a, b: pair;
1055: 2904 TRA4 2904
1056:
1057: 173 procedure put(a, b: pair);
1058: 174 var
1059: 175 old1, new1, old2, new2: face;
1060: 176 save1, save2: alfa;
1061: 2910 TRA4 2910
1062:
1063: 178 procedure oldpair(c: pair);
1064: 179 begin
1065: 180 case c of
1066: 181 one2:
1067: 182 begin
1068: 183 old1 := front;
1069: 184 old2 := back;
1070: 185 end;
1071: 186 three4:
1072: 187 begin
1073: 188 old1 := top;
1074: 189 old2 := bottom;
1075: 190 end;
1076: 191 five6:
1077: 192 begin
1078: 193 old1 := left;
1079: 194 old2 := right;
1080: 195 end
1081: 196 end;
1082: patch 2910 2918
1083: 2918 BEG:22 0
1084: 2924 CASE4 4
1085: 2928 CASE4 1
1086: 2932 CASE2 179
1087: 2934 "oldpair"
1088: 2942 LINO 180
1089: 2946 RV1:9 33
1090: 2950 CASE1OP:3
1091: 2952 .=.+6
1092: 2958 CASE1 1
1093: 2959 CASE1 2
1094: 2960 CASE1 3
1095: 2962 TRA -2
1096: patch 2950 14
1097: 2966 LINO 183
1098: 2970 LV:6 -1
1099: 2974 CON1:1
1100: 2976 RANG2:1 6
1101: 2980 AS21
1102: 2982 LINO 184
1103: 2986 LV:6 -3
1104: 2990 CON1:2
1105: 2992 RANG2:1 6
1106: 2996 AS21
1107: 2998 TRA -38
1108: patch 2952 50
1109: 3002 LINO 188
1110: 3006 LV:6 -1
1111: 3010 CON1:3
1112: 3012 RANG2:1 6
1113: 3016 AS21
1114: 3018 LINO 189
1115: 3022 LV:6 -3
1116: 3026 CON1:4
1117: 3028 RANG2:1 6
1118: 3032 AS21
1119: 3034 TRA -74
1120: patch 2954 86
1121: 3038 LINO 193
1122: 3042 LV:6 -1
1123: 3046 CON1:5
1124: 3048 RANG2:1 6
1125: 3052 AS21
1126: 3054 LINO 194
1127: 3058 LV:6 -3
1128: 3062 CON1:6
1129: 3064 RANG2:1 6
1130: 3068 AS21
1131: 3070 TRA -110
1132: patch 2962 110
1133: 3074 END
1134: patch 2918 0
1135: 197 end;
1136: 3076 TRA4 3076
1137: 198 procedure newpair(d: pair);
1138: 199 begin
1139: 200 oldpair(b);
1140: 201 new1 := old1;
1141: 202 new2 := old2;
1142: patch 3076 3082
1143: 3082 BEG:22 0
1144: 3088 CASE4 4
1145: 3092 CASE4 1
1146: 3096 CASE2 199
1147: 3098 "newpair"
1148: 3106 LINO 200
1149: 3110 RV1:7 33
1150: 3114 RANG2:1 3
1151: 3118 CALL:3 2910
1152: 3124 LINO 201
1153: 3128 LV:6 -2
1154: 3132 RV1:6 -1
1155: 3136 RANG2:1 6
1156: 3140 AS21
1157: 3142 LINO 202
1158: 3146 LV:6 -4
1159: 3150 RV1:6 -3
1160: 3154 RANG2:1 6
1161: 3158 AS21
1162: 203 end;
1163: In procedure newpair:
1164: w - variable d is never used
1165: 3160 END
1166: patch 3082 0
1167:
1168: 205 begin
1169: 206 newpair(b);
1170: 207 oldpair(a);
1171: 208 save1 := datas[box, new1];
1172: 209 datas[box, new1] := datas[box, old1];
1173: 210 datas[box, old1] := save1;
1174: 211 save2 := datas[box, new2];
1175: 212 datas[box, new2] := datas[box, old2];
1176: 213 datas[box, old2] := save2;
1177: patch 2904 3162
1178: 3162 BEG:18 0
1179: 3168 CASE4 8
1180: 3172 CASE4 1
1181: 3176 CASE2 205
1182: 3178 "put"
1183: 3182 LINO 206
1184: 3186 RV1:7 33
1185: 3190 RANG2:1 3
1186: 3194 CALL:3 3076
1187: 3200 LINO 207
1188: 3204 RV1:7 37
1189: 3208 RANG2:1 3
1190: 3212 CALL:3 2910
1191: 3218 LINO 208
1192: 3222 LV:6 -16
1193: 3226 LV:2 -256
1194: 3230 RV1:4 -1
1195: 3234 INX2:60 1 4
1196: 3240 RV1:6 -2
1197: 3244 INX2:10 1 6
1198: 3250 IND:10
1199: 3252 AS:10
1200: 3254 LINO 209
1201: 3258 LV:2 -256
1202: 3262 RV1:4 -1
1203: 3266 INX2:60 1 4
1204: 3272 RV1:6 -2
1205: 3276 INX2:10 1 6
1206: 3282 LV:2 -256
1207: 3286 RV1:4 -1
1208: 3290 INX2:60 1 4
1209: 3296 RV1:6 -1
1210: 3300 INX2:10 1 6
1211: 3306 IND:10
1212: 3308 AS:10
1213: 3310 LINO 210
1214: 3314 LV:2 -256
1215: 3318 RV1:4 -1
1216: 3322 INX2:60 1 4
1217: 3328 RV1:6 -1
1218: 3332 INX2:10 1 6
1219: 3338 RV:6 -16 10
1220: 3344 AS:10
1221: 3346 LINO 211
1222: 3350 LV:6 -28
1223: 3354 LV:2 -256
1224: 3358 RV1:4 -1
1225: 3362 INX2:60 1 4
1226: 3368 RV1:6 -4
1227: 3372 INX2:10 1 6
1228: 3378 IND:10
1229: 3380 AS:10
1230: 3382 LINO 212
1231: 3386 LV:2 -256
1232: 3390 RV1:4 -1
1233: 3394 INX2:60 1 4
1234: 3400 RV1:6 -4
1235: 3404 INX2:10 1 6
1236: 3410 LV:2 -256
1237: 3414 RV1:4 -1
1238: 3418 INX2:60 1 4
1239: 3424 RV1:6 -3
1240: 3428 INX2:10 1 6
1241: 3434 IND:10
1242: 3436 AS:10
1243: 3438 LINO 213
1244: 3442 LV:2 -256
1245: 3446 RV1:4 -1
1246: 3450 INX2:60 1 4
1247: 3456 RV1:6 -3
1248: 3460 INX2:10 1 6
1249: 3466 RV:6 -28 10
1250: 3472 AS:10
1251: 3474 END
1252: patch 3162 28
1253: 214 end;
1254:
1255: 216 begin
1256: 217 for box := 1 to 4 do
1257: 218 begin
1258: 219 a := halfsolution[box, pointr];
1259: 220 b := halfsolution[box, index];
1260: 221 if (a=one2) and (b=five6) then
1261: 222 put(five6, three4) else
1262: 223 begin
1263: 224 if a = three4 then
1264: 225 begin
1265: 226 if b = one2 then
1266: 227 begin
1267: 228 put(one2, five6);
1268: 229 put(three4, one2);
1269: 230 put(five6, three4);
1270: 231 end else
1271: 232 begin
1272: 233 put(three4, one2);
1273: 234 put(five6, three4);
1274: 235 end
1275: 236 end else
1276: 237 if b = one2 then
1277: 238 begin
1278: 239 put(one2, three4);
1279: 240 put(five6, one2);
1280: 241 end else
1281: 242 put(five6, one2);
1282: 243 end;
1283: 244 end;
1284: patch 2898 3478
1285: 3478 BEG:24 0
1286: 3484 CASE4 0
1287: 3488 CASE4 1
1288: 3492 CASE2 216
1289: 3494 "rearrange"
1290: 3504 LINO 217
1291: 3508 LV:4 -8
1292: 3512 CON1:1
1293: 3514 AS24
1294: 3516 LV:4 -12
1295: 3520 CON1:4
1296: 3522 AS24
1297: 3524 RV4:4 -8
1298: 3528 RV4:4 -12
1299: 3532 REL4 LE
1300: 3534 IF -2
1301: 3538 LV:4 -13
1302: 3542 RV4:4 -12
1303: 3546 RANG42:1 4
1304: 3550 AS41
1305: 3552 LV:4 -13
1306: 3556 RV4:4 -8
1307: 3560 RANG42:1 4
1308: 3564 AS41
1309: 3566 LV:4 -1
1310: 3570 RV14:4 -13
1311: 3574 AS41
1312: 3576 LINO 219
1313: 3580 LV:4 -2
1314: 3584 LV:2 -568
1315: 3588 RV1:4 -13
1316: 3592 INX2:30 1 4
1317: 3598 RV4:2 -16
1318: 3602 INX4:1 1 30
1319: 3608 IND1
1320: 3610 RANG2:1 3
1321: 3614 AS21
1322: 3616 LINO 220
1323: 3620 LV:4 -3
1324: 3624 LV:2 -568
1325: 3628 RV1:4 -13
1326: 3632 INX2:30 1 4
1327: 3638 RV4:2 -8
1328: 3642 INX4:1 1 30
1329: 3648 IND1
1330: 3650 RANG2:1 3
1331: 3654 AS21
1332: 3656 LINO 221
1333: 3660 RV1:4 -2
1334: 3664 CON1:1
1335: 3666 REL2 EQ
1336: 3668 RV1:4 -3
1337: 3672 CON1:3
1338: 3674 REL2 EQ
1339: 3676 AND
1340: 3678 IF -2
1341: 3682 LINO 222
1342: 3686 CON1:3
1343: 3688 RANG2:1 3
1344: 3692 CON1:2
1345: 3694 RANG2:1 3
1346: 3698 CALL:2 2904
1347: 3704 TRA -2
1348: patch 3678 28
1349: 3708 LINO 224
1350: 3712 RV1:4 -2
1351: 3716 CON1:2
1352: 3718 REL2 EQ
1353: 3720 IF -2
1354: 3724 LINO 226
1355: 3728 RV1:4 -3
1356: 3732 CON1:1
1357: 3734 REL2 EQ
1358: 3736 IF -2
1359: 3740 LINO 228
1360: 3744 CON1:1
1361: 3746 RANG2:1 3
1362: 3750 CON1:3
1363: 3752 RANG2:1 3
1364: 3756 CALL:2 2904
1365: 3762 LINO 229
1366: 3766 CON1:2
1367: 3768 RANG2:1 3
1368: 3772 CON1:1
1369: 3774 RANG2:1 3
1370: 3778 CALL:2 2904
1371: 3784 LINO 230
1372: 3788 CON1:3
1373: 3790 RANG2:1 3
1374: 3794 CON1:2
1375: 3796 RANG2:1 3
1376: 3800 CALL:2 2904
1377: 3806 TRA -2
1378: patch 3736 72
1379: 3810 LINO 233
1380: 3814 CON1:2
1381: 3816 RANG2:1 3
1382: 3820 CON1:1
1383: 3822 RANG2:1 3
1384: 3826 CALL:2 2904
1385: 3832 LINO 234
1386: 3836 CON1:3
1387: 3838 RANG2:1 3
1388: 3842 CON1:2
1389: 3844 RANG2:1 3
1390: 3848 CALL:2 2904
1391: patch 3806 46
1392: 3854 TRA -2
1393: patch 3720 136
1394: 3858 LINO 237
1395: 3862 RV1:4 -3
1396: 3866 CON1:1
1397: 3868 REL2 EQ
1398: 3870 IF -2
1399: 3874 LINO 239
1400: 3878 CON1:1
1401: 3880 RANG2:1 3
1402: 3884 CON1:2
1403: 3886 RANG2:1 3
1404: 3890 CALL:2 2904
1405: 3896 LINO 240
1406: 3900 CON1:3
1407: 3902 RANG2:1 3
1408: 3906 CON1:1
1409: 3908 RANG2:1 3
1410: 3912 CALL:2 2904
1411: 3918 TRA -2
1412: patch 3870 50
1413: 3922 LINO 242
1414: 3926 CON1:3
1415: 3928 RANG2:1 3
1416: 3932 CON1:1
1417: 3934 RANG2:1 3
1418: 3938 CALL:2 2904
1419: patch 3918 24
1420: patch 3854 88
1421: patch 3704 238
1422: 3944 LINO 217
1423: 3948 RV4:4 -12
1424: 3952 LV:4 -13
1425: 3956 FOR1U -394
1426: patch 3534 424
1427: 3960 END
1428: patch 3478 16
1429: 245 end;
1430: 3962 TRA4 3962
1431:
1432: 247 procedure correct;
1433: 248 var
1434: 249 list: array[1..8] of integer;
1435: 250 done: Boolean;
1436: 251 side: face;
1437: 252 counter: integer;
1438: 3968 TRA4 3968
1439:
1440: 254 procedure check;
1441: 255 var
1442: 256 delux: array[red..white] of integer;
1443: 257 kolor: color;
1444: 258 counter: integer;
1445: 259 begin
1446: 260 done := true;
1447: 261 for kolor := red to white do
1448: 262 for counter := 1 to 4 do
1449: 263 delux[kolor] := 0;
1450: 264 for counter := 1 to 4 do
1451: 265 begin
1452: 266 delux[word(datas[counter,side])] :=
1453: 267 delux[word(datas[counter,side])] + 1;
1454: 268 if delux[word(datas[counter,side])] >= 2 then
1455: 269 done := false;
1456: 270 end;
1457: patch 3968 3974
1458: 3974 BEG:20 0
1459: 3980 CASE4 0
1460: 3984 CASE4 1
1461: 3988 CASE2 259
1462: 3990 "check"
1463: 3996 LINO 260
1464: 4000 LV:4 -33
1465: 4004 CON1:1
1466: 4006 RSNG2:1
1467: 4008 AS21
1468: 4010 LINO 261
1469: 4014 LV:6 -28
1470: 4018 CON1:1
1471: 4020 AS24
1472: 4022 LV:6 -32
1473: 4026 CON1:4
1474: 4028 AS24
1475: 4030 RV4:6 -28
1476: 4034 RV4:6 -32
1477: 4038 REL4 LE
1478: 4040 IF -2
1479: 4044 LV:6 -33
1480: 4048 RV4:6 -32
1481: 4052 RANG42:1 4
1482: 4056 AS41
1483: 4058 LV:6 -33
1484: 4062 RV4:6 -28
1485: 4066 RANG42:1 4
1486: 4070 AS41
1487: 4072 LV:6 -17
1488: 4076 RV14:6 -33
1489: 4080 AS41
1490: 4082 LINO 262
1491: 4086 LV:6 -40
1492: 4090 CON1:1
1493: 4092 AS24
1494: 4094 LV:6 -44
1495: 4098 CON1:4
1496: 4100 AS24
1497: 4102 RV4:6 -40
1498: 4106 RV4:6 -44
1499: 4110 REL4 LE
1500: 4112 IF -2
1501: 4116 LV:6 -48
1502: 4120 RV4:6 -44
1503: 4124 AS4
1504: 4126 LV:6 -48
1505: 4130 RV4:6 -40
1506: 4134 AS4
1507: 4136 LV:6 -24
1508: 4140 RV4:6 -48
1509: 4144 AS4
1510: 4146 LINO 263
1511: 4150 LV:6 -16
1512: 4154 RV1:6 -33
1513: 4158 INX2:4 1 4
1514: 4164 CON1
1515: 4166 AS24
1516: 4168 LINO 262
1517: 4172 RV4:6 -44
1518: 4176 LV:6 -48
1519: 4180 FOR4U:-46
1520: patch 4112 68
1521: 4182 LINO 261
1522: 4186 RV4:6 -32
1523: 4190 LV:6 -33
1524: 4194 FOR1U:-124
1525: patch 4040 154
1526: 4196 LINO 264
1527: 4200 LV:6 -52
1528: 4204 CON1:1
1529: 4206 AS24
1530: 4208 LV:6 -56
1531: 4212 CON1:4
1532: 4214 AS24
1533: 4216 RV4:6 -52
1534: 4220 RV4:6 -56
1535: 4224 REL4 LE
1536: 4226 IF -2
1537: 4230 LV:6 -60
1538: 4234 RV4:6 -56
1539: 4238 AS4
1540: 4240 LV:6 -60
1541: 4244 RV4:6 -52
1542: 4248 AS4
1543: 4250 LV:6 -24
1544: 4254 RV4:6 -60
1545: 4258 AS4
1546: 4260 LINO 266
1547: 4264 LV:6 -16
1548: 4268 PUSH:-4
1549: 4270 LV:2 -256
1550: 4274 RV4:6 -60
1551: 4278 INX4:60 1 4
1552: 4284 RV1:4 -34
1553: 4288 INX2:10 1 6
1554: 4294 IND:10
1555: 4296 CALL:1 12
1556: 4302 INX2:4 1 4
1557: 4308 LV:6 -16
1558: 4312 PUSH:-4
1559: 4314 LV:2 -256
1560: 4318 RV4:6 -60
1561: 4322 INX4:60 1 4
1562: 4328 RV1:4 -34
1563: 4332 INX2:10 1 6
1564: 4338 IND:10
1565: 4340 CALL:1 12
1566: 4346 INX2:4 1 4
1567: 4352 IND4
1568: 4354 CON1:1
1569: 4356 ADD24
1570: 4358 AS4
1571: 4360 LINO 268
1572: 4364 LV:6 -16
1573: 4368 PUSH:-4
1574: 4370 LV:2 -256
1575: 4374 RV4:6 -60
1576: 4378 INX4:60 1 4
1577: 4384 RV1:4 -34
1578: 4388 INX2:10 1 6
1579: 4394 IND:10
1580: 4396 CALL:1 12
1581: 4402 INX2:4 1 4
1582: 4408 IND4
1583: 4410 CON1:2
1584: 4412 REL24 GE
1585: 4414 IF -2
1586: 4418 LINO 269
1587: 4422 LV:4 -33
1588: 4426 CON1
1589: 4428 RSNG2:1
1590: 4430 AS21
1591: patch 4414 16
1592: 4432 LINO 264
1593: 4436 RV4:6 -56
1594: 4440 LV:6 -60
1595: 4444 FOR4U -198
1596: patch 4226 220
1597: 4448 END
1598: patch 3974 60
1599: 271 end;
1600: 4450 TRA4 4450
1601:
1602: 273 procedure rotate;
1603: 274 var
1604: 275 save: alfa;
1605: 276 opposite: face;
1606: 277 begin
1607: 278 if side = back then
1608: 279 opposite := front else
1609: 280 if side = front then
1610: 281 opposite := back else
1611: 282 if side = top then
1612: 283 opposite := bottom else
1613: 284 if side = bottom then
1614: 285 opposite := top;
1615: 286 save := datas[list[counter], side];
1616: 287 datas[list[counter], side] := datas[list[counter], opposite];
1617: 288 datas[list[counter], opposite] := save;
1618: patch 4450 4458
1619: 4458 BEG:22 0
1620: 4464 CASE4 0
1621: 4468 CASE4 1
1622: 4472 CASE2 277
1623: 4474 "rotate"
1624: 4482 LINO 278
1625: 4486 RV1:4 -34
1626: 4490 CON1:2
1627: 4492 REL2 EQ
1628: 4494 IF -2
1629: 4498 LINO 279
1630: 4502 LV:6 -13
1631: 4506 CON1:1
1632: 4508 RANG2:1 6
1633: 4512 AS21
1634: 4514 TRA -2
1635: patch 4494 22
1636: 4518 LINO 280
1637: 4522 RV1:4 -34
1638: 4526 CON1:1
1639: 4528 REL2 EQ
1640: 4530 IF -2
1641: 4534 LINO 281
1642: 4538 LV:6 -13
1643: 4542 CON1:2
1644: 4544 RANG2:1 6
1645: 4548 AS21
1646: 4550 TRA -2
1647: patch 4530 22
1648: 4554 LINO 282
1649: 4558 RV1:4 -34
1650: 4562 CON1:3
1651: 4564 REL2 EQ
1652: 4566 IF -2
1653: 4570 LINO 283
1654: 4574 LV:6 -13
1655: 4578 CON1:4
1656: 4580 RANG2:1 6
1657: 4584 AS21
1658: 4586 TRA -2
1659: patch 4566 22
1660: 4590 LINO 284
1661: 4594 RV1:4 -34
1662: 4598 CON1:4
1663: 4600 REL2 EQ
1664: 4602 IF -2
1665: 4606 LINO 285
1666: 4610 LV:6 -13
1667: 4614 CON1:3
1668: 4616 RANG2:1 6
1669: 4620 AS21
1670: patch 4602 18
1671: patch 4586 34
1672: patch 4550 70
1673: patch 4514 106
1674: 4622 LINO 286
1675: 4626 LV:6 -12
1676: 4630 LV:2 -256
1677: 4634 LV:4 -32
1678: 4638 RV4:4 -40
1679: 4642 INX4:4 1 8
1680: 4648 IND4
1681: 4650 INX4:60 1 4
1682: 4656 RV1:4 -34
1683: 4660 INX2:10 1 6
1684: 4666 IND:10
1685: 4668 AS:10
1686: 4670 LINO 287
1687: 4674 LV:2 -256
1688: 4678 LV:4 -32
1689: 4682 RV4:4 -40
1690: 4686 INX4:4 1 8
1691: 4692 IND4
1692: 4694 INX4:60 1 4
1693: 4700 RV1:4 -34
1694: 4704 INX2:10 1 6
1695: 4710 LV:2 -256
1696: 4714 LV:4 -32
1697: 4718 RV4:4 -40
1698: 4722 INX4:4 1 8
1699: 4728 IND4
1700: 4730 INX4:60 1 4
1701: 4736 RV1:6 -13
1702: 4740 INX2:10 1 6
1703: 4746 IND:10
1704: 4748 AS:10
1705: 4750 LINO 288
1706: 4754 LV:2 -256
1707: 4758 LV:4 -32
1708: 4762 RV4:4 -40
1709: 4766 INX4:4 1 8
1710: 4772 IND4
1711: 4774 INX4:60 1 4
1712: 4780 RV1:6 -13
1713: 4784 INX2:10 1 6
1714: 4790 RV:6 -12 10
1715: 4796 AS:10
1716: 4798 END
1717: patch 4458 16
1718: 289 end;
1719:
1720: 291 begin
1721: 292 list[1] := 4;
1722: 293 list[2] := 3;
1723: 294 list[3] := 4;
1724: 295 list[4] := 2;
1725: 296 list[5] := 4;
1726: 297 list[6] := 3;
1727: 298 list[7] := 4;
1728: 299 list[8] := 3;
1729: 300 for side := back to top do
1730: 301 begin
1731: 302 counter := 0;
1732: 303 check;
1733: 304 while not done do
1734: 305 begin
1735: 306 counter := counter + 1;
1736: 307 rotate;
1737: 308 check;
1738: 309 end;
1739: 310 end
1740: patch 3962 4802
1741: 4802 BEG:22 0
1742: 4808 CASE4 0
1743: 4812 CASE4 1
1744: 4816 CASE2 291
1745: 4818 "correct"
1746: 4826 LINO 292
1747: 4830 LV:4 -32
1748: 4834 CON1:4
1749: 4836 AS24
1750: 4838 LINO 293
1751: 4842 LV:4 -32
1752: 4846 CON1:4
1753: 4848 ADD24
1754: 4850 CON1:3
1755: 4852 AS24
1756: 4854 LINO 294
1757: 4858 LV:4 -32
1758: 4862 CON1:8
1759: 4864 ADD24
1760: 4866 CON1:4
1761: 4868 AS24
1762: 4870 LINO 295
1763: 4874 LV:4 -32
1764: 4878 CON1:12
1765: 4880 ADD24
1766: 4882 CON1:2
1767: 4884 AS24
1768: 4886 LINO 296
1769: 4890 LV:4 -32
1770: 4894 CON1:16
1771: 4896 ADD24
1772: 4898 CON1:4
1773: 4900 AS24
1774: 4902 LINO 297
1775: 4906 LV:4 -32
1776: 4910 CON1:20
1777: 4912 ADD24
1778: 4914 CON1:3
1779: 4916 AS24
1780: 4918 LINO 298
1781: 4922 LV:4 -32
1782: 4926 CON1:24
1783: 4928 ADD24
1784: 4930 CON1:4
1785: 4932 AS24
1786: 4934 LINO 299
1787: 4938 LV:4 -32
1788: 4942 CON1:28
1789: 4944 ADD24
1790: 4946 CON1:3
1791: 4948 AS24
1792: 4950 LINO 300
1793: 4954 LV:4 -44
1794: 4958 CON1:2
1795: 4960 AS24
1796: 4962 LV:4 -48
1797: 4966 CON1:3
1798: 4968 AS24
1799: 4970 RV4:4 -44
1800: 4974 RV4:4 -48
1801: 4978 REL4 LE
1802: 4980 IF -2
1803: 4984 LV:4 -49
1804: 4988 RV4:4 -48
1805: 4992 RANG42:1 6
1806: 4996 AS41
1807: 4998 LV:4 -49
1808: 5002 RV4:4 -44
1809: 5006 RANG42:1 6
1810: 5010 AS41
1811: 5012 LV:4 -34
1812: 5016 RV14:4 -49
1813: 5020 AS41
1814: 5022 LINO 302
1815: 5026 LV:4 -40
1816: 5030 CON1
1817: 5032 AS24
1818: 5034 LINO 303
1819: 5038 CALL:2 3968
1820: 5044 LINO 304
1821: 5048 RV1:4 -33
1822: 5052 NOT
1823: 5054 IF -2
1824: 5058 LINO 306
1825: 5062 LV:4 -40
1826: 5066 RV4:4 -40
1827: 5070 CON1:1
1828: 5072 ADD24
1829: 5074 AS4
1830: 5076 LINO 307
1831: 5080 CALL:2 4450
1832: 5086 LINO 308
1833: 5090 CALL:2 3968
1834: 5096 TRA -54
1835: patch 5054 44
1836: 5100 LINO 300
1837: 5104 RV4:4 -48
1838: 5108 LV:4 -49
1839: 5112 FOR1U:-102
1840: patch 4980 132
1841: 5114 END
1842: patch 4802 52
1843: 311 end;
1844: 5116 TRA4 5116
1845:
1846: 313 procedure printout;
1847: 314 var
1848: 315 space: integer;
1849: 316 cube: integer;
1850: 317 side: face;
1851: 318 begin
1852: 319 if nosolutions then
1853: 320 writeln('no solutions') else
1854: 321 begin
1855: 322 writeln('solution to instant insanity');
1856: 323 for cube := 1 to 4 do
1857: 324 begin
1858: 325 write(cube, ' ');
1859: 326 for side := front to bottom do
1860: 327 write(datas[cube, side]);
1861: 328 writeln;
1862: 329 end;
1863: 330 end;
1864: patch 5116 5122
1865: 5122 BEG:24 0
1866: 5128 CASE4 0
1867: 5132 CASE4 1
1868: 5136 CASE2 318
1869: 5138 "printout"
1870: 5148 LINO 319
1871: 5152 RV1:2 -1
1872: 5156 IF -2
1873: 5160 LINO 320
1874: 5164 UNITOUT
1875: 5166 FILE
1876: 5168 CON14:1
1877: 5170 CON14:12
1878: 5172 LVCON:14
1879: 5174 "no solutions"
1880: 5188 WRITES:16
1881: 5190 WRITLN
1882: 5192 TRA -2
1883: patch 5156 38
1884: 5196 LINO 322
1885: 5200 UNITOUT
1886: 5202 FILE
1887: 5204 CON14:1
1888: 5206 CON14:28
1889: 5208 LVCON:30
1890: 5210 "solution to instant insanity"
1891: 5240 WRITES:16
1892: 5242 WRITLN
1893: 5244 LINO 323
1894: 5248 LV:4 -16
1895: 5252 CON1:1
1896: 5254 AS24
1897: 5256 LV:4 -20
1898: 5260 CON1:4
1899: 5262 AS24
1900: 5264 RV4:4 -16
1901: 5268 RV4:4 -20
1902: 5272 REL4 LE
1903: 5274 IF -2
1904: 5278 LV:4 -24
1905: 5282 RV4:4 -20
1906: 5286 AS4
1907: 5288 LV:4 -24
1908: 5292 RV4:4 -16
1909: 5296 AS4
1910: 5298 LV:4 -8
1911: 5302 RV4:4 -24
1912: 5306 AS4
1913: 5308 LINO 325
1914: 5312 UNITOUT
1915: 5314 RV4:4 -24
1916: 5318 LVCON:6
1917: 5320 "%10D"
1918: 5326 FILE
1919: 5328 WRITEF:12
1920: 5330 FILE
1921: 5332 CON14:1
1922: 5334 CON14:3
1923: 5336 LVCON:4
1924: 5338 " "
1925: 5342 WRITES:16
1926: 5344 LINO 326
1927: 5348 LV:4 -28
1928: 5352 CON1:1
1929: 5354 AS24
1930: 5356 LV:4 -32
1931: 5360 CON1:4
1932: 5362 AS24
1933: 5364 RV4:4 -28
1934: 5368 RV4:4 -32
1935: 5372 REL4 LE
1936: 5374 IF -2
1937: 5378 LV:4 -33
1938: 5382 RV4:4 -32
1939: 5386 RANG42:1 6
1940: 5390 AS41
1941: 5392 LV:4 -33
1942: 5396 RV4:4 -28
1943: 5400 RANG42:1 6
1944: 5404 AS41
1945: 5406 LV:4 -9
1946: 5410 RV14:4 -33
1947: 5414 AS41
1948: 5416 LINO 327
1949: 5420 UNITOUT
1950: 5422 FILE
1951: 5424 CON14:1
1952: 5426 CON14:10
1953: 5428 LV:2 -256
1954: 5432 RV4:4 -24
1955: 5436 INX4:60 1 4
1956: 5442 RV1:4 -33
1957: 5446 INX2:10 1 6
1958: 5452 WRITES:16
1959: 5454 LINO 326
1960: 5458 RV4:4 -32
1961: 5462 LV:4 -33
1962: 5466 FOR1U:-62
1963: patch 5374 92
1964: 5468 LINO 328
1965: 5472 UNITOUT
1966: 5474 WRITLN
1967: 5476 LINO 323
1968: 5480 RV4:4 -20
1969: 5484 LV:4 -24
1970: 5488 FOR4U -194
1971: patch 5274 216
1972: patch 5192 298
1973: 331 end;
1974: In procedure printout:
1975: w - variable space is neither used nor set
1976: 5492 END
1977: patch 5122 36
1978:
1979: 333 begin
1980: 334 reset(input);
1981: 335 readin;
1982: 336 sumcolors;
1983: 337 find2222;
1984: 338 simultaneous;
1985: 339 rearrange;
1986: 340 correct;
1987: 341 1:
1988: 342 printout;
1989: patch 0 5494
1990: 5494 BEG:22 0
1991: 5500 CASE4 0
1992: 5504 CASE4 1
1993: 5508 CASE2 333
1994: 5510 "insane"
1995: 5518 LINO 334
1996: 5522 CON14
1997: 5524 CON14
1998: 5526 CON4 0
1999: 5532 RV4 -8
2000: 5536 RESET
2001: 5538 LINO 335
2002: 5542 CALL:1 200
2003: 5548 LINO 336
2004: 5552 CALL:1 620
2005: 5558 LINO 337
2006: 5562 CALL:1 1456
2007: 5568 LINO 338
2008: 5572 CALL:1 2474
2009: 5578 LINO 339
2010: 5582 CALL:1 2898
2011: 5588 LINO 340
2012: 5592 CALL:1 3962
2013: patch 6 5598
2014: 5598 LINO 342
2015: 5602 CALL:1 5116
2016: 343 end.
2017: In program insane:
2018: w - type metacolor is never used
2019: w - constant notacolor is never used
2020: w - type metapair is never used
2021: w - type metaface is never used
2022: w - constant notapair is never used
2023: w - constant notaface is never used
2024: 5608 END
2025: patch 5494 568
2026: 344 {
2027: 345 wbggrb
2028: 346 wbrgrr
2029: 347 wbgwrg
2030: 348 wrgwbr
2031: 349 }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.