Bulmaca: Sıra sıra sayılar

Bulmaca çözmeyi sevenler için bir soru daha: Aşağıdaki gibi bir tablo verilmiş. Tabloda her satır bir önceki satırdan belli bir kuralla üretiliyor.

1
1 1
2 1
1 2 1 1
1 1 1 2 2 1
3 1 2 2 1 1

Genel kuralı görebiliyorsanız, bir program yazarak ellinci satırda kaç rakam olacağını bulabilir misiniz?

İpucu: Sayıları sesli okuyun.

Cevabı haftaya.

Reklamlar

Kaan Öztürk hakkında

Kaan Öztürk İstanbul’da doğdu. İstanbul Lisesi ve Boğaziçi Fizik mezunu. Rice Üniversitesi‘nde uzay fiziği alanında doktora yaptı. Işık ve Yeditepe üniversitelerinde ders verdi. 2015-2016 döneminde Rice'da ziyaretçi araştırmacı olarak çalıştı. Bugünlerde Sabancı Üniversitesi'nde optimizasyon ve yapay öğrenme konularında doktoraüstü araştırmacı olarak çalışıyor.

21 Mart 2012 tarihinde İlginç Şeyler içinde yayınlandı ve , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin. 10 Yorum.

  1. anadoluhayvani

    Zormuş bu hocam. Uydurduğum kural verilen kısma uyuyor ama istenilen kural olup olmadığında emin değilim, değilse bir satıra daha ihtiyaç olabilir.

    – Önce bir satırda başta tekrar eden rakamlar varsa topuyoruz.
    – Kalan rakamları küçükten büyüğe diziyoruz.
    – Bir önceki satırın son iki rakamını da en sona ekliyoruz.
    – Eğer arzu ediyorsak üzerini fıstık veya hindistan ceviziyle süsleyebiliriz.

    Örneğin; 4. satırda başta tekrar eden terim yok, kalanı sıraya dizince 1112 oluyor, sonuna 21 ekleyince 5. satır 111221 oluyor. Burada ilk üç satırda 1’ler tekrar ettiği için toplayıp 3 yazıyorum. Ardından kalan 221’i sıraya dizin 122 olarak ekliyorum, 3122 oluyor, en sonunda da bir önceki satırın 11’ini ekliyorum: 312211.

    Neticede ortaya çirkin bir kod ve bir o kadar çirkin sayılar çıkıyor (50. satırda 2’ler 3’ler uçuşuyor, 50 adet rakamı var):


    m = [”, str(1), str(11)]
    for i in range(3,51):
    m.append(”)
    test = m[i-1]
    toplam = int(test[0])
    for str_len in range(len(test)-1):
    if int(test[str_len]) == int(test[str_len+1]):
    toplam += int(test[str_len+1])
    last_index = str_len + 1
    else:
    break
    sira = ”.join(sorted(list(m[i-1])))
    if toplam == int(test[0]):
    m[i]+=sira
    m[i]+=m[i-2][-2:]
    else:
    m[i]+=str(toplam)
    m[i]+=sira[last_index+1:]
    m[i]+=m[i-2][-2:]

    • anadoluhayvani

      Aşağıdaki, erdoğan’ın cevabı daha mantıklı. Soruların birden çok cevabı olabilmesini kültürel zenginlik olarak görelim madem:)

      Bu arada, programlamayla ilişkili bulmacaların çok faydası oluyor, devamını bekliyorum. Beyin cimnastiğinin yanı sıra, kod yazımıyla ilgili de rutin işlerde pek kullanılmayan birçok şey öğrenmiş oldum.

      Selamlar,

      • Asıl keyif çözmekte değil, çözmeye çalışmakta zaten.

        Benim de hoşuma gidiyor böyle bulmacalar; buldukça paylaşırım. Benzer problemler için projeteuler.net sitesini tavsiye ederim; darı ambarına düşmüş tavuk gibi olacağınız garanti.

  2. 1
    1 tane 1
    2 tane 1
    1 tane 2, 1 tane 1
    1 tane 1, 1 tane 2, 2 tane 1
    3 tane 1, 2 tane 2, 1 tane 1
    tekrar eden rakamların adet ve kendisi şeklinde gidiyor
    50. satır için PHP ile bişeyler yazıp 894810 hane buldum
    biraz dağınık olacak ama;
    $j=”1″;
    for($i=1;$i<=49;$i++){
    $a=str_split($j);
    $l=1;
    $m=0;
    $tj="";
    for($x=0;$x < count($a);$x++){
    $nx=$x+1;
    if(isset($a[$nx]) && $a[$x]==$a[$nx]){
    $l++;
    }else{
    $tj.=$l.$a[$x];
    $m=$a[$x];
    $l=1;
    }
    }
    $j=$tj;
    unset($tj);
    }
    echo strlen($j);

    • Doğru, tebrikler. Ama 50. satırın uzunluğu, yanılmadıysam, 1166642 basamak. Sizin verdiğiniz 894810 da doğru, ama o 49.satırın uzunluğu (“1″i birinci satır sayarak).

  3. 🙂 Valla ben sadece kuralı bulduğumu düşünüyorum. Ama program yazarak 50. sırayı bulmak bana göre değil.:))) 4. satır şöyle herhalde 13112221,5.satır 1113213211…

  4. İlginiz ve katkılarınız için teşekkürler. Biraz daha etraflı olarak https://mkoz.wordpress.com/2012/03/28/sira-sira-sayilar-cozum/ başlığı altında anlattım.

    50. satırda 1 166 642 basamak olacak.

  1. Geri bildirim: Sıra sıra sayılar — çözüm | Kaan Öztürk

  2. Geri bildirim: Sıra sıra sayılar — çözüm | Kaan Öztürk Blog

Bir Yanıt Bırakın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: