paiza2回目
通算6問目
数値が2個与えられて、引き算しろみたいな単純な問題だった。
これいつも通り1個1個変数に代入してたら勉強になるのか怪しかったので
まとめて変数に代入できないかなーと思って少し遊んだ
最初に与えられる数値が2行だったので、初期の動作としては配列に格納することは確実。
ついでにここでfgetsも(int)で最初からint型で数値を引っ張れることに気付いた。
$default = array();
while($b = (int)fgets(STDIN)){
array_push($default,$b);
}
でこっからどうしようかなーって悩む
別に2個しかデータないんだし、手動で代入すりゃいいんだけど数多くなったときもやんのかって考えたらそうじゃないなって。
最初にでてくるのはfor文なんだけど、何回繰り返せばいいかを変数に代入しなきゃ今回だけのイロモノコードになっちゃう。
ってことで調べたら便利なヤツがいた
まんな配列の要素数を取得できるcount君にご登場頂き
$defaultNamber = count($default);
for($i = 0; $i<= $defaultNamber; $i++ ){
${"score" . $i} = $default[$i] ;
}
これで要素数がいくら増えようとも順次変数scoreにナンバリングをしながら代入することができる。
後はとってきた変数で計算して終わり。
7問目,8問目,9問目,10問目も今までの復習感が強いので割愛
いくらなんでも物足りないので、もう少しやる。
11,12,13,14,15問目も復習
たまにいい難易度のくるんだけど、基本簡単すぎる・・・。
ということで勉強になりそうなのだけ記事にして、あとはさっさとクリアしていくことに
結局コロナのせいで休んでるのに70問近くやってしまった。
知らなくて知識になった部分も少しだけあったので書き記す
文字列の結合
$score = "aaa" .= "bbb"
echo $score
出力 aaabbb
小数点の切り捨て
$score = floor(26 / 5)
echo $score
出力 25
こんな感じ。
で、いくらなんでももうDランクばっかやってても伸びないかなって思ってCランクに手だした。
かなり時間かかるし、絶対スマートな解法じゃないけど3問やって3問解けた
やってること自体はDランクでやってたことを組み合わせてるだけなんだけど、配列からいらなくなったデータ処理するのに今は他に知識がないから
array_splice("対象の配列","何番目の要素から","何個の要素を",)
これで消してるんだけど、もっとスマートな方法がありそう。
またアウトプットしておきたい知識がでてきたら更新しよう。
Discussion