2012年5月12日投稿 / 投稿者 : サブ / タグ : 投稿プログラム ゲーム パズル QRコード mkII専用
左に積まれたチーズを全て右端に移動させるゲームです。移動するチーズより数字の大きいチーズの上には置けません。 要するにハノイの塔です。絵的にチーズに見えないと思いますがご勘弁ください。チーズの数は8,9,10のいずれかから選べます。
元ネタはH.E.Dudeneyの"The Canterbury Puzzles"というパズル本です。The Canterbury PuzzlesではThe Reve's Puzzlesという題で 載っていますが、今回は"8Cheeses"というわかりやすい題名にしました。
このゲームをクリアするのに必要な最小移動数は、チーズが8個のときは33手、9個のときは(たぶん)41手、10個のときは49手になります。 原文にはチーズが8,10個のときの答えは載っているのですが9個の場合が記載されていません。そのため9個の場合の最小移動数は僕が 計算しましたが、もしかしたら間違っているかもしれません。もし41手より少ない移動数でクリアできた時はご報告いただけるとうれしいです。
プチコンmkII 向けの QR コードです。
1/2
2/2
- CLEAR
- VISIBLE 1,1,0,0,0,0
- CLS
- NUM_STOOL=4
- MOVE=1
- MIN_MOVE=33
- PRINT”┌───────────────────┐”
- PRINT”│ヒタ゛リニツマレタチース゛ヲスヘ゛テ │”
- PRINT”│ミキ゛ハシニイト゛ウサセテクタ゛サイ。│”
- PRINT”│イト゛ウスルチース゛ヨリスウシ゛カ゛ │”
- PRINT”│オオキイチース゛ノウエニハオケマセン。│”
- PRINT”└───────────────────┘”
- INPUT”チースノカス゛ハ(8,9,10イツ゛レカ)”;CHS_NUM
- IF CHS_NUM!=9 AND CHS_NUM!=10 THEN CHS_NUM=8
- CLS
- IF CHS_NUM==9 THEN MIN_MOVE=41
- IF CHS_NUM==10 THEN MIN_MOVE=49
- DIM CHEESE$(CHS_NUM)
- DIM STOOL(NUM_STOOL)
- DIM CHS_POS(CHS_NUM*NUM_STOOL)
- DIM TOP(NUM_STOOL)
- DIM COLUMN(NUM_STOOL)
- FOR I=0 TO CHS_NUM−1
- READ CHEESE$(I)
- NEXT
- DATA”├─0─┤”
- DATA”├─1─┤”
- DATA”├─2─┤”
- DATA”├─3─┤”
- DATA”├─4─┤”
- DATA”├─5─┤”
- DATA”├─6─┤”
- DATA”├─7─┤”
- DATA”├─8─┤”
- DATA”├─9─┤”
- FOR I=0 TO NUM_STOOL−1
- STOOL(I)=I*6
- NEXT
- FOR I=1 TO NUM_STOOL−1
- FOR J=0 TO CHS_NUM−1
- CHS_POS(I*CHS_NUM+J)=−1
- NEXT
- NEXT
- FOR K=0 TO CHS_NUM−1
- CHS_POS(K)=K
- NEXT
- FOR I=1 TO NUM_STOOL−1
- TOP(I)=CHS_NUM
- NEXT
- TOP(0)=0
- FOR I=1 TO NUM_STOOL−1
- COLUMN(I)=0
- NEXT
- COLUMN(0)=CHS_NUM
- FOR I=0 TO CHS_NUM−1
- LOCATE STOOL(0),I
- PRINT CHEESE$(I)
- NEXT
- FOR I=0 TO NUM_STOOL−1
- LOCATE STOOL(I)+1,CHS_NUM
- PRINT”(”;I+1;”)”
- NEXT
- @MAIN
- LOCATE 0,CHS_NUM+2
- PRINT”MOVE:”;MOVE;” サイショウイト゛ウ ”;MIN_MOVE
- FROM_STL=0
- TO_STL=0
- GOSUB @INPUT
- PRINT FROM_STL;”カラ”;TO_STL;”ニイト゛ウ ”
- F_STL=FROM_STL−1
- T_STL=TO_STL−1
- LOCATE STOOL(F_STL),CHS_NUM−COLUMN(F_STL)
- PRINT” ”
- LOCATE STOOL(T_STL),CHS_NUM−COLUMN(T_STL−1)
- PRINT CHEESE$(TOP(F_STL))
- CHS_POS(CHS_NUM*F_STL+CHS_NUM−COLUMN(F_STL))=−1
- COLUMN(F_STL)=COLUMN(F_STL)−1
- COLUMN(T_STL)=COLUMN(T_STL)+1
- CHS_POS(CHS_NUM*T_STL+CHS_NUM−COLUMN(T_STL))=TOP(F_STL)
- TOP(T_STL)=TOP(F_STL)
- IF COLUMN(F_STL)==0 THEN TOP(F_STL)=CHS_NUM
- IF COLUMN(F_STL)>0 THEN TOP(F_STL)=CHS_POS(CHS_NUM*F_STL+CHS_NUM−COLUMN(F_STL))
- MOVE=MOVE+1
- IF COLUMN(NUM_STOOL−1)<CHS_NUM THEN GOTO @MAIN ELSE PRINT”CLEAR!”
- END
- @INPUT
- GOSUB @INPUT_F
- PRINT” ”
- GOSUB @INPUT_T
- PRINT” ”
- IF TOP(FROM_STL−1)<TOP(TO_STL−1) AND COLUMN(FROM_STL−1)>0 THEN RETURN
- PRINT”ムコウナイト゛ウテ゛ス”
- GOTO @INPUT
- @INPUT_F
- LOCATE 0,CHS_NUM+3
- INPUT”ト゛コカラ”;FROM_STL
- IF FROM_STL>0 AND FROM_STL<NUM_STOOL+1 THEN RETURN
- PRINT”1,2,3,4ノイツ゛レカヲニュウリョクシテクタ゛サイ”
- GOTO @INPUT_F
- @INPUT_T
- LOCATE 0,CHS_NUM+6
- INPUT”ト゛コニ”;TO_STL
- IF TO_STL>0 AND TO_STL<NUM_STOOL+1 THEN RETURN
- PRINT”1,2,3,4ノイツ゛レカヲニュウリョクシテクタ゛サイ”
- GOTO @INPUT_T
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.114 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:09 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30