APL, 36, 34, 39 36 33 29 27
*+/x={(∇⍣(⊃x>¯1↑⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Ausgabe 1wenn Keith, 0sonst
GolfScript schlägt wieder zu !!
Bearbeiten
+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Verwenden von Right-reduction ( ⊢/) anstelle von Take minus 1 (¯1↑ ) verwenden, wird 1 Zeichen direkt und 1 Zeichen indirekt aus Disclose ( ⊃) gespeichert.
Erläuterung
⍎¨⍕x←⎕ Nimmt ausgewertete Eingaben (als Zahl behandelt) und weist sie zu x . Konvertiert es in ein Zeichenfeld (in anderen Sprachen auch als "Zeichenfolge" bezeichnet) und durchläuft jedes Zeichen (Ziffer) in einer Schleife, um es in eine Zahl umzuwandeln. Dies ergibt also ein numerisches Array der Ziffern.
{(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}ist die "Schleifen" -Funktion:
+/⍵↑⍨-⍴⍕xNimmt die letzten ⍴⍕x( xAnzahl der Ziffern in ) Zahlen aus dem Array und summiert sie.
⍵,verkettet es an das Ende des Arrays.
(x>⊢/⍵)Überprüfen Sie, ob die letzte Nummer im Array (die noch nicht +/⍵↑⍨-⍴⍕xverkettet ist) kleiner ist als xund 1oder zurückgibt0
∇⍣ diese Funktion auf dem neuen Array so oft ausführt. Wenn also die letzte Zahl kleiner als ist x, wird diese Funktion wiederholt. Anderenfalls geben Sie einfach das neue Array zurück
Nach dem Ausführen der Funktion enthält das Array die Summen bis zu dem Punkt, an dem 2 der Zahlen größer oder gleich sind x(z. B. 14werden generiert 1 4 5 9 14 23, 13werden generiert 1 3 4 7 11 18 29).
Überprüfen Sie schließlich, ob jede Zahl gleich ist, xund geben Sie die Summe der resultierenden Binärzahl aus Array.
Bearbeiten
1=+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Es wurden 2 Zeichen hinzugefügt :-(, um eine Ausgabe zu machen, 0wenn die Eingabe eine Ziffer ist
Noch eine Änderung
+/x=¯1↓{(∇⍣(x>⊢/⍵))1↓⍵,+/⍵}⍎¨⍕x←⎕
Erläuterung
Die Funktion löscht nun die erste Zahl ( 1↓) aus dem Array, anstatt die letzte ⍴⍕x( ↑⍨-⍴⍕x) zu nehmen.
Dieser Ansatz ist jedoch 1=nicht ausreichend, um einstellige Zahlen zu verarbeiten. Daher löscht es jetzt die letzte Zahl aus dem Array, bevor es die Gleichheit mit überprüft xund 1 Zeichen hinzufügt
Sie haben es erraten: BEARBEITEN
+/x=1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
Vergleicht xmit dem neu hinzugefügten Element anstelle des alten letzten Elements. Löschen Sie daher das erste (anstelle des letzten) Element, bevor Sie die Gleichheit mit überprüfenx löschen und ein Minuszeichen zu speichern. Speichert weitere 3 mit einer anderen Form des Power-Operators ( ⍣)
Und es erscheint eine 25-stellige Antwort (Orz)
Letzte Bearbeitung
x∊1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
Ich kann nicht glauben, dass ich das verpasst habe.
Kann es nicht mehr Golf spielen.