座席制
コード2020日11の出現
シミュレータを試してください
タスク:Xのどこに解決する.
X = the number of seats occupied once seat occupation no longer changes
例入力
L.LL.LL.LL
LLLLLLL.LL
L.L.L..L..
LLLL.LL.LL
L.LL.LL.LL
L.LLLLL.LL
..L.L.....
LLLLLLLLLL
L.LLLLLL.L
L.LLLLL.LL
It represents:.
床はありますかL
空席#
占領席第1部
このパズルタイプ再び?
2021 Day 25: Sea Cucumbers 最終的に変更を停止タイルをトグルタイルで一定のグリッドサイズを紹介
2021 Day 22: Reactor Reboot 3 D空間の状態キューブをトグル
2021 Day 20: Trench Map タイルの状態を切り替えると
2021 Day 11: Dumbo Octopus それぞれの最終的に同じ状態を持っていたタイルをトグルで一定の2 Dグリッドを紹介
2021 Day 5: Hydrothermal Venture 注目されてますます明らかに-一定のサイズ-グリッドのタイルが残っていないか、値の増加
2021 Day 4: Giant Squid タイルがますますマークされるようにトグルされるいくつかの一定の二次元格子を特徴としました
2020 Day 24: Lobby Layout また、タイルの状態を切り替えると2 Dの無限グリッドを紹介
2020 Day 17: Conway Cubes キューブの状態をトグルで3 D無限グリッドを紹介
どのようにこのパズルを比較するのですか?
アルゴリズムの記述
舞台を定める
Process the input into an array of arrays:
Split the input at each new line character into an array of strings
Split each string into an array of characters
Create an array of 8 pairs that represent the coordinates of each cell's adjacent cells
1要素のシェルで配列を入力します.Turn an array like this:
L.L
.L.
L.L
Into an array like this:
.....
.L.L.
..L..
.L.L.
.....
メインループ:Do at least one time, then again only if an array of cells to switch is not empty:
Empty the array of cells
For each cell in the grid of seats, except for the bordering cells:
Check each adjacent cell and accumulate tallies for each of the three possible characters found: . # L
If the current cell contains an 'L' and the number of '#'s found is 0
Add the cell's coordinates to the list of switchers with an instruction to change it's value to '#'
Else, if the current cell contains an '#' and the number of '#'s found is 4 or more
Add the cell's coordinates to the list of switchers with an instruction to change it's value to 'L'
For each coordinate and instruction set in the list of switchers
Update the cell in the grid of seats at the current location to the value specified
最後に、占有席数を計算するFor each nested array in the grid of seats
Accumulate a sum - starting at 0 - of the count of '#' characters in each array
Return the sum
ビルドシミュレータ
第2部
楽しいツイスト!
8つの隣接するセルをチェックする代わりに:
.....
.!!!.
.!S!.
.!!!.
.....
我々は座席を見つけるまで、または我々は部屋の境界を超えてまで、すべての8つの方向に直線でチェックする必要があります!.!.!
.!!!.
!!S!!
.!!!.
!.!.!
新しく必要なサブルーチンを書く
関数: isatavalidLocation ()
Expects two parameters
1. Row index
2. Column index
Return false, unless:
Both indices are greater than or equal to 0
And Row is less than the length of the number of arrays in the outer-most array
And Column is less than the length of any nested array (they are all the same length)
関数: firstvisiblate ()
Expects two parameters
1. A pair of coordinates representing the direction to travel from an origin point
2. A pair of coordinates representing the originating row and column indices
Return '.' to indicate 'No seat found', unless:
The next cell along the path 'isAtAValidLocation'
If the next cell is at a valid location
And its value is '.'
Continue along the path
Else - its value is not '.'
Return its value - being either 'L' or '#'
作業アルゴリズムの更新
Do at least one time, then again only if an array of cells to switch is not empty:
Empty the array of cells
For each cell in the grid of seats:
Continue along a straight line - starting from each adjacent cell and continuing until either a seat is found or reaching the boundary of the room - and accumulate tallies for each of the three possible characters found: . # L
If the current cell contains an 'L' and the number of '#'s found is 0
Add the cell's coordinates to the list of switchers with an instruction to change it's value to '#'
Else, if the current cell contains an '#' and the number of '#'s found is 5 or more
Add the cell's coordinates to the list of switchers with an instruction to change it's value to 'L'
For each coordinate and instruction set in the list of switchers
Update the cell in the grid of seats at the current location to the value specified
シミュレータの更新
私のアルゴリズムからページのスクリプトにコードをペーストしているコピーを除いて、これはどのボタンが押されたかについて、どの部分の機能を呼び出すべきかをトグルするロジックを加えることを必要としました.
私は私のコピー貼り付けでずっしりしていて、トラブルシューティングに小さな頭痛をつくりました.
全体的に、大きな取引.
Try the simulator for Part 2
Reference
この問題について(座席制), 我々は、より多くの情報をここで見つけました https://dev.to/rmion/seating-system-hnnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol