像这样画一个高度为N的楼梯:
#
##
###
####
#####
######
高度为6的楼梯,注意最后一行应该有零空格。
我的解决方案无法正常使用
function draw($size)
{
for ($i = 1; $i <=$size ; $i++)
{
$spaces = $size-$i;
while ($spaces)
{
echo " ";
$spaces--;
}
$stairs = 0;
while ($stairs < $i)
{
echo "#";
$stairs++;
}
echo "<br/>";
}
}
draw(6);
//output
#
##
###
####
#####
######
没有打印空格,我试过\n, PHP.EOL
但它仍无效。有什么建议吗?
答案 0 :(得分:3)
虽然其他解决方案都很好,但这也是我的代码。
$max=5;
for ( $i =1 ; $i<=$max;$i++) {
for ( $space = 1; $space <= ($max-$i);$space++) {
echo " ";
}
for ( $hash = 1; $hash <= $i;$hash ++ ) {
echo "#";
}
echo "\n";
}
答案 1 :(得分:2)
//PHP
$n = 6; // Number of rows.
for($i=1;$i<=$n;$i++){
echo str_repeat(' ', $n-$i) . str_repeat('#', $i);
echo '\n';
}
答案 2 :(得分:1)
for(var i = 0; i < n; i++)
{
var s = "";
for(var j = 0; j < n; j++)
{
if(n - i - 2 < j)
{
s += "#";
}
else
{
s += " ";
}
}
console.log(s);
}
答案 3 :(得分:0)
这是另一个解决方案:
$int = 7;
for($i = 1; $i<=$int; $i++){
printf('%1$s%2$s%3$s',str_repeat(" ",$int-$i),str_repeat("#",$i),"\n");
}
来自官方PHP文档:
答案 4 :(得分:0)
$n = 6;
for ($i = 0; $i < $n; $i++) {
$pad = 1;
for ($space = 0; $space < $n-$i-1; $space++) {
$pad++;
}
echo str_pad('#', $pad,' ',STR_PAD_LEFT);
for ($j = 0; $j < $i; $j++) {
echo '#';
}
echo '<br>';
}
答案 5 :(得分:0)
我花了一段时间,但最后我设法按照OFC(A. Sharma)的例子来做。
<?php
$handle = fopen("php://stdin","r");
$n = intval(fgets($handle));
for ($rows = 0; $rows < $n; $rows++) {
for ($columns = 0; $columns < $n - $rows - 1; $columns++) {
echo " ";
}
for ($columns = 0; $columns < $rows + 1; $columns++) {
echo "#";
}
echo "\n";
}
?>
答案 6 :(得分:0)
使用PHP函数range()和str_repeat()作为一种优雅的解决方案:
function staircase($n){
foreach (range(1, $n) as $i)
print( str_repeat(' ',$n-$i).str_repeat('#',$i)."\n");
}
答案 7 :(得分:0)
for ($i=0; $i<$n; $i++){
for ($j=0; $j<$n; $j++){
if($i+$j>$n-2){
echo "#";
} else {
echo " ";
}
if($j==$n-1 && $i+$j<$n*2-2){ //The second part is to dont break the last line
echo "\n";
}
}
}
答案 8 :(得分:0)
以下代码说明了所有内容...
function staircase($n) {
// check if n is between 0 and 101 (0 < n <=100)
if( 0 < $n && $n > 100 ) {
} else {
// Loop through each row
for($i = 1; $i <= $n; $i++) {
// print spaces according to the last item position
$si = 1;
while( $si <= ($n - $i)){
print(" ");
$si++;
}
// print the items
for($j = 1; $j <= $i; $j++) {
print("#");
}
// separate rows
print("\n");
}
}
}
输出:对于n = 6
#
##
###
####
#####
######
答案 9 :(得分:0)
在玩完代码并尝试/失败几次之后,我终于理解正确了。请注意如何使用“ \ n ”来打印空格和换行符。以前的空格“
”和“ ”不起作用。
断行将循环出每一行号。因此,如果我们有$ n = 4,则在中断线之后每隔4个空格就会回显一次。
我制作了2个循环来填充楼梯中的所有字段。
这里最棘手的部分是使它们正确对齐。这是if语句到位的地方。
参考链接: Hackerrank Challenge
// Complete the staircase function below.
function staircase($n) {
for($i=1; $i<=$n; $i++){
for($j=1; $j <= $n; $j++){
if( ($n - $i) < $j ){
echo "#";
}else{
echo " ";
}
}
echo "\n";
}
}
答案 10 :(得分:0)
尝试一下
$n=6;
for($i=1;$i<=$n;$i++){
for($spaces=1;$spaces<=($n-$i);$spaces++){
echo " ";
}
for($staires=0;$staires<$i;$staires++){
echo "#";
}
echo "\n";
}
答案 11 :(得分:-1)
如果您想转到下一行print(' ')
print(' ')."\n"
答案 12 :(得分:-1)
JavaScript的:
解决方案:
function StairCase(n){
let x = [];
for(let i = 0; i<n; i++){
while(x.length < n){
x.push(" ");
}
x.shift();
x.push("#");
console.log(x.join(''));
} } //StairCase(6)