EDYCJA: Przyjmę odpowiedź w poniedziałek, 15.02.2016. Niech bajty będą zawsze na twoją korzyść!
W swoim wyzwaniu „Print the N-Bonacci Sequence” @DJMcGoathem opisuje sekwencje N-bonacci, w których sumuje się poprzednie liczby N , zamiast tradycyjnych 2 sekwencji Fibonacciego (mówi się, że jest to „ sekwencja duo nacci”). Następnie poprosił o wzięcie dwóch sygnałów wejściowych, X i N, a następnie wypisanie X- tej liczby N- nacci.
Proponuję coś przeciwnego.
Biorąc pod uwagę sekwencję, wyjście, której N -sekwencja jest podzbiorem. Mówię „podzbiór”, ponieważ:
- A) sekwencje te są nieskończone
- B) jeśli podano początek sekwencji, możesz po prostu policzyć liczbę wiodących 1
W przypadku, gdy może należeć do wielu sekwencji N- nacci, wybierz najniższą.
W przypadku, gdy nie należy on do żadnej sekwencji N-nacci , twój program może zrobić cokolwiek innego niż wydrukować coś, co można pomylić z wyjściem. Zachowania te obejmują między innymi: nieskończoną pętlę, błąd, awarię, usunięcie samego siebie (* kaszel * czuwanie * kaszel *) lub tworzenie czarnej dziury (o ile ta czarna dziura nie wytwarza niczego, co mogłoby pomylić z prawidłowym wyjściem).
Przez wzgląd na to wyzwanie, te sekwencje zacząć 1. Oznacza to jakieś N -nacci sekwencja zaczyna się od N nich. Ponadto N. musi być dodatnią liczbą całkowitą. Więc nie -1-nacci itp.
Przypadki testowe:
1,1,1 -> 1
49, 97 -> 7
55, 89, 144 -> 2
1 -> 1
6765 -> 2
12, 23, 45, 89 -> 12
100, 199 -> 100
create a black hole (as long as this black hole does not produce anything that could be mistaken for valid output).
Mój, spirale czarnej dziury zbliżają się do złotego podziału! To musi być ważny wyjścia dla sekwencji duoacci!Odpowiedzi:
Ruby, 94
Jestem dość zaskoczony, jak daleko udało mi się zagrać w golfa w ramach tego samego algorytmu! Zacząłem z ponad 200!
Nie golfowany:
źródło
x=[1]*(s+z=a.size)
dokładnie działa?n == 1
, to nigdy nie będziemy zwiększać, więc potrzebujemy tablicy 1 bez względu na to, jak długo dane wejściowe są. Jeślin > 1
, to potrzebujemy co najmniejn
1 dla sekwencji. Więcs+a.size
obejmujen == 1
dowolną długośća
i obejmuje początek dowolnej innej sekwencji, więc możemy po prostu zacząć dodawaćs
cyfry z pola bitwy. Czy to ma sens?[1]*number
daje tablicę jedności o długościnumber
. Więcx=[1]*(s+z=a.size)
przypisujea.size
doz
, a następnie przypisuje dox
tablicy o długości 1s+z
.Python 2, 176 bajtów
Pamiętaj, że wymaga to wprowadzenia danych w tym formacie:
zamiast
Dość proste rozwiązanie, tylko po to, aby wszystko działało. Popracuję nad golfem, gdy ktoś inny odpowie. To używa nieco zmodyfikowanej wersji generatora N-Bonnaci z odpowiedzi @ Data , więc mu się podoba . Następnie dla każdego N-Bonnaci w zakresie danych wejściowych sprawdza, czy dane wejściowe są jego podsekwencją.
źródło
f.append
naf+=
;
konieczny?Lua,
324323 bajtówKiedy widzę inne przesłanie, mam wrażenie, że coś jest nie tak z moim kodem ... Ale potem pamiętam, że to Lua i nie ma tych wszystkich wymyślnych funkcji: ”(
To była świetna zabawa, właściwie zajęło mi to trochę czasu.
Edycja: Zapisano 1 bajt za pomocą prostej sztuczki: używając
::label::
+goto label
zamiast nieskończonej pętli zakończonejwhile''
.Niegolfowane i objaśnienia
Lua nie ma sposobu na zdefiniowanie zestawu, podzbioru, a nawet sprawdzenie, czy tablica / tabela zawiera wartość bez użycia jej indeksu / klucza. Właśnie dlatego postanowiłem usunąć elementy z tablicy, którą biorę jako parametr. w ten sposób rejestruję, które elementy zostały już obliczone i czy pasowały.
Możesz wypróbować Lua online , a także skopiować / wkleić poniższy przykład kodu, aby uruchomić niektóre testy. Ponieważ ta funkcja kończy działanie, gdy znajdzie odpowiedź (w przeciwnym razie nieskończona pętla), będziesz musiał zmienić indeks
test[]
używanego (nie zapomnij, że lua ma indeks 1) :).źródło