home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Glitch Apple Disk Collection
/
2014.glitch.apple.collection.zip
/
indexed
/
FLASHCOM.DSK
/
PENTOMINOES.int
< prev
next >
Wrap
Text File
|
2014-09-09
|
6KB
|
117 lines
10 CALL -936:VTAB 5:PRINT "THIS PROGRAM WILL ATTEMPT TO FIT":PRINT "SEVERAL DIFFERENT SHAPES INTO A":PRINT "RECTANGLE WHOSE AREA IS 60.":PRINT
20 PRINT "SO YOU MUST GIVE THE HEIGHT AND WIDTH":PRINT "OF THE RECTANGLE SO THAT WHEN"
30 PRINT "THEY ARE MULTIPLIED TOGETHER THE RESULT":PRINT "WILL EQUAL 60 EXACTLY."
40 PRINT :PRINT "THIS PROGRAM TAKES A LONG TIME TO":PRINT "FIND A SOLUTION. 5000 TO 9000 PIECE":PRINT "INSERTIONS ARE TYPICAL."
80 T1=0
85 T2=0
90 DIM USED(12),LS(12),A$(10)
95 PRINT :PRINT :INPUT "PRESS RETURN KEY TO START ",A$
100 DIM P(295),ARENA(400),STACK(12):GOSUB 1000
110 FOR I=0 TO 12:STACK(I)=0:USED(I)=0:NEXT I
120 FOR I=0 TO 400:ARENA(I)=0:NEXT I
124 REAP=0
125 TEXT :CALL -936:VTAB 24
126 PRINT "HORIZ X VERT MUST=60"
130 GR :COLOR= 15
140 PRINT "WIDTH";:INPUT W:PRINT "HEIGHT";:INPUT H
160 LL=11:RL=10+W:TL=2:BL=1+2*H
165 IF W<3 OR H<3 THEN 175
170 IF W*H=60 THEN 180
175 PRINT "INVALID SIZE<CTRL-G>":GOTO 125
180 HLIN LL-1,RL+1 AT TL-1:HLIN LL-1,RL+1 AT TL-2:HLIN LL-1,RL+1 AT BL+1:HLIN LL-1,RL+1 AT BL+2
190 VLIN TL,BL AT LL-1:VLIN TL,BL AT RL+1
195 CALL -936:VTAB 22:TAB 15:PRINT "PENTOMINOES":TAB 7:PRINT MSG$;
200 FOR X=1 TO 20:FOR Y=1 TO 20
210 IF X<=W+1 AND X>=2 AND Y<=H+1 AND Y>=2 THEN 230:ARENA(X+20*(Y-1))=255
230 NEXT Y,X
240 SP=0:GOSUB 500
250 CP=1
260 IF NOT USED(P(CP)) THEN 300
270 CP=CP+5:IF CP<296 THEN 260
275 GOTO 410
280 PRINT "<CTRL-G><CTRL-G>SOLUTION":INPUT A$
290 GOTO 410
300 FILL=0:FOR I=1 TO 4:IF ARENA(LEAD+P(CP+I)) THEN FILL=1:NEXT I
310 IF FILL=0 THEN 340
320 CP=CP+5:IF CP>295 THEN 410
330 IF NOT USED(P(CP)) THEN 300:GOTO 320
340 SP=SP+1:STACK(SP)=CP:LS(SP)=LEAD:USED(P(CP))=1
350 COLOR= P(CP):FOR I=1 TO 4:J=LEAD+P(CP+I):ARENA(J)=P(CP)
352 PLOT (J MOD 20)+9,2*(J/20):PLOT (J MOD 20)+9,2*(J/20)+1
354 NEXT I
355 ARENA(LEAD)=P(CP)
360 PLOT (LEAD MOD 20)+9,2*(LEAD/20)
365 PLOT (LEAD MOD 20)+9,2*(LEAD/20)+1
370 GOSUB 500:GOTO 250
410 IF SP=0 THEN 440:CP=STACK(SP):LEAD=LS(SP):USED(P(CP))=0:SP=SP-1
415 A= PEEK (-16336)+ PEEK (-16336)
417 T2=T2+1
420 COLOR= 0:FOR I=1 TO 4:J=LEAD+P(CP+I):ARENA(J)=0
422 PLOT (J MOD 20)+9,2*(J/20):PLOT (J MOD 20)+9,2*(J/20)+1
424 NEXT I
425 ARENA(LEAD)=0
426 PLOT (LEAD MOD 20)+9,2*(LEAD/20)
427 PLOT (LEAD MOD 20)+9,2*(LEAD/20)+1
430 GOTO 270
440 PRINT "<CTRL-G><CTRL-G><CTRL-G>NO MORE SOLUTIONS":END
500 I=1:T1=T1+1
505 VTAB 21:TAB 8
507 PRINT "INSERTION=";T1;" REMOVAL =";T2
510 IF NOT ARENA(I) THEN 520:I=I+1:IF I<400 THEN 510
515 POP :GOTO 280
520 LEAD=I:RETURN
530 RETURN
1000 P(1)=1:P(2)=1:P(3)=2:P(4)=3:P(5)=4:P(6)=1:P(7)=20:P(8)=40:P(9)=60:P(10)=80
1010 P(11)=2:P(12)=19:P(13)=20:P(14)=21:P(15)=40:P(16)=3:P(17)=19:P(18)=20:P(19)=40:P(20)=41
1020 P(21)=3:P(22)=20:P(23)=21:P(24)=39:P(25)=40:P(26)=3:P(27)=1:P(28)=19:P(29)=20:P(30)=40
1030 P(31)=3:P(32)=1:P(33)=21:P(34)=22:P(35)=41:P(36)=3:P(37)=20:P(38)=21:P(39)=22:P(40)=41
1040 P(41)=3:P(42)=18:P(43)=19:P(44)=20:P(45)=39:P(46)=3:P(47)=19:P(48)=20:P(49)=21:P(50)=39
1050 P(51)=3:P(52)=19:P(53)=20:P(54)=21:P(55)=41:P(56)=4:P(57)=2:P(58)=20:P(59)=21:P(60)=22
1060 P(61)=4:P(62)=1:P(63)=20:P(64)=40:P(65)=41:P(66)=4:P(67)=1:P(68)=21:P(69)=40:P(70)=41
1070 P(71)=4:P(72)=1:P(73)=2:P(74)=20:P(75)=22:P(76)=5:P(77)=1:P(78)=2:P(79)=3:P(80)=23
1080 P(81)=5:P(82)=11:P(83)=2:P(84)=3:P(85)=20:P(86)=5:P(87)=20:P(88)=21:P(89)=22:P(90)=23
1090 P(91)=5:P(92)=17:P(93)=18:P(94)=19:P(95)=20:P(96)=6:P(97)=1:P(98)=2:P(99)=3:P(100)=22
1100 P(101)=6:P(102)=1:P(103)=21:P(104)=2:P(105)=3:P(106)=6:P(107)=19:P(108)=20:P(109)=21:P(110)=22
1110 P(111)=6:P(112)=18:P(113)=19:P(114)=20:P(115)=21:P(116)=6:P(117)=20:P(118)=21:P(119)=40:P(120)=60
1120 P(121)=6:P(122)=19:P(123)=20:P(124)=40:P(125)=60:P(126)=6:P(127)=20:P(128)=40:P(129)=41:P(130)=60
1130 P(131)=6:P(132)=20:P(133)=39:P(134)=40:P(135)=60:P(136)=7:P(137)=1:P(138)=21:P(139)=22:P(140)=23
1140 P(141)=7:P(142)=1:P(143)=20:P(144)=19:P(145)=18:P(146)=7:P(147)=1:P(148)=2:P(149)=20:P(150)=19
1150 P(151)=7:P(152)=1:P(153)=2:P(154)=22:P(155)=23:P(156)=7:P(157)=20:P(158)=21:P(159)=41:P(160)=61
1160 P(161)=7:P(162)=20:P(163)=19:P(164)=39:P(165)=59:P(166)=7:P(167)=20:P(168)=40:P(169)=41:P(170)=61
1170 P(171)=7:P(172)=20:P(173)=40:P(174)=39:P(175)=59:P(176)=8:P(177)=1:P(178)=2:P(179)=20:P(180)=21
1180 P(181)=8:P(182)=1:P(183)=2:P(184)=21:P(185)=22:P(186)=8:P(187)=1:P(188)=20:P(189)=21:P(190)=40
1190 P(191)=8:P(192)=1:P(193)=20:P(194)=21:P(195)=41:P(196)=8:P(197)=1:P(198)=20:P(199)=21:P(200)=22
1200 P(201)=8:P(202)=1:P(203)=19:P(204)=20:P(205)=21:P(206)=8:P(207)=20:P(208)=21:P(209)=40:P(210)=41
1210 P(211)=8:P(212)=19:P(213)=20:P(214)=39:P(215)=40:P(216)=9:P(217)=20:P(218)=21:P(219)=41:P(220)=42
1220 P(221)=9:P(222)=19:P(223)=20:P(224)=38:P(225)=39:P(226)=9:P(227)=1:P(228)=19:P(229)=20:P(230)=39
1230 P(231)=9:P(232)=1:P(233)=21:P(234)=22:P(235)=42:P(236)=10:P(237)=20:P(238)=21:P(239)=22:P(240)=40
1240 P(241)=10:P(242)=20:P(243)=19:P(244)=18:P(245)=40:P(246)=10:P(247)=1:P(248)=2:P(249)=21:P(250)=41
1250 P(251)=10:P(252)=20:P(253)=39:P(254)=40:P(255)=41:P(256)=11:P(257)=1:P(258)=2:P(259)=20:P(260)=40
1260 P(261)=11:P(262)=1:P(263)=2:P(264)=22:P(265)=42:P(266)=11:P(267)=20:P(268)=40:P(269)=39:P(270)=38
1270 P(271)=11:P(272)=20:P(273)=40:P(274)=41:P(275)=42:P(276)=12:P(277)=20:P(278)=19:P(279)=18:P(280)=38
1280 P(281)=12:P(282)=20:P(283)=21:P(284)=22:P(285)=42:P(286)=12:P(287)=1:P(288)=20:P(289)=40:P(290)=39
1290 P(291)=12:P(292)=1:P(293)=21:P(294)=41:P(295)=42
1300 GOSUB 5000
1999 RETURN
2000 FOR X=1 TO 20:FOR Y=1 TO 20:PRINT ARENA(X+20*(Y-1));:NEXT Y:PRINT :NEXT X:END
5000 DIM QWE(2),MSG$(200):QWE=1:QWE(0)=2:MSG$="SLOW INTEGER BASIC VERSION"
5010 IF QWE=2 THEN 5999
5020 MSG$="FLASH! COMPILED VERSION"
5999 RETURN
10000 REM
10010 REM PENTOMINOES GAME
10020 REM PROBLEM IS TO FIT SEVERAL
10030 REM DIFFERENT SHAPED PIECES
10040 REM INTO A RECTANGLE WHICH
10050 REM HAS AN AREA OF 60 SQAURE
10060 REM UNITS.
10070 REM
10080 REM TAKES A LONG TIME UNDER
10090 REM INTEGER BASIC. TOO LONG FOR
10100 REM SOMEONE TO WAIT WITH A
10110 REM STOPWATCH TO TIME IT.
10120 REM
10130 REM FIRST SOLUTION IS FOUND
10140 REM IN A FEW MINUTES UNDER
10150 REM FLASH!