私は小麦、ライ麦、大麦、穀物、フランスパンを提供するパン屋で働いていますが、パン屋は少し奇妙です-彼はパンをランダムに積み重ね、時には棚の最後を空にします。
毎日、同じ顧客がやって来て、それぞれのパンを1つずつ求めますが、難しいのは、彼が生殖嫌悪者なので、彼のバッグをいっぱいにすると、連続した選択で隣接する2つの棚からパンを取ることができないことです。
隣接する棚の間を歩くには1秒かかります。忙しい店です。パンをランダムに構成する場合は、一意のパンを1つずつ取得するのにかかる時間を最小限に抑えたいと思います。任意の棚で開始および終了できます。
今日の注文がのW B W G F R W
場合、可能なパスは0, 3, 5, 1, 4
で、合計で12秒です:abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
(1, 2, 3, 4, 5
パンは隣接する棚から連続して選択されるため、機能しません。)
の場合B W B G B F B R B W B F
、可能なパスは1, 3, 5, 7, 10
、合計9秒です。
マネージャーは常に可能な解決策があることを確認するので、悪い入力をキャッチすることを心配する必要はありません。彼は通常、ファイルで注文を送信しますが、必要に応じて、STDINに入力するか、別の方法で読み取ることができます。デフォルトのI / Oルールに従って、プログラムにその時間と同様に最適なパスのインデックスを出力してほしい。
要するに:
- 5種類のパン。
- パンの順序は、ランダムな順序と長さの文字列として表示されます。
- 一意のパンを1つずつ選択する必要があります。
- 連続して連続して選択することはできません。
- 選択インデックス間の距離を最小化します。
- 無効な入力について心配する必要はありません。
- デフォルトのI / Oルールが適用されます。
これはcode-golfで、最短バイトカウントが優先されます。
'WBWG FRW'
、有効な入力も?
0+3+5+1+4=13
しかし1+3+5+7+10=26
、そうではありません9
。