編集:質問の最後に、ボーナスパズルの最初のソルバーに100の評判の賞金を授与します!
この賞金には期限がないため、回答が表示されたときにのみ、賞金を質問に追加します。
1桁の正の整数の減少しないリストが与えられた場合、桁を掘るダンジョンの深さを決定する必要があります。
███ ███ A dungeon with 5 blocks removed and a depth of 3.
███ ███
███ ████
████████
掘り始める前に地面は水平です。
すべての指は下から土のブロックを1つだけ削除できますが、ダンジョンの外側からその位置に到達する必要があり、ブロックを削除した後、ブロックはダンジョンを離れる必要があります。そうしている間、数字は水平ステップでその数値を超えて下降または上昇することはできません。
数字は掘るために次の戦略を使用します:
- 最小の値を持つ数字が最初に掘り、その後、次のディガーは常に残りの数字の次に小さい値になります。
- 最初の桁はどの位置でも掘ることができます。(すべての地面は同じです。)
- 次の数字は、常に開始された列の一番左にあり、そこから出たり入ったりすることができます。そのような列が存在しない場合、右端の列の右側にある新しい列を掘り始めます。
たとえば、数字1 1 1 2 3 3
は次のダンジョンを掘ります(どの種類の数字がその位置を掘り起こすかを示す数字で段階的に視覚化します)。
███1████ ███11███ ███11███ ███11███ ███11███ ███11███
████████ ████████ ███1████ ███1████ ███1████ ███13███
████████ ████████ ████████ ███2████ ███2████ ███2████
████████ ████████ ████████ ████████ ███3████ ███3████
████████ ████████ ████████ ████████ ████████ ████████
例の説明:
- 2番目の
1
列は、それを2
-deepに深くして右に掘る場合、利用可能な唯一の列から登ることができませんでした。 - 3番目
1
は、左端の列を掘って2
-deepカラムを作成し、-deepカラムに移動して1
から地面レベルに移動できます。 - 次
2
と3
両方とも左端の列を掘ることができます。 - 最後
3
は左端の列を掘ることはできませんが、次の列は掘ることができます。
入力
- 少なくとも1つの要素を持つ正の1桁の整数の減少しないリスト。
出力
- 構築されたダンジョンの深さである単一の正の整数。
例
入力=>出力(説明として、ダンジョンの列の深さを左から右に、これは出力の一部ではありません)
[3] => 1
(column depths are [1])
[1, 1, 1, 2, 3, 3] => 4
(column depths are [4, 2])
[1, 1, 1, 1, 1, 1, 1, 1] => 3
(column depths are [3, 2, 2, 1])
[1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5] => 11
(column depths are [11, 6, 2])
[1, 1, 1, 1, 1, 2, 2, 9, 9, 9] => 7
(column depths are [7, 2, 1])
[2, 2, 2, 2, 2, 5, 5, 5, 7, 7, 9] => 9
(column depths are [9, 2])
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] => 10
(column depths are [10, 5])
[1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 7, 7, 9] => 13
(column depths are [13, 5])
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9] => 13
(column depths are [13, 5])
[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9] => 21
(column depths are [21, 12, 3])
これはコードゴルフなので、最短のエントリが勝ちます。
ボーナスパズル
「数字は次の掘り方の戦略を使用する」セクションで説明されている戦略が、常に指定された数字に対して可能な限り最も深いダンジョンを与えることを証明(または反証)できますか?