Dinesman's multiple-dwelling problem: Difference between revisions
Content deleted Content added
→{{header|Commodore BASIC}}: Add implementation |
|||
Line 392: | Line 392: | ||
</pre> |
</pre> |
||
==={{header|Commodore BASIC}}=== |
|||
The statements have been rearranged below so as to eliminate the maximum number of iterations; they could all be placed in the innermost loop and achieve the same result, just more slowly. |
|||
<syntaxhighlight lang="basic">100 T=5:REM TOP FLOOR |
|||
110 FOR B=1 TO T |
|||
120 : REM BAKER DOES NOT LIVE ON THE TOP FLOOR |
|||
130 : IF B=T THEN 420 |
|||
140 : FOR C=1 TO T |
|||
150 : IF C=B THEN 410: REM ONE PERSON PER FLOOR |
|||
160 : REM COOPER DOES NOT LIVE ON THE BOTTOM FLOOR |
|||
170 : IF C=1 THEN 410 |
|||
180 : FOR F=1 TO T |
|||
190 : IF F=B OR F=C THEN 400: REM ONE PERSON PER FLOOR |
|||
200 : REM FLETCHER DOES NOT LIVE ON TOP OR BOTTOM |
|||
210 : IF F=1 OR F=T THEN 400 |
|||
220 : REM FLETCHER DOES NOT LIVE ADJACENT TO COOPER |
|||
230 : IF ABS(F-C)=1 THEN 400 |
|||
240 : FOR M=1 TO T |
|||
250 : IF M=B OR M=C OR M=F THEN 390: REM ONE PERSON PER FLOOR |
|||
260 : REM MILLER LIVES ABOVE COOPER |
|||
270 : IF M < C THEN 390 |
|||
280 : FOR S=1 TO T |
|||
290 : IF S=B OR S=C OR S=F OR S=M THEN 380: REM ONE PERSON PER FLOOR |
|||
300 : REM SMITH DOES NOT LIVE ADJACENT TO FLETCHER |
|||
310 : IF ABS(F-S)=1 THEN 380 |
|||
320 : PRINT "BAKER IS ON"B |
|||
330 : PRINT "COOPER IS ON"C |
|||
340 : PRINT "FLETCHER IS ON"F |
|||
350 : PRINT "MILLER IS ON"M |
|||
360 : PRINT "SMITH IS ON"S |
|||
370 : END |
|||
380 : NEXT S |
|||
390 : NEXT M |
|||
400 : NEXT F |
|||
410 : NEXT C |
|||
420 NEXT B |
|||
430 PRINT "NO SOLUTION"</syntaxhighlight> |
|||
{{Out}} |
|||
<pre>BAKER IS ON 3 |
|||
COOPER IS ON 2 |
|||
FLETCHER IS ON 4 |
|||
MILLER IS ON 5 |
|||
SMITH IS ON 1</pre> |
|||
==={{header|FreeBASIC}}=== |
==={{header|FreeBASIC}}=== |