【问题标题】:How to print this pattern of stars in php? [closed]如何在php中打印这种星星图案? [关闭]
【发布时间】:2018-06-28 00:02:39
【问题描述】:

输入 n 高度=2*n+1;

if n=1
 *
**
 *

if n=2
        *
  *     *
* * * * *
  *     *
        *

if n=3
                *
        *       *
  *     *       *
* * * * * * * * *
  *     *       *
        *       *
                *

等等……

在两条垂直的星星线之间有 'n' 颗星星的间隙。

【问题讨论】:

  • 我们总是乐于帮助和支持新的编码员,但您需要先帮助自己。 :-)doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this
  • 喜欢伪代码吧?所以……你们都试过了吗?这几乎是没有道理的。
  • 我希望你不会等着别人为你写出来,是吗?编辑:是的,你在等;那就等着吧。
  • 我,绝对没有做你的功课。提示:2 个 for 循环。
  • 应该甚至可以在一个 for 循环中用一点数学来完成

标签: php for-loop conditional-statements


【解决方案1】:

美味的foreach:

<?php
function draw_stars($n)
{
    foreach(range(1, $n) as $i) {
        foreach(range(1, $i) as $k)
            $pattern[] = '*';
        $pattern[] = str_repeat('*', 2 * $i + 1);
    }
    foreach($pattern as $k => $stars)
        $pattern[$k] = str_split(
            str_pad($stars, 2 * $n + 1, ' ', STR_PAD_BOTH)
        );
    $pattern = transpose($pattern);
    foreach($pattern as $line)
        echo implode('', $line), "\n";
}
function transpose($array) {
    return array_map(null, ...$array);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多