Golden Pyramid Golden Pyramid
Elementary+
FR HU Japanese RU UK ZH-HANS EN

我らがロボ・トリオは来たる宝探しの旅に備えて訓練を積む必要があります。 スティーブンはピラミッドの二次元モデルを作成しました。 これにより、ロボの金の探索訓練を行うことができます。 ロボはピラミッドの頂上をスタート地点とし、各々の部屋で金を集めます。 ピラミッドを降りるたびに、右の部屋に行くか、左の部屋に行くかの選択をします。 金の獲得量を最適化するため、スティーブンは一度に最大でどのくらいの量の金を獲得できるか知る必要があります。

タプルのタプルを考えてみましょう。最初のタプルは一つの整数を持ち、次のタプルに行くと整数が一つ増えます。 ...

左下に降りるときはインデックスは変わらず、右下に降りるときは一つ大きいインデックスになると考えましょう。 もし再帰関数を使うのであれば注意しましょう。

sum-in-triangles

sum-in-triangles

タプルのタプル形式のピラミッド。各々のタプルは整数値から成ります。

合計で得られる最大の整数値。

count_gold((
    (1,),
    (2, 3),
    (3, 3, 1),
    (3, 1, 5, 4),
    (3, 1, 3, 1, 3),
    (2, 2, 2, 2, 2, 2),
    (5, 6, 4, 5, 6, 4, 3)
)) == 23
count_gold((
    (1,),
    (2, 1),
    (1, 2, 1),
    (1, 2, 1, 1),
    (1, 2, 1, 1, 1),
    (1, 2, 1, 1, 1, 1),
    (1, 2, 1, 1, 1, 1, 9)
)) == 15
count_gold((
    (9,),
    (2, 2),
    (3, 3, 3),
    (4, 4, 4, 4)
)) == 18

これは動的プログラミングの例に使われる古典的な問題です。 多くの最適化問題に応用できる基本的なコンセプトです。

0 < len(pyramid) ≤ 20
all(all(0 < x < 10 for x in row) for row in pyramid)

You should be an authorized user in order to see the full description and start solving this mission.