我对循环练习很感兴趣,看到了一个有趣的问题,如下所示。
- 创建一个脚本,使用嵌套的for循环构造以下模式。
- 执行时请使用"echo"并以表格形式显示。
0 0 1 0 00 11 11 1011 11 110 11 11 100 0 1 0 0
我很努力,编码了一个小时,但我不能成功,我可以实现一个三角形
1 0 0 0 01 1 0 0 01 1 1 0 011 11 101 1 1 1 1
我知道我的矩阵和数组知识很差,如果有人能教我,我很高兴,谢谢。
三角循环代码:
<?php
for($i=1;$i<=5;$i++){
for ($j=1;$j<=$i;$j++){
echo "1";
}
echo "</br>";
}
?>
大家好,我已经用愚蠢的方式完成了练习,感谢所有帮助我的人。
这是我愚蠢的代码:
for($i=1;$i<=$num;$i++){
for($j=1;$j<=$num;$j++){
if($i==3||$j==3){
echo ' 1 ';
}
else if($i==$j-2){
echo ' 1 ';
}
else if($j==$i-2){
echo ' 1 ';
}
else if($i==2&&$j==2||$i==4&&$j==4){
echo ' 1 ';
}
else{
echo ' 0 ';
}
}
echo'<br>';
}
这里有一个使用str_pad()
的选项来均匀地填充"1"的左右两侧。我使用implode()
和array_fill()
来创建一个字符串,这是正确的长度开始。
$size = 5;
// expanding
for($width = 1; $width <= $size; $width += 2) { // rows
$ones = implode(array_fill(0, $width, '1'));
echo str_pad($ones, $size, '0', STR_PAD_BOTH) . PHP_EOL;
}
// contracting (exclude the first row where it's all ones
for($width = $size - 2; $width >= 1; $width -= 2) { // rows
$ones = implode(array_fill(0, $width, '1'));
echo str_pad($ones, $size, '0', STR_PAD_BOTH) . PHP_EOL;
}
为了好玩,这里有另一个只用一个循环的例子。
注意:你的规范说使用嵌套的for循环- CommuSoft的答案很好地符合使用数学逻辑的描述。
你可以通过计算每行中的不同字符来解决大多数ASCII艺术谜题,并尝试将它们一般化。
例如第一个:
第一行:2x0 1x1 2x0
第二行:1x0 3x1 1x0
第3行:0x0 5x1 0x0
因此我们归纳为:
line i: (n/2-i)x0 2*i-1x1 (n/2-i)x0
然后你可以实现这个:
$n=5;
for ($i=1; $i<=$n/2+1; $i++) {
for($j=0; $j<($n/2-$i); $j++) {
echo '0 ';
}
for($j=0; $j<(2*$i-1); $j++) {
echo '1 ';
}
for($j=0; $j<($n/2-$i); $j++) {
echo '0 ';
}
echo "'n";
}