トボガン軌道


コード2020日3の出現


シミュレータをお試しください!



タスク:Xのどこに解決する.


X = the number of trees hit for each of N trajectories
  • n = 1
  • n = 5
  • 例入力


    ..##.......
    #...#...#..
    .#....#..#.
    ..#.#...#.#
    .#...##..#.
    ..#.##.....
    .#.#.#....#
    .#........#
    #.##...#...
    #...##....#
    .#..#...#.#
    
    It represents:
  • フォレストレスト
  • はどこですかSはオープンエリアで、「亀」の木は
  • です

    第1部


    正しい精神的なモデルを特定している

  • このモデル
  • を実行するためにmoduloを使用している
  • ワーキングアルゴリズム
  • を書く

    正しいメンタルモデル

  • の指示は、forrest領域が右
  • に無限に膨張することを示す
    以下のように1つの方法で表されます.
    ..##.........##.........##.........##.........##.........##.......
    #...#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
    .#....#..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
    ..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
    .#...##..#..#...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
    ..#.##.......#.##.......#.##.......#.##.......#.##.......#.##.....
    .#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
    .#........#.#........#.#........#.#........#.#........#.#........#
    #.##...#...#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...
    #...##....##...##....##...##....##...##....##...##....##...##....#
    .#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#
    
    北西から南東への道は次のようになります.
    -
       -
          -
             -
                -
                   -
                      -
                         -
                            -
                               -
                                  -
                                     -
    
    しかし、この挑戦へのトリックは、その精神的なモデルから、螺旋階段のより多くへのシフトです.または円筒モデル
    -
       -
          -
             -
                -
    -
       -
          -
             -
                -
    -
       -
          -
             -
                -
    

    このモデルを実装するために

  • 例入力のためのパート1の軌跡の結果として生じるパスは次のようになります.
  • O.##.......
    #..O#...#..
    .#....X..#.
    ..#.#...#O#
    .X...##..#.
    ..#.X#.....
    .#.#.#.O..#
    .#........X
    #.X#...#...
    #...#X....#
    .#..#...X.#
    
    -
       -
          -
             -
     -
        -
           -
              -
       -
          -
             -
    
    0
       3
          6
             9
     1
        4
           7
              10
      2
         5
            8
    
    0から3まで、6から9まで行く
  • は、簡単に
  • です
  • しかし、9から1まで?どうやってやるの?
  • Moduloは、1つの値を別のものに分割した後の剰余を計算する.
  • 例の入力は、11文字242479182で行を持っています
  • 9 % 11 == 9
  • (9 + 3) % 11 == 12 % 11 == 1
  • Voila!モジュロ、線長、現在のインデックス、適切なオフセットを使用します.各反復の正しい水平位置を取得します.

    アルゴリズムの記述


    Split the input at each new-line character into an array of strings
      Split each string into an array of characters
    
    Set variables for row, col and hits...all starting at 0
    
    As long as the location in the processed input at row exists
      Increment hits by 1 if the value at the row and column is a #
      Increment row by 1
      Update col to equal the remainder after dividing the sum of col and 3 by the length of the nested array
    
    Return the value stored in hits
    

    第2部


    範囲クリープ562479182を理解している

  • 更新された作業アルゴリズム
  • を書く

  • シミュレータ
  • を構築する

  • 範囲クリープの理解


    パート1は、1つの軌道を特徴としました
  • パート2は、5つの軌道
  • を特徴とします
    したがって、
  • 、私のアルゴリズムは、現在すべての5つの軌道のためにヒット数を生成しなければなりません..次に、すべての
  • の製品を計算します

    更新された作業アルゴリズムの記述


    Split the input at each new-line character into an array of strings
      Split each string into an array of characters
    
    Set an array with five 2-element arrays to represent each trajectory
    
    For each trajectory
      Change the 2-element array into the number of hits encountered by following these operations:
        Set variables for row, col and hits...all starting at 0
    
        As long as the location in the processed input at row exists
          Increment hits by 1 if the value at the row and column is a #
          Increment row by the value at location 1 from the original 2-element array
          Update col to equal the remainder after dividing the sum of col and the value at location 2 from the original 2-element array by the length of the nested array
    
    Return the product after multiplying each value together
    

    シミュレータのビルド

  • 私はどんな有効な入力
  • のために各々の軌道のために道を提出したかったですか
  • は、軌道に対応するボタンを押すと、フォレスト領域はリセットされ、次いで各X及びO
  • を漸次的にレンダリングすべきである
    Try the simulator!

    ありがたいことに、私は2021年からいくつかのパズルでこのスパイラルのようなアルゴリズムに遭遇した.
    したがって、このパズルは特に簡単に解決するために感じた.