【paiza】スキルチェック過去問題セット :宝くじ (paizaランク C 相当) 解答例 – PHP編
「if()」の条件分岐と論理演算子を使用できるか、それと文字列の下桁数を取得できるかどうかの問題です。下〇桁の番号を取得する方法はいくつかありますが、今回は「substr()」を使用して番号を取得します。宝くじなんて当たったことないなー(´・ω・`)
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $input_line = trim(fgets(STDIN)); //当選版を取得 $num = trim(fgets(STDIN)); //宝くじの枚数、nを取得 for($i = 0;$i < $num;$i++){ $array[] = trim(fgets(STDIN)); //配列「$array」に検査する宝くじ番号を取得し入れていく } $second = substr($input_line,-4); //二等の当選番号 $third = substr($input_line,-3); //三等の等の当選番号 $adjacent1 = $input_line+1; //前後賞+1の番号 $adjacent2 = $input_line-1; //前後賞-1の番号 for($i = 0;$i < $num;$i++){ if($array[$i] == $input_line){ //もし検査対象と当選番号が一致していたら… echo "first"; //"first"を出力する } elseif(substr($array[$i],-4) == $second) { //もし検査対象の下4桁の番号と当選番号の下4桁が一致していたら… echo "second"; //"second"を出力する } elseif(substr($array[$i],-3) == $third){ //もし検査対象の下4桁の番号と当選番号の下4桁が一致していたら… echo "third"; //"third"を出力する } elseif($array[$i] == $adjacent1 || $array[$i] == $adjacent2){ //もし検査対象が当選番号より+1、もしくは-1ならば… echo "adjacent"; //"adjacent"を出力する } else { //それ以外ならば… echo "blank"; //"blank"を出力する } echo "\n"; } ?> |
私の知識が乏しく、使用できる関数が少なかった当時、大体の問題を「str_split()」で乗り切ってたのはいい思い出(よくない
あとは「if()」文がしっかり作れるのなら、大丈夫だと思います。「もしくは」の条件、論理演算子の「||」はたまに忘れちゃうので、いざって時に使用できるよう覚えておきましょう