Sekwencja van der Corputa jest jednym z najprostszych przykładów sekwencji o niskiej rozbieżności . Jego n
-ty termin jest po prostu 0.(n written in base 10 and mirrored)
, więc jego pierwsze terminy to:
0.1
, 0.2
, 0.3
, 0.4
, 0.5
, 0.6
, 0.7
, 0.8
, 0.9
,
0.01
, 0.11
, 0.21
, 0.31
, 0.41
, 0.51
, 0.61
, 0.71
, 0.81
, 0.91
,
0.02
, 0.12
, 0.22
, 0.32
, 0.42
, 0.52
, 0.62
, 0.72
, 0.82
, 0.92
, ...
Wyzwanie
Napisz program lub funkcję w dowolnym języku programowania, który przyjmuje jako liczbę dodatnią liczbę całkowitą n
mniejszą niż 10^6
i zwraca lub drukuje pierwsze n
warunki sekwencji van der Corputa. Format wyjściowy może być listą liczb zmiennoprzecinkowych, listą ciągów formularza 0.digits
lub unikatowym ciągiem, w którym terminy są oddzielone przecinkami i / lub spacjami, znakami nowej linii.
Standardowe luki są zabronione. Najkrótszy kod źródłowy wygrywa.
Oracle SQL 11.2,
646258 bajtówStara wersja
Łączenie „” z liczbą powoduje rzut na ciąg. Jest o 2 bajty krótszy niż przy użyciu TRIM (), który jest krótszy niż TO_CHAR ().
Ponieważ łączenie łańcucha z NUMBER powoduje utworzenie łańcucha, można go używać do zarządzania „0”. część wyniku.
źródło
CJam,
1411 bajtówDzięki Sp3000 za oszczędność 3 bajtów.
Sprawdź to tutaj.
Wyjaśnienie
źródło
Perl 6,
242220 bajtówDzięki Aleks-Daniel Jakimenko-A. jeszcze dwa bajty
stara wersja
EDYCJA: Dzięki raiph za dodatkowe 2 bajty
stosowanie
źródło
{("0."~.flip for ^$_)}
zapisuje 2 bajtyMathematica, 40 bajtów
Przypadek testowy
źródło
Pyth, 8 bajtów
Wypróbuj online.
To naprawdę tylko połączenie tego i tej odpowiedzi. Dlatego robię z niej wiki społeczności.
źródło
Pyth, 11 bajtów
Wypróbuj tutaj!
Wyjaśnienie
źródło
Pyth - 10 bajtów
Wypróbuj online tutaj .
źródło
VSQ...
JavaScript (ES6), 58
Anonimowa funkcja zwracająca ciąg znaków z wartościami oddzielonymi przecinkami
TEST
źródło
MATL , 10 bajtów
Wypróbuj online!
źródło
Haskell,
36, 27 bajtówDwa bajty zapisane przez nich i dodatkowe 7 przez Lynn.
źródło
f n=reverse.show<$>[1.0..n]
Brachylog , 23 bajty
Pobiera to liczbę jako dane wejściowe i wyprowadza wynik do STDOUT, oddzielone spacjami.
Dość bezpośredni. Niestety musimy połączyć liczbę z pustym ciągiem, aby przekonwertować ten numer na ciąg (
:""rc
), ponieważ nie ma jeszcze wbudowanego predykatu konwersji.Konwersja na ciąg jest konieczna, ponieważ jeśli odwrócimy cyfry liczby, wówczas wiodące zera (np.
10
Stają się01
) zostaną utracone.źródło
PowerShell, 52 bajty
Trochę dłużej, niż chciałbym, ale używa kilku schludnych sztuczek.
while
Pętla jest oczywista, ale uwarunkowane jest trochę trudne - mamy$a
(która rozpoczyna się$null
przy pierwszym odwoływać), a następnie odjąć nasz numer wejściowy$args[0]
. W PowerShell operacje matematyczne$null
traktują to jako zero, więc20
na przykład dla danych wejściowych spowoduje to-20
. Ponieważ dowolna liczba niezerowa jest$true
, warunek pętli będzie$true
aż do$a
zrównania się z naszą liczbą wejściową (w tym momencie odejmowanie będzie równe0
lub$false
). Sztuką pochodzi z post-przyrostu++
, która nie została wykonana dopiero po odejmowanie jest obliczana, więc obsługa wejście1
poprawnie wyjścia0.1
, a następnie zatrzymać pętlę na następnej iteracji.Za każdym razem w pętli tworzymy po prostu literał łańcuchowy, który zostaje pozostawiony w potoku i odpowiednio wyprowadzany. Konstruujemy to z
"0."
konkatenacji z wynikiem jednoargumentowego-join
operatora, który działał na tablicę znaków utworzoną z pobierania łańcucha"$a"
do tyłu (przez indeksowanie przez zakres"$a".length..0
).Testuje się
źródło
Bash, 36 bajtów
Pobiera liczbę jako argument wiersza poleceń i wyświetla każdy termin w osobnej linii. Na przykład:
źródło
seq -f%g.0 $1|rev
.seq
sformatować dane wyjściowe.Japt, 12 bajtów
Przetestuj online!
Jak to działa
źródło
wosk pszczeli ,
5753 bajtyPracując nad problemem wyjścia cyfr binarnych dla kodu rozeta zauważyłem, że mogę użyć tego samego algorytmu krótkiego podziału dla sekwencji van der Corput, używając po prostu dzielenia i modulo przez 10 zamiast 2. Wyjście jest odwrócone w obu przypadkach.
Zmniejszone o 4 bajty, odzwierciedlając kod:
Sześciokątny ładny odcisk dla łatwiejszej orientacji:
Objaśnienie jednego cyklu w programie przy użyciu oryginalnego kodu:
Przykład:
źródło
R, 59 bajtów
wyjaśnienie
example(strsplit)
tworzy funkcjęstrReverse
(to powinno być oczywiste)Za pomocą
IRanges::reverse
tego można golfować do 47 bajtówźródło
Python 3, 47 bajtów
krótsze rozwiązanie z Python 2
Przypadek testowy
źródło
f=
nie jest wymagane, więc ma 47 bajtów.n-1
warunki.lambda n:['0.'+`i+1`[::-1]for i in range(n)]
jest krótszy, jeśli używasz Python 2. Ponadto nie powinieneś mówić „Python 3.5”, chyba że wymaga 3.5, czego nie robi. Ta wersja wymaga𝔼𝕊𝕄𝕚𝕟, 12 znaków / 15 bajtów
Try it here (Firefox only).
W porządku.
Wyjaśnienie
⩤⁽1ï⒨
tworzy zakres[1,ï]
do odwzorowania,ß)
konwertuje mapitem (liczba) na ciąg,Ė⍞.0
konkatuje.0
do końca iᴙ
odwraca cały ciąg.źródło
Python 2, 54 bajtów
Wyjaśnienie:
Iteruj przez zestaw
[1,input)
i dołącz odwróconyi
do.
.Nadal być golfem więcej.
źródło
`i`
zamiaststr(i)
. Myślę też, że musisz wydrukować wiodące zero.PHP,
4541 bajtówPobiera argument wejściowy z CLI. Uruchom tak:
źródło
Siatkówka, 39 bajtów
Pobiera dane wejściowe jednoargumentowe.
Wypróbuj online tutaj.
źródło
Gema, 45 znaków
Przykładowy przebieg:
źródło
Julia ,
50383331 bajtówWybrałem inny format wyjściowy, aby skrócić kod o 12 bajtów. Funkcja zwraca teraz tablicę ciągów. Skrócony o 5 kolejnych bajtów. Podziękowania dla Alexa A. za przypomnienie mi o interpolacji ciągów i korzystanie z anonimowej funkcji (pozbycie się 2 kolejnych bajtów).
lub alternatywnie
Test
źródło
n->["0."reverse("$i")for i=1:n]
map(n->["0."reverse("$i")for i=1:n],3)
(dla n = 3), nie byłaby konieczna do uzyskania jakichkolwiek wyników? To sprawiłoby, że (przynajmniej) tak długo, jak moje rozwiązanie.Python 2, 40 bajtów
Przykład:
Rozwiązywanie algebraiczne:
źródło
jq 1,5,
4035 znaków(Kod 34 znaków + opcja wiersza poleceń 1 znak.)
Przykładowy przebieg:
Test on-line (Przekazanie
-r
adresu URL nie jest obsługiwane - sprawdź sam wynik wyjściowy).To samo z linkami do dokumentacji:
Jako bardziej czytelną alternatywę powyższe można również zapisać w następujący sposób ( on-line ):
źródło
"\(.+1).0"/""
możesz wyjaśnić, jak działa?\(…)
i podział/
, który w przypadku łańcuchów jest podzielony.BBC BASIC,
898887 bajtówUżyto skrótów, aby maksymalnie skrócić rzeczy. Kompatybilny zarówno z Brandy Basic, jak i BASIC 2 na oryginalnej maszynie.
W przypadku nowoczesnych BBC BASIC można również pominąć numery linii, aby zaoszczędzić dwa kolejne bajty.
źródło
Dyalog APL , 12 bajtów
Wypróbuj online!
Prosto do przodu:
{
ciąg funkcji'0.'
przed,
odwróconą⌽
reprezentacją⍕
ciągu argumentu⍵
funkcji}
dla każdej¨
liczby od 1 do n⍳
.źródło
JS, 66
Dane wyjściowe to tablica o nazwie „o”
źródło
Groovy, 36 znaków
Przykładowy przebieg:
źródło