水の移し替えパズル
Posted feedbacks - Smalltalk
Squeak Smalltalk で。kozima さんの #3557、そのまんまです。幅優先探索のも書きましたが、こちらのほうがずっとシンプルでいいですね。
1 2 3 4 5 6 | | start result |
start := #(827392 65536 122880).
result := start max.
start combinations: 2 atATimeDo: [:pair |
(pair first - pair second isDivisibleBy: 3) ifTrue: [result := result min: pair max]].
^result
|


にしお
#3547()
Rating0/2=0.00
A, B, Cの容器があり,それぞれ水が4L, 2L, 10L入っている. ここで次の操作を繰り返す.
(*)「A, B, Cのどれか二つの容器から水を1Lずつくみ上げ,残りの容器に移す.」
たとえばA, Bから1Lずつくみ上げて移せばA=3L, B=1L, C=12Lとなる. くみ上げる前の容器には必ず水が入っているとする.
(*)を繰り返してどれか一つの容器にのみ水がはいっている状態にする最小手数を求めよ.
可能ならA=827392L,B=65536L,C=122880Lのときも求めよ.
このお題は光成さんの投稿を元に作成しました。ご協力ありがとうございます。
[ reply ]