APL, 36 34 39 36 33 29 27
*+/x={(∇⍣(⊃x>¯1↑⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
1
Keith varsa çıktı , 0
aksi 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
+/⍵↑⍨-⍴⍕x
son ⍴⍕x
(basamak x
sayısı) sayıları toplar ve toplar.
⍵,
dizinin sonuna kadar birleştirir.
(x>⊢/⍵)
dizideki son numaranın ( +/⍵↑⍨-⍴⍕x
henüz bitiştirilmemiş) küçük olup olmadığını kontrol edin ve bu işlevi yeni dizide birçok kez x
döndürür 1
veya 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 x
sonuçtaki ikilinin eşit olup olmadığını kontrol edin dizi.
Düzenle
1=+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
0
Giriş 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←⎕
x
Eski 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 x
yeterli 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.