【配列に対しての複雑な処理】STEP: 6 ボウリング (paizaランク C 相当) – PHP編【配列活用メニュー】


【配列活用メニュー】 > 【配列に対しての複雑な処理】STEP: 6 ボウリング (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。

解答例

残っているピンは「1」の数を数えれば導くことが可能です。この問題のポイントは「狙うべきピン」を導けるかどうかだと思います。厄介な点として、ピンのデータは次のような形で与えられる点です。

P_10 P_9 P_8 P_7
P_6 P_5 P_4
P_3 P_2
P_1

ボウリングのピンデータが4行与えられますが、降順で与えられています。「狙うピンは一番小さい番号のピン」ということから、与えられたデータを昇順で一つの配列にまとめることが攻略の鍵となります。

1.ピンのデータを昇順で一つの配列にまとめる

一回目の繰り返し分で、

  • 標準入力からデータを「explode()」で配列に変換
  • 「array_reverse()」で配列を反転(昇順に直している)
  • 「$array()」配列に「array_unshift()」で「$fack」を先頭に追加するこの一連の処理が4回行われます。ただこの状態ではまだ不十分です。
こんな感じの多次元配列ができただけです。これを更に
で修正します。この処理が終わった後の配列は以下の通りです。
とってもスッキリしましたね(*’ω’*) この配列を使用し、「狙うべきピン」と「残っているピンの合計」を導きます。

 

2.狙うピンを特定する

繰り返し分で順番に要素をチェックしていき、最初に「1」に当たったらそれを狙うピンとして変数「$first」にいれます。

3.残っているピンをカウントする

繰り返し分を使用して「1」の数をカウントします。

あとは「最初に狙うピンの番号」と、「残っているピンの合計」を出力すればOK

エッグ

シェアする