【日付セット】年月日の順序 (paizaランク C 相当) 解答例 – PHP編【paiza】
【日付セット】 > 年月日の順序 (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
Cランク問題ですがかなり面倒くさい問題でした。難しいアルゴリズム等を考える必要はありませんが、解答の組み合わせが複数ある場合、解答が存在しないものの場合などを判別するプログラムを構築できるかどうかが問われます。
解答例
|
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
<?php $input = explode("/",trim(fgets(STDIN))); $test1 = $input[0]; $test2 = $input[1]; $test3 = $input[2]; $mbtest1 = mb_strlen($test1); $mbtest2 = mb_strlen($test2); $mbtest3 = mb_strlen($test3); $ans1 = 0; $ans2 = 0; $ans3 = 0; if($mbtest1 == 4){ $ans1 = "YYYY"; } elseif($mbtest1 == 2 && $test1 > 12 && $test1 < 32){ $ans1 = "DD"; } else { $ans1 = 1; } if($mbtest2 == 4){ $ans2 = "YYYY"; } elseif($mbtest2 == 2 && $test2 > 12 && $test2 < 32){ $ans2 = "DD"; } else { $ans2 = 1; } if($mbtest3 == 4){ $ans3 = "YYYY"; } elseif($mbtest3 == 2 && $test3 > 12 && $test3 < 32){ $ans3 = "DD"; } else { $ans3 = 1; } $array = array($ans1,$ans2,$ans3); $judge = in_array("DD",$array,true); //var_dump($judge); if($ans1 == 1 && $judge == true){ $ans1 = "MM"; } if($ans2 == 1 && $judge == true){ $ans2 = "MM"; } if($ans3 == 1 && $judge == true){ $ans3 = "MM"; } $array = array($ans1,$ans2,$ans3); $array1 = array($test1,$test2,$test3); $judge = in_array(1,$array,true); $zerojudge = in_array("00",$array1,true); $counter = 0; if($test1 > 31){ $counter++; } if($test2 > 31){ $counter++; } if($test3 > 31){ $counter++; } if($zerojudge == true){ echo "no answer"; } elseif($counter > 1){ echo "no answer"; } elseif($judge == true){ echo "many answers"; } else { echo $ans1."/".$ans2."/".$ans3; } ?> |
