夏休みプチプログラミングコンテスト2018 その0.5

前回までのあらすじ

プロ達の作品が先に提出されて出しづらくならないように 且つ 参加するのやっぱやめた〜とならないように という考えから、横線のない九九の表のようなものを生むソースコードを提出しました。

最速提出を目指していたガチ勢の方等おられましたら申し訳ないです。ゆるふわ素人勢の浅はかな提出ですのでご容赦ください。

というわけで、参加してしまった&しょぼさMAX なので8/31までの期間で改良or新作の提出をしていきたいと思います。

とりあえず表を作ったので、今日は中身を作りました。

横線のないH×Wマス計算用紙の答えの部分

ソースコード

<?php
list($h,$w) = explode(" ",trim(fgets(STDIN)));
$s = trim(fgets(STDIN));
if($s=="×"){
$n = strlen($h * $w);
}elseif($s=="+"){
$n = strlen($h + $w);
}else{
echo "がんばれー";
exit;
}
$i = 1;
while($i <= $h){
$j = 1;
while($j <= $w){
if($s=="×"){
$m = strlen($i * $j);
$ans = $i * $j;
}else{
$m = strlen($i + $j);
$ans = $i + $j;
}
echo "|" . str_repeat(" ",$n - $m) . $ans;
++$j;
}
echo PHP_EOL;
++$i;
}
?>

 

入力例)

9 9

×

 

出力例)

f:id:Inaba3:20180725232800j:plain

説明書きのようなもの

前回の提出と同じ形式で標準入力を与えると、表の中身の部分だけを返すコードです。(表全体にしなかったのは、出力結果が10行目までしか画面に表示されないからです。(※その0参照))

また、今回は割り算とか引き算だと表が壊れそうだったので、足し算とかけ算だけにしました。(実に小学生の夏休みの宿題っぽいですね。)

今後の予定とかなんとか

他の方の作品を見ながら、算数の表っぽいもの以外を作ってみたい。(実際「その0」で「いろんな言語で【ハロー夏休み】を出力する」っていう案があったけど、PHPしか書けないので却下されてたりします。)

競プロerの端くれとしては、競プロの入門編くらいの問題と解答を1つくらい作って布教になれば良いなみたいな気持ちもある。(何も思いつかなかったら「その1」はそれになります。)

まだまだ期間はあるので、偶然このブログを見てしまった人も参加していきましょ〜