APL, 36 34 39 36 33 29 27
*+/x={(∇⍣(⊃x>¯1↑⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Wyjście, 1jeśli Keith, w 0przeciwnym razie
GolfScript uderza ponownie !!
Edytować
+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Użycie funkcji Right-redukcja ( ⊢/) zamiast Take minus 1 ( ¯1↑) bezpośrednio zapisuje 1 znak i pośrednio zapisuje 1 z Disclose ( ⊃)
Wyjaśnienie
⍎¨⍕x←⎕pobiera dane wejściowe (traktowane jako liczba) i przypisuje je do x. Konwertuje go na tablicę znaków (inaczej „ciąg” w innych językach) i zapętla każdy znak (cyfrę), konwertując go na liczbę. W rezultacie powstaje tablica liczbowa cyfr.
{(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}jest główną funkcją „pętli”:
+/⍵↑⍨-⍴⍕xpobiera ostatnie ⍴⍕x(liczbę cyfr w x) liczby z tablicy i sumuje je.
⍵,konkatenuje to do końca tablicy.
(x>⊢/⍵)sprawdzić, czy ostatnia cyfra na tablicy (które nie zostały +/⍵↑⍨-⍴⍕xjeszcze łączone) jest mniejszy niż xi powroty 1lub 0
∇⍣Wykonuje tę funkcję w nowej tablicy, że wiele razy. Więc jeśli ostatnia liczba jest mniejsza niż x, ta funkcja się powtarza. W przeciwnym razie po prostu zwróć nową tablicę
Po wykonaniu funkcji tablica zawiera sumy do punktu, w którym 2 liczby są większe lub równe x(np. 14Wygeneruje 1 4 5 9 14 23, 13wygeneruje 1 3 4 7 11 18 29)
Na koniec sprawdź, czy każda liczba jest równa xi wypisz sumę wynikowego pliku binarnego szyk.
Edytować
1=+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Dodano 2 znaki :-(, aby dane wyjściowe były 0jednocyfrowe
Jeszcze jedna edycja
+/x=¯1↓{(∇⍣(x>⊢/⍵))1↓⍵,+/⍵}⍎¨⍕x←⎕
Wyjaśnienie
Funkcja usuwa teraz pierwszą liczbę ( 1↓) z tablicy zamiast brać ostatnią ⍴⍕x( ↑⍨-⍴⍕x).
Jednak takie podejście 1=nie jest odpowiednie do obsługi liczb jednocyfrowych. Więc teraz usuwa ostatnią liczbę z tablicy przed sprawdzeniem równości x, dodając 1 znak
Zgadłeś: EDYCJA
+/x=1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
Porównuje xdo nowo dodanego elementu zamiast starego ostatniego elementu, więc xwystarczy upuścić pierwszy (zamiast ostatniego) element przed sprawdzeniem równości, aby zapisać znak minus. Zapisuje kolejne 3 za pomocą innej formy operatora Power ( ⍣)
I pojawia się 25-znakowa odpowiedź gs (Orz)
Ostatnia edycja
x∊1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
Nie mogę uwierzyć, że to przegapiłem.
Nie mogę już dłużej grać w golfa.