したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

突然ですが、クイズです。

1名無し赤レンガ:2005/06/10(金) 01:34:29 ID:YNYAwOMM
こんなネタがあるんだが、お前等の知恵を借りたい。

このコードを、より短くし、かつ、ループを1回にするには、どうしますか?
<?php
$col = 11; //表の横幅
$row = 5; //表の縦幅
$d = true; //白から始めるか、黒からはじめるか。trueだったら白から始める。

for($i=1; $i<$row+1; $i++){
for($j=1; $j<$col+1; $j++){
$b = (bool)(($i + $j) % 2);
if(((!$b) && $d)||($b&&(!$d))) print "□";
else print "■";
}
print "\n";
}
?>

$colが11
$rowが5
$bがtrueだった場合
期待する結果は…

(出力結果)
□■□■□■□■□■□
■□■□■□■□■□■
□■□■□■□■□■□
■□■□■□■□■□■
□■□■□■□■□■□

$colが10
$rowが5
$bがfalseだった場合
期待する結果は…

(出力結果)
■□■□■□■□■□
□■□■□■□■□■
■□■□■□■□■□
□■□■□■□■□■
■□■□■□■□■□

条件は、
・自作関数とか使うのナシ。if for while と演算子と名のつくものでやってくださいね♪
・言語は問いませんが、産能の歴史上、授業で使われたことのないの不可。とりあえず、問題はPHPで作られてます。
・ひとりで解いても、みんなで解いてもOK。
・与えられる数値は、一度別の変数に代入してから使う
・スペース詰めるとか、命令自体に変化ないの不可
・最終行は改行されなくても良い
・ifやforの以下、命令が1行の場合、同じ行に書いて可。ただし2個以上不可。
 (例)
  ○ if(true) print "hoge";
  × while($bool) if(true) print "hoge"; else print "foo";
PHPであれば、『;』が付いた時点で改行入れる感じ。
・動くことを確認してね♪


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板