W tym wyzwaniu kodu będziesz musiał obliczyć liczbę sposobów osiągnięcia zaczynając od używając map w postaci (z nieujemną liczbą całkowitą) i robiąc to w minimalnej liczbie kroków.
(Uwaga: jest to związane z sekwencją OEIS A307092 .)
Przykład
Na przykład ponieważ wymagane są trzy mapy, i istnieją dwie odrębne sekwencje trzech map, które wyślą do :
Wynikający z lub .
Przykładowe wartości
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])
Wyzwanie
Wyzwanie polega na stworzeniu programu, który przyjmuje liczbę całkowitą jako dane wejściowe i wyprowadza liczbę różnych ścieżek od do poprzez minimalną liczbę map w postaci .
To jest golf golfowy , więc wygrywa najmniej bajtów.
code-golf
sequence
combinatorics
Peter Kagey
źródło
źródło
^
symbol oznacza potęgowanie. Może to być również XOR (na przykład C używa^
bitowego XOR).x -> x + x^j
Odpowiedzi:
Galaretka , 16 bajtów
Wypróbuj online!
Pełny program przyjmuje jako argumentn i zwraca liczbę sposobów osiągnięcia n przy użyciu minimalnej długości ścieżki. Nieefektywne dla większych n .
źródło
JavaScript (ES6),
111 ... 8480 bajtówWypróbuj online!
Skomentował
źródło
Haskell ,
7875 bajtówTa implementacja wykorzystuje pierwsze wyszukiwanie w „drzewie” iteracyjnie wszystkich niezbędnych mapowań
x -> x + x^j
.Wypróbuj online!
Wyjaśnienie
źródło
05AB1E , 17 bajtów
Wypróbuj online!
źródło
Python 2 , 72 bajty
Wypróbuj online!
źródło
Perl 5 (
-lp
), 79 bajtówTIO
źródło
CJam (27 bajtów)
Demo online
Ostrzeżenie: bardzo szybko zapełnia się pamięć.
Sekcja:
Premia
2
s (do obsługi specjalnego przypadku wprowadzania2
, ponieważwhile
pętle są droższe niżdo-while
pętle) oznacza, że rozmiar listy rośnie bardzo szybko, a użycie wykładników w góręn-1
oznacza, że rosną wartości większych liczb na liście bardzo szybki.źródło
Haskell , 65 bajtów
Wypróbuj online!
Gra w golfa Flawr po raz pierwszy . Próbowałem też cofnąć się
n
, ale było to dłużej:73 bajty
Wypróbuj online!
źródło
R ,
7877 bajtówWypróbuj online!
Korzystanie z uproszczonego wyszukiwania pierwszego zakresu
Kod rozwinięty z wyjaśnieniem:
Krótsza wersja z ogromnym przydziałem pamięci (nie działa w większych przypadkach):
R ,
7069 bajtówWypróbuj online!
-1 bajt dzięki @RobinRyder
źródło
!(a<-sum(x==n))
!{a=sum(x==n)}
w obu przypadkach może wynosić -1 bajt.Pyth , 24 bajty
Wypróbuj online!
Powinno to dać poprawne wyjście, ale jest bardzo wolne (372 przypadków testowych przekroczyło limit czasu dla TIO). Mogłem go skrócić, zastępując
.lQ2
goQ
, ale to spowodowałoby, że środowisko wykonawcze byłoby przerażające.Uwaga: Nie generuje danych wyjściowych dla nieosiągalnych liczb( n ≤ 1 )
Wyjaśnienie
źródło