【问题标题】:Using loop to create a shape使用循环创建形状
【发布时间】:2018-11-03 13:23:01
【问题描述】:

我应该使用嵌套的 for 循环来创建这个形状:https://imgur.com/a/prh6zwj

这是我目前拥有的:

 <?php
 for ($x = 1; $x <= 10; $x++){

      for ($y = 1; $y <= 6; $y++){
                    echo "Y";
      }
 }
?>

我不知道该怎么做。 提前致谢!

【问题讨论】:

    标签: php loops for-loop shapes


    【解决方案1】:
    <?php
    $position = 1;
    for ($x = 1; $x <= 11; $x++){
        for ($y = 1; $y <= 6; $y++){
            if ($y == $position) {
                echo "Y";
            } else {
                echo "0";
            }
        }
        if ($x < 6) {
            $position++;
        } else {
            $position--;
        }
        echo "\n";
    }
    

    【讨论】:

      【解决方案2】:
       <?php
       $length = 6; // change this to change height width
       $pos = 0;
       for ($x = 1; $x <= (($length*2)-1); $x++){
          if($x <= $length)
          {$pos = $pos+1; }
          else
          {$pos = $pos-1; }
            for ($y = 1; $y <= $length; $y++){
                          if($y == $pos)
                          echo "Y";
                          else
                          echo "O";
            }
            echo "\n";
       }
      

      【讨论】:

        【解决方案3】:

        当我开始编程时,有很多可能的方法可以实现这一点,我从不关心代码质量,只关注输出。我添加了两个示例以帮助您更好地理解它!

        <?php
        
        //We have 6 columns & 11 rows so we need two loops one size of 11 and second size of 6
        $counter = 1;
        for ($i = 1; $i <= 11; $i++){
            for ($j = 1; $j <= 6; $j++){
                if ($j == $counter) {
                    echo "Y";
                } else {
                    echo "O";
                }
            }
            if ($i < 6) {
                $counter++;
            } else {
                $counter--;
            }
            echo "<br/>";
        }
        
        echo "**************************** METHOD TWO ****************************";
        //Following is not efficient But its also printing the same results
        for ($i = 0 ; $i < 66 ; $i++){
        
            if($i == 65)
            {
                echo "O";
                break;
            }
            if($i % 6 == 0){
                echo "<br/>";
            }
            if($i <= 36)
            {
                if ($i % 7 == 0){
                    echo "Y";
                }else{
                    echo "O";
                }
            }else{
                if ($i % 5 == 0){
                    echo "Y";
                }else{
                    echo "O";
                }
            }
        }
        ?>
        

        【讨论】:

          【解决方案4】:
          $k=2;                   // for calculating position from backside
          for($i=1;$i<=11;$i++)    //for row
            {
             for($j=1;$j<=6;$j++)       //column
              {
                 if($j==$i && $i<=6)      //logic for printing "Y" till the end of row
                     echo "Y";
                 else if($i>6 && $j==($i-$k))    //logic for printing "Y" in reversal order from the end of row
                 {
                    echo "Y";
                    $k+=2;                       
                 }
                  else
                    echo "O";                   // filling rest places with "O"
              }
             echo"\n";                             // jumping to new Row;
           }
          

          希望你能轻松理解。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-07-09
            • 2021-10-20
            • 2013-12-02
            • 2012-12-19
            • 1970-01-01
            • 2023-03-17
            • 1970-01-01
            相关资源
            最近更新 更多