Biorąc pod uwagę dodatnią liczbę całkowitą n wyjście, n -ta liczba sekwencji euro-iginal.
Obliczanie sekwencji
Ta sekwencja jest równa OEIS A242491 .
Liczba jest częścią tej sekwencji, jeśli liczba może być wykonana przy użyciu tylu różnych monet lub banknotów euro, ale tylko jednej z nich . Pamiętaj, że nie musisz brać pod uwagę centów.
Przykład:
6
byłoby w sekwencji, ponieważ może składać się z monety o nominale 1 euro i banknotu o nominale 5 euro.
4
NIE byłoby w sekwencji, ponieważ nie można jej utworzyć przy danych wymaganiach.
Aby dać wszystkim przegląd, oto lista wartości euro, które należy wziąć pod uwagę:
1 €, 2 €, 5 €, 10 €, 20 €, 50 €, 100 €, 200 €, 500 €
Zauważ, że ta sekwencja waha się tylko od 0 (tak, 0 jest wliczone!) Do 888.
Oto 15 pierwszych elementów tej sekwencji:
0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, ...
Przypadki testowe
Wejście -> Wyjście
2 -> 1
6 -> 6
21 -> 25
33 -> 50
a(1)=1
jak tabelę Oeis ?N<=512
?0
don=0
porządku.0->0; 1->1; 5->6; 20->25; 32->50; 511->888
zamiast1->0; 2->1; 6->6; 21->25; 33->50; 512->888
.Odpowiedzi:
Galaretka , 7 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 2 , 32 bajty
Wypróbuj online!
Python 2 , 34 bajty
Wypróbuj online!
źródło
Łuska ,
8 75 bajtówWypróbuj online! Edycja: -3 bajty dzięki Zgarb!
Słyszałem, że w przyszłości planowane jest przejście
İ€
do skończonej sekwencji[0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,...,500]
. Po zaimplementowaniu następujący kod powinien działać z liczbą bajtów 7:gdzie
↓6
upuszcza pierwsze sześć elementów sekwencji. Wypróbuj online!źródło
0
sekund do wyjścia?Σ!Ṗ↑9İ€
powinien zapisać bajt.İ€
zmianie implementacji . Że aktualnie powrocie2500
zamiast25
to po prostu zbieg okoliczności.↑9
, ponieważ tekst wyzwania nie wspomina o tym, co powinno się stać dla danych wejściowych powyżej 512.Perl 5 , 29 bajtów
Kod 28 bajtów + 1 dla
-p
.Wykorzystuje indeksowanie 0.
Wypróbuj online!
źródło
sprintf"%o",$_-1
, na przykład z powodu sekwencji indeksowanej od 12 -> 1
, chociaż sekwencja OEIS zaczyna się od 1-1
czasu wyjaśnienia PO!Galaretka , 11 bajtów
Wypróbuj online!
Bardzo dziękuję @Erik the Outgolfer za dużą pomoc na czacie!
Wyjaśnienie
źródło
Mathematica, 47 bajtów
Mathematica, 48 bajtów
-6 bajtów od Martina Endera
źródło
Join[x={1,2,5},10x,100x]
aSubsets@
.Java 8,
2826 bajtów0-indeksowane:
Port odpowiedzi Python 2 na @xnor (który był wcześniej usuwany, stąd oryginalna odpowiedź z 1 indeksacją poniżej).
Wypróbuj tutaj.
Stara 1-indeksowana odpowiedź ( 28 bajtów ):
Port odpowiedzi @Tfeld na Python 2 przed ostatnią edycją . Zamiast używać
~-
kilka razy,--n
zmniejsza sięn
o 1 zaraz po wejściu do funkcji lambda.Wypróbuj tutaj.
źródło
05AB1E , 7 bajtów
0-indeksowane.
Port galaretki pana Xcodera
Wypróbuj online!
Wyjaśnienie
źródło
8в4‰ε5β}J
(indeksowane 0)8в4‰J5öJ
8 z trikiem Dennisa. Twoja była lepiej przystosowana do 05AB1E :)Python 2 ,
403836 bajtówZainspirowany odpowiedzią xnor , ale używa indeksowania 1.
Wypróbuj online!
Python 2 ,
786562615856 bajtówWypróbuj online!
źródło
a(1)=1
jest dozwolone.Galaretka , 15 bajtów
0-indeksowane.
Wypróbuj online!
Wyjaśnienie
Jest to oparte na rozwiązaniu Python xnor , gdzie algorytm to n + n / 4 + n / 32 * 10 + n / 256 * 100 .
Ponieważ pierwsze n jest niezmodyfikowane, jest to to samo, co:
Ponieważ 4, 32 i 256 są potęgami dwóch, można je przełożyć na przesunięcia bitowe.
Golfowość nie tłumaczy się dobrze w Pythonie, ale zamiana list w ciągi galaretek indeksów stron kodowych zmniejsza liczbę bajtów Jelly.
Galaretka , 24 bajty
Wypróbuj online!
źródło
€
w kodzie. :) Ale -1, ponieważ po raz pierwszy odpowiedź Jelly jest dłuższa niż moja odpowiedź Java. XD Wstydź się (i gl & hf w golfa dalej). ;)Oktawa , 59 bajtów
Wypróbuj online!
Wyjaśnienie
Kod tworzy pełną sekwencję, a następnie indeksuje do niej.
Po pierwsze, binarne wyrażenia numerów
0
,1
...511
są generowane jako 512 × 9 matrycy:(
-48
część jest potrzebna, ponieważ wynikiemdec2bin
są znaki, a nie liczby). To dajeNastępnie obliczany jest produkt Kronecker
[1 2 5]
i[1 10 100]
i transponowane
co daje dziewięć możliwych wartości euro jako wektor 9 × 1:
Mnożenie macierzy powyższej macierzy i wektora
daje wektor 512 × 1 zawierający wszystkie możliwe liczby w sekwencji, z powtórzeniami i nieposortowane:
Deduplikacja i sortowanie
daje pełną sekwencję:
Wreszcie dane wejściowe są używane do indeksowania tej sekwencji
produkować dane wyjściowe.
źródło
Rubin ,
2827 bajtówWypróbuj online!
Wyjaśnienie
Wyjściowy ciąg ósemkowy, zamień cyfry 4..7 na 5..8
źródło
Narzędzia Bash + GNU, 20
Odczytuje indeks o indeksie zero od STDIN.
Wypróbuj online .
źródło
05AB1E , 20 bajtów
Wypróbuj online!
1-indeksowany, używając formuły
[(n%3)^2 + 1]*10^floor(n/3)
do generowania pierwszych 10 wyrazów, a następnie używając powerset do obliczenia wszystkich możliwych kombinacji ... Następnie sortuję i ciągnęa[b]
.Zobacz to w akcji poniżej:
źródło
JavaScript (ES6), 34 bajty
Lub 32 bajty przy użyciu poprawnego indeksowania 0:
źródło
n=1
dawać0
?Galaretka , 20 bajtów
Wypróbuj online!
Wiem, że jest to dłuższe niż istniejąca odpowiedź, ale myślę, że takie podejście można zastosować tutaj: P
-2 bajty dzięki Erikowi Outgolfer
źródło
1,10,ȷ2
->“¢½d‘
Siatkówka , 42 bajty
Wypróbuj online! Link zawiera przypadki testowe. 0-indeksowane. Wyjaśnienie:
Konwertuj z dziesiętnego na jednoargumentowy z
;
przyrostkiem.Konwertuj na liczbę ósemkową, ale nadal używając jednoargumentowej reprezentacji cyfr
;
po każdej jednostkowej wartości.Dodaj 1 do wartości 4-7.
Konwertuj każdą wartość plus jej przyrostek na dziesiętne.
źródło
Pyt , 12 bajtów
Używa czarów Dennisa .
Wypróbuj tutaj.
Pyth ,
16 1513 bajtówSprawdź wszystkie przypadki testowe.
Dzięki Erik the Outgofer za kilka pomysłów.
źródło
C , 67 bajtów
Bezpośredni port od Neila odpowiedzi JavaScript , ale pomyślałem, że należy to dodać dla kompletności.
Testowane na GCC w wersji 6.3.0. Wyrzuci kilka ostrzeżeń, ale i tak się skompiluje.
źródło