APL, 36 34 39 36 33 29 27
*+/x={(∇⍣(⊃x>¯1↑⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
1Keith varsa çıktı , 0aksi takdirde
GolfScript tekrar saldırıyor !!
Düzenle
+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
⊢/Eksi 1 ( ) yerine Sağ azaltma ( ) kullanmak ¯1↑, doğrudan 1 karakter kaydetmek ve 1 değerini Disclose ( ⊃) öğesinden dolaylı olarak kaydetmek
açıklama
⍎¨⍕x←⎕değerlendirilmiş girişi alır (sayı olarak kabul edilir) ve atar x. Bir karakter dizisine dönüştürür (diğer dillerde "dize" olarak da bilinir) ve her karakterde (rakam) döngü yaparak bir sayıya dönüştürür. Bu rakamların sayısal bir dizisi ile sonuçlanır.
{(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}ana "döngü" fonksiyonudur: dizideki
+/⍵↑⍨-⍴⍕xson ⍴⍕x(basamak xsayısı) sayıları toplar ve toplar.
⍵,dizinin sonuna kadar birleştirir.
(x>⊢/⍵)dizideki son numaranın ( +/⍵↑⍨-⍴⍕xhenüz bitiştirilmemiş) küçük olup olmadığını kontrol edin ve bu işlevi yeni dizide birçok kez xdöndürür 1veya 0
∇⍣yürütür. Eğer son sayı daha küçükse x, bu fonksiyon tekrar eder. Aksi takdirde yeni diziyi döndürmeniz yeterlidir
İşlevi yürüttükten sonra, dizi, sayıların 2'sinden büyük veya ona eşit olan noktaya kadar toplamları içerir x(örneğin 14, üretecektir 1 4 5 9 14 23, 13üretecektir 1 3 4 7 11 18 29)
Son olarak, her sayının xsonuçtaki ikilinin eşit olup olmadığını kontrol edin dizi.
Düzenle
1=+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
0Giriş tek basamaklıysa çıktı yapmak için 2 karakter :-( eklendi
Yine başka bir düzenleme
+/x=¯1↓{(∇⍣(x>⊢/⍵))1↓⍵,+/⍵}⍎¨⍕x←⎕
açıklama
Fonksiyon şimdi 1↓, last ⍴⍕x( ↑⍨-⍴⍕x) sayısını almak yerine dizideki ilk sayıyı ( ) bırakır .
Ancak, bu yaklaşım 1=tek haneli sayıları işlemek için yeterli değildir. Böylece x, eşitliği kontrol etmeden önce diziden son sayıyı düşürüyor ve 1 karakter ekliyor.
Tahmin ettiniz: EDIT
+/x=1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
xEski son öğe yerine yeni eklenen öğeyle karşılaştırır , bu nedenle eşitliği kontrol etmeden önce ilk (son yerine) öğeyi bırakmak xyeterli olur, eksi işareti kaydedilir. Power operatörünün başka bir biçimini kullanarak başka bir 3 kaydeder ( ⍣)
Ve 25 karakterlik bir cevap görünür (Orz)
Son düzenleme
x∊1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
Bunu özlediğime inanamıyorum.
Artık golf olamaz.