Bei dieser Code - Abfrage müssen Sie die Anzahl der Wege berechnen, um zu erreichen, beginnend mit indem Sie Karten der Form (mit eine nicht negative ganze Zahl ist), und zwar in der minimalen Anzahl von Schritten.
(Beachten Sie, dass dies mit der OEIS-Sequenz A307092 zusammenhängt .)
Beispiel
Zum Beispiel ist weil drei Maps erforderlich sind und es zwei unterschiedliche Sequenzen von drei Maps gibt, die bis senden :
Daraus ergeben sich oder .
Beispielwerte
f(2) = 1 (via [])
f(3) = 1 (via [0])
f(4) = 1 (via [1])
f(5) = 1 (via [1,0])
f(12) = 2 (via [0,2] or [2,1])
f(13) = 2 (via [0,2,0] or [2,1,0], shown above)
f(19) = 1 (via [4,0])
f(20) = 2 (via [1,2] or [3,1])
f(226) = 3 (via [2,0,2,1,0,1], [3,2,0,0,0,1], or [2,3,0,0,0,0])
f(372) = 4 (via [3,0,1,0,1,1,0,1,1], [1,1,0,2,0,0,0,1,1], [0,2,0,2,0,0,0,0,1], or [2,1,0,2,0,0,0,0,1])
Herausforderung
Die Herausforderung besteht darin, ein Programm zu erstellen, das eine ganze Zahl als Eingabe verwendet und die Anzahl der unterschiedlichen Pfade von bis über eine minimale Anzahl von Abbildungen der Form .
Das ist Code-Golf , also gewinnen die wenigsten Bytes.
code-golf
sequence
combinatorics
Peter Kagey
quelle
quelle
^
Symbol Exponentiation bezeichnet. Es könnte auch XOR sein (zum Beispiel C^
für bitweises XOR).x -> x + x^j
Antworten:
Gelee , 16 Bytes
Probieren Sie es online!
Ein vollständiges Programm, das als Argumentn und die Anzahl der Wege zurückgibt, um n Verwendung der minimalen Pfadlänge zu erreichen. Ineffizient für größere n .
quelle
JavaScript (ES6),
111 ... 8480 BytesGibt für n = 2 eher wahr als1 n = 2 .
Probieren Sie es online!
Kommentiert
quelle
Haskell ,
7875 BytesDiese Implementierung verwendet eine erste Suche im "Baum" aller iterativ erforderlichen Zuordnungen
x -> x + x^j
.Probieren Sie es online!
Erläuterung
quelle
05AB1E , 17 Bytes
Probieren Sie es online!
quelle
Python 2 , 72 Bytes
Probieren Sie es online!
quelle
Perl 5 (
-lp
), 79 BytesTIO
quelle
CJam (27 Bytes)
Online-Demo
Warnung: Dies wird sehr schnell sehr speicherintensiv.
Präparation:
Die Boni
2
s (um den Sonderfall der Eingabe zu behandeln2
, dawhile
Schleifen teurer sind alsdo-while
Schleifen) bedeuten, dass die Größe der Liste sehr schnell wächst, und die Verwendung von Exponenten bis zun-1
bedeutet, dass die Werte der größeren Zahlen in der Liste zunehmen sehr schnell.quelle
Haskell , 65 Bytes
Probieren Sie es online!
Die Breitensuche von Golfing Flawr . Ich habe auch versucht rückwärts zu fahren
n
, aber es war länger:73 Bytes
Probieren Sie es online!
quelle
R ,
7877 BytesProbieren Sie es online!
Verwenden einer vereinfachten Breitensuche
Abgerollter Code mit Erklärung:
Kürzere Version mit großer Speicherbelegung (Fehler bei größeren Fällen):
R ,
7069 BytesProbieren Sie es online!
-1 Byte dank @RobinRyder
quelle
!(a<-sum(x==n))
könnte!{a=sum(x==n)}
in beiden Fällen für -1 Byte sein.Pyth , 24 Bytes
Probieren Sie es online!
Dies sollte die richtige Ausgabe erzeugen, ist jedoch sehr langsam (der 372-Testfall läuft bei TIO ab). Ich konnte es kürzer machen durch den Austausch
.lQ2
mitQ
, aber dies würde die Laufzeit horrende machen.Hinweis: Es wird keine Ausgabe für nicht erreichbare Nummern erstellt( n ≤ 1 )
Erläuterung
quelle