Ne bu kod ile yanlış?

2 Cevap

Böyle giderse bir model vardır:

1
11
21
1211
111221
...

Ben çıktı bu PHP kod yazmak için çalışıyorum, ama benim çıktı:

1
11
21
12
11
21
12
...

İşte kod:

<?
$sequence = "1";

for ($i = 0; $i < 99; $i++) {

    echo "{$sequence}<br />";

    $n = 0;
    $x = 0;
    $z = 1;

    $newsequence = "";

    for ($y = count($sequence); $y > 0; $y--) {
        while ($sequence[$n] == $sequence[$n + 1]) {
            $z++;
            $n++;
        }

        $newsequence .= "{$z}{$sequence[$n]}";
    }	

    $sequence = $newsequence;
}

?>

Ne eksik?

2 Cevap

nickf 's noktaya ek olarak, $n sizin dizisi halinde endeksi, ama aynı olan iki komşu koşullarını bulmak eğer sadece güncellemek.

Örneğin sizin yeni dizisi "12" append olurdu demek, sizin dizisi "21" ise, size n bırakarak, while döngüsü atlamak istiyorum ve z değişmeden Sizin ise hala "2" sorgulama olurdu çünkü, ama sonra sonsuz bir döngü içine almak.

Eğer diziye yeni eklenen biraz sonra, 1 tarafından sayacını n artırmak, ve "tekrar sayacı" sıfırlamak gerekir z. Bir artış n Eğer aynı karakter onu izleyen yoktu baktı son karakterin geçmişte götürür. Ben (ne yazık ki PHP değil) aşağıdaki araya:

while(n < sequence.length) {
  while(n < sequence.length-1 && sequence(n) == sequence(n+1)) {
    z+=1
    n+=1
  }
  next += "%d%s".format(z,sequence(n))
  n+=1
  z=1
}

ve ben bu olsun:

11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
11131221133112132113212221

Hangi Senin ne peşinde olduğunu düşünüyorum.