Şimdi Ara

Verilen bir sayının 'Happy Number' olup olmadığını bulmak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
234
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Verilen bir sayının 'Happy Number' olup olmadığını bulmak


    Örneğin verilen sayı 49 :
     
    # 49 -> 4 kare + 9 kare = 97
    # 97 -> 9 kare + 7 kare = 130
    # 130 -> 1 kare + 3 kare + 0 kare = 10
    # 10 -> 1 kare + 0 kare = 1 (happy number)


    1'e düştüğü için MUTLU

    Verilen sayı: 89
     
    # 89 -> 8 kare + 9 kare = 145
    # 145 -> 1 kare + 4 kare + 5 kare = 42
    # 42 -> 4 kare + 2 kare = 20
    # 20 -> 2 kare + 0 kare = 4 (not happy number)


    4 'e düştüğü için, 1'e düşmediği için MUTSUZ

    Bu kritere göre verilen sayının mutlu olup olmadığını bulan kod yazınız.

    < Bu ileti mini sürüm kullanılarak atıldı >







  • Kod

    Yığını:
    print((lambda f: (lambda x: f(lambda v: x(x)(v)))(lambda x: f(lambda v: x(x)(v))))(lambda f: (lambda x: sum(list(map(lambda k:int(k)*int(k),list(x)))) if sum(list(map(lambda k:int(k)*int(k),list(x))))<10 else f(str(sum(list(map(lambda k:int(k)*int(k),list(x))))))))(input())==1)

    2 satirda daha rahat oluyor. 1 satira indirmek icin fixed point combinator kullanmam gerekti.

  • Kod

    Yığını:
    (bool, int) MutluNumara(int sayi) => sayi != 1 && sayi.ToString().Length == 1 ? (false, sayi) : sayi == 1 && sayi.ToString().Length == 1 ? (true, sayi) : MutluNumara(sayi.ToString().ToList().Sum(z => (z - 48) * (z - 48))); Console.Write(MutluNumara(Convert.ToInt32(Console.ReadLine())).Item1);

    gibi

  • Çözümler güzel fakat özellikle Python versiyonunu okumak biraz zor. Raku ile hem daha kısa ve okunabilir hem de Türkçe çıktı verecek şekilde 1 satırda yapılabiliyor:

    Verilen bir sayının 'Happy Number' olup olmadığını bulmak


    2. satır, girilen degere kadar tüm mutlu sayıları diziyor. Ana fonksiyonu sub'a atıp bu iki satırı sadeleştirmek mümkün fakat uğraşmadım.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 20 Eylül 2020; 12:14:0 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.