PHP kullanarak bu desen nasıl yazdırılır?


9

Bu Desen nasıl yazdırılır?

Desen

$number = 5;
for ($i=1; $i <= $number ; $i++) { 
    for ($j=$i; $j >= 1;$j--){
        echo "0";
    }
    echo "\n";
}

Baskılar

0
00
000
0000
00000

Ben böyle denedim, ama yıldız ve Sıfır char yazdırmak için kafam karıştı

for ($i=1; $i <= $number ; $i++) { 
    $sum = 0;
    for ($j=$i; $j >= 1;$j--){
        $sum +=$j;
    }
    echo $i ." => " .$sum ."\n";
}

Baskılar

1 => 1
2 => 3
3 => 6
4 => 10
5 => 15

Yanıtlar:


17

str_repeatGerekli uzunlukta dizeler oluşturmak için kullanabilirsiniz . Üçgen sayılar için o Not (1, 3, 6, 10, 15, ...)üretebileceğiniz i'inci sayısının yanı i(i+1)/2:

$number = 5;
for ($i = 1; $i <= $number; $i++) {
    echo str_repeat('*', $i * ($i + 1) /2) . str_repeat('0', $i) . PHP_EOL;
}

Çıktı:

*0
***00
******000
**********0000
***************00000

3v4l.org'da demo

Çıktının üçgen kısmının daha gerçek bir nesli için (yani 1'den 1'e kadar olan sayıların toplamı i), her yinelemede çıktıya $i *'ve 1' ekleyen bu kodu kullanabilirsiniz 0:

$line = '';
$number = 5;
for ($i = 1; $i <= $number; $i++) {
    $line = str_repeat('*', $i) . $line . '0';
    echo $line . PHP_EOL;
}

Çıktı:

*0
***00
******000
**********0000
***************00000

3v4l.org'da demo


1
PHP_EOLtaşınabilir #justsayin
Phil

@Phil komik ... Geçmişte PHP_EOL kullandığımda aşırı karmaşıklık nedeniyle eleştirildim ... ama şahsen sana katılıyorum ve güncelleyeceğim.
Nick

3

Değiştirme mantığının daha gerçek bir okumasını kullanan başka bir yol. Burada, önceki satırı alarak *ve *bölüme satır numarası miktarını ekleyerek sonraki satırları oluşturuyorum ve sadece yeni bir sıfır üzerinde etiketliyoruz.

$line = "*0";
$max = 5;
$counter = 1;

do {
    echo $line . "\n";
    $line = preg_replace("/(\*+)/", "\\1" . str_repeat("*", ++$counter), $line) . "0";
} while ($counter <= $max);

Bu yazdırır:

*0
***00
******000
**********0000
***************00000

0

Sıfır sayısı for döngüsünde $ i değerine eşittir. Bu yüzden sadece yıldız sayısını hesaplamamız ve ardından str_repeat

$count = 5;

for ($i=1; $i <= $count; $i++) {

  $stars = 0;
  for($j=1; $j <= $i; $j++) {
    $stars = $stars + $j;
  }

  echo str_repeat('*', $stars).str_repeat('0', $i)."\n";
}

Çıktı:

*0
***00
******000
**********0000
***************00000

0
$line = '';

for ($i = 1; $i <= 5; $i++) {

   $line = str_repeat('*', $i) . $line . '0'; // **str_repeat()** --> getting string length

   echo $line . PHP_EOL; // **PHP_EOL** ---> represents the endline character.

}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.