【標準出力メニュー】> 【出力形式を指定して出力】STEP: 4 ペアの数値の入った表を罫線入りで出力 (paizaランク C 相当) [難易度: 1461 ±19]
※リンク先へ移動するためには[paiza]へのログインが必要です。
自然数 H, W, A, B が与えられます。縦に H 行、横に W 行で計 H * W 個の (A, B)
という形式の文字列を出力してください。ただし、横は |
(半角スペース 2 つとバーティカルライン) 区切りで、縦は =
で区切って出力してください。また、縦の文字列間で =
を出力する際は、その上の行と文字数が等しくなるように出力します。
入力値(例)
2 3 7 8
出力値(例)
(7, 8) | (7, 8) | (7, 8)
========================
(7, 8) | (7, 8) | (7, 8)
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php list($h, $w, $a, $b) = explode(" ", trim(fgets(STDIN))); for($i = 1; $i <= $h; $i++) { for($j = 1; $j <= $w; $j++) { echo sprintf("(%d, %d)", $a, $b); if($j != $w) { echo " | "; } elseif($j == $w) { echo "\n"; } } if($i != $h) { for($k = 0; $k < (6*$w + 3*($w - 1)); $k++) { echo "="; } echo "\n"; } } ?> |
感想
=の出力で(7, 8)を
1 ...(
2 ...7
3... ,
4 ...8
5 ...)
と5と数えていて、正解がでない正解がでないと焦っていたのですが、
1...(
2...7
3... ,
4... ※スペース
5...8
6...)
なんと,(カンマ)のあとにスペースが入っていて、6だったのです。
それなので、for($k = 0; $k < (6*$w + 3*($w - 1)); $k++) と計算することができました。
難しかったです。