Zainspirowany błędnymi wynikami w odpowiedzi Clojure @Carcigenicate na wyzwanie drukowania tego diamentu .
Wydrukuj dokładnie ten tekst:
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
(Od środka na zewnątrz w obu kierunkach każda cyfra jest oddzielona o jedną spację więcej niż poprzedni wiersz).
Zasady konkursu:
- Nie będzie żadnych danych wejściowych ( lub pustych nieużywanych danych wejściowych ).
- Spacje końcowe są opcjonalne.
- Pojedyncza nowa linia jest opcjonalna.
- Wiodące spacje lub nowe linie nie są dozwolone.
- Zwracanie tablicy łańcuchowej jest niedozwolone. Powinieneś albo wypisać tekst, albo mieć funkcję, która zwraca pojedynczy ciąg z poprawnym wynikiem.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
code-golf
ascii-art
number
kolmogorov-complexity
Kevin Cruijssen
źródło
źródło
Odpowiedzi:
SOGL V0.12 , 12 bajtów
Wypróbuj tutaj! Wyjaśnienie:
źródło
Python 2 ,
59 57 5655 bajtówWypróbuj online!
Wyjaśnienie
i=8
- Przypisuje wartość8
do zmiennej o nazwiei
.exec"..."*17
- Wykonaj ten blok kodu (...
) 17 razy.print(...)
- Wyjście wyniku.' '*abs(i)
- Utwórz ciąg znaków ze spacją powtarzaną|i|
razy..join('1234567890')
- Przeplataj utworzony powyżej ciąg1234567890
, tak aby|i|
spacje były wstawiane między cyframi.i-=1
- Zmniejszeniei
, a wykonując go 17 razy, osiąga-8
, co tworzy powtarzalny wzór za pomocąabs()
.źródło
exec
55 bajtów . Zastosowano podobne podejście, aby sprowadzić Python 3 do 57 bajtów . Nie widziałem żadnego oczywistego sposobu, aby go skrócić, pomijającexec
, ale pomyślałem, że wspomnę o tym jako o możliwości.Vim, 35 bajtów:
Wyjaśnienie:
źródło
05AB1E ,
1413 bajtówWypróbuj online!
Wyjaśnienie
źródło
s
... czy ma sens łączenie łańcucha z listą lub listą z łańcuchem? Zasugeruję ulepszenie Adnanowi. Och, i jest.∊
naû»
.8F9ÝÀNð×ý}».∊
Zrobiłem zrobiłem paszczę statku kosmicznego! Byłem podekscytowany sugestią 12-bajtowej edycji.C64 ASM, 358 bajtów (102 bajty skompilowane z basicstub)
Jest to najbliższe, jakie mogłem uzyskać z powodu oczywistych ograniczeń:
(Prawdopodobnie można to trochę zoptymalizować)
źródło
TSQL,
220148 bajtówUlepszenie opublikowane przez ZLK:
Wynik:
źródło
DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
sys.objects
sięsysobjects
i 1object_id` zid
Szukałem krótszych tabel wsys
schemacie, ale niczym kolumny miały tak krótki, jaksysobjects
CAST
(za pomocąPOWER(10)
) naVARCHAR
LOG10
iREPLICATE
:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
@
zgolić 3 znaki.APL (Dyalog) , 22 bajty
Wypróbuj online!
⎕D
D oznacza od zera do dziewięciu1⌽
obróć o jeden krok w prawo (ustawia zero na końcu)⊂
załącz (traktuj jako jednostkę)(
…)↑¨¨
Dla każdej z tych liczb weź tyle znaków z każdej z liter:⍳17
jeden do siedemnastu¯9+
odejmij dziewięć|
znajdź wartości bezwzględne1+
Dodaj jeden∊¨
zaciągnij (spłaszcz) każdy↑
zmień jedną warstwę głębokości na poziom rangi (matrify)źródło
>:
.APL is not a golfing language
...↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D
... ಠ_ಠHaskell ,
5855 bajtówWypróbuj online!
To w zasadzie rozwiązanie @nimi :)
źródło
Java 11 (JDK) , 98 bajtów
Wypróbuj online!
String::repeat
.Poprzednia odpowiedź ( Java (OpenJDK 8) ),
113112 bajtówWypróbuj online!
Objaśnienia
Zasadniczo konstruuję następujące
String
17 razy (N
jest zmienną, a nie rzeczywistą wartością):Są to wszystkie oczekiwane cyfry, do
%1$Ns
których dołączonaN
jest liczba spacji między każdą cyfrą.%1$Ns
w zasadzie oznacza „weź pierwszy argument i wstaw go, aż długość będzie co najmniejN
”. Ponadto,%1$0s
nie jest obsługiwany tak szczególnym przypadkiem%1$s
jest dla0
.Na koniec formatuję ten ciąg za pomocą jednego argumentu
""
:, więc formatyzator używa zawsze tego samego pustego ciągu, wypełniając go spacjami w razie potrzeby.Oszczędza
źródło
()->
sięo->
zapisać bajt. :)o
int
for(o=-9;++o<9;)
Japt
-R
,1918161413 bajtówPrzetestuj lub wypróbuj online
Wyjaśnienie
źródło
9ÆAõ%A qXîÃw ê ·
JavaScript (ES2017),
83737268 bajtówDzięki Shaggy za uratowanie 10 bajtów. Dzięki Craig za uratowanie 1 bajtu. Dzięki łuki za zapisanie 4 bajtów.
źródło
Math.abs
. Zrobiłem teża
listę nie zakodowaną na stałe, ale taka jest preferencja ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
[..."1234567890"].join("".padEnd(i<0?-i:i))
[...Array(10).keys]
miałby0
jako pierwszy element, a nie ostatni.for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`
gdzieX
jest prawdziwa nowa liniaBrachylog ,
302928 bajtówWypróbuj online!
Oszczędność jednego bajtu dzięki Dziurawej Zakonnicy .
Wyjaśnienie
źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Uwaga:
Cast(1)
pobiera taką samą liczbę bajtów, ponieważ wcześniej"1"
potrzebowałby separatora":"
(który zdarza się, że deverbosifier nie wstawia).źródło
R , 108 bajtów
Po prostu wklejanie i zwijanie ciągów.
Wypróbuj online!
Edycja: dzięki za Challenger5 za wskazanie problemu. Naprawiono to teraz.
Edycja 2: zapisano bajt dzięki bouncyball.
źródło
paste0
zamiastpaste
tego musiałem dodać bajt :(el
:el(strsplit("1234567890",""))
zamiaststrsplit("1234567890","")[[1]]
paste
zdań, używającsep
argumentucat
i robiąc więcej, aby uzyskać go do 70 bajtówPython 3 ,
585754 bajtówWypróbuj online!
(dzięki @flornquake za ostatnie trzy bajty; całkowicie zapomniałem używać opcji
sep
save vs..join
)źródło
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
Pyth ,
1413 bajtów1 bajt dzięki Mnemonic.
Wypróbuj online!
źródło
Java 8,
235234206163 bajtówAktualizacja : -28 bajtów dzięki Dziurawej Zakonnicy!
Aktualizacja 2 : -43 bajty dzięki Dziurawej Zakonnicy!
Nie golfowany:
Wypróbuj online
EDYCJA: Wcześniejszy kod był nieprawidłowy! Popełniłem błąd podczas gry w golfa kod, teraz powinien działać zgodnie z przeznaczeniem!
źródło
public
i pozbycie się niepotrzebnych miejsc. Jest jeszcze kilka rzeczy do poprawy, ale sugeruję przeczytać wskazówki i zobaczyć, gdzie możesz się poprawić. Jeszcze raz witamy i życzymy udanego pobytu! :)Łuska , 21 bajtów
Jest to pełny program, który drukuje do STDOUT. Wypróbuj online! Jest wiele spacji końcowych.
Wyjaśnienie
W Husk wciąż brakuje wielu niezbędnych rzeczy, takich jak dwuzargumentowa funkcja zakresu, więc niektóre części tego rozwiązania są trochę nieprzyzwoite.
źródło
ṁs`:0ḣ9
zuṁsḣ10
generować ciąg „1234567890” z jednej mniejszej bajt!T-SQL 145
152bajtówZaktualizowano do użycia:
master..spt_values
do generowania liczb (WHERE type = 'P'
zawsze są one następujące po sobie, zaczynając od 0)TOP 17
Pomysł ZLKWyniki:
(Dzięki @JanDrozen za pomysł REPLACE)
źródło
SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects
(Zakładając, że nie musisz drukować).Clojure,
12699 bajtów-27 poprzez naprawienie kilku głupich błędów. Zewnętrzne użycie
a
nie było konieczne, więc mogłem sięa
całkowicie pozbyć i tylkoapply str
raz napisać . To pozwoliło mi również użyć makra funkcji dla funkcji głównej, co pozwoliło zaoszczędzić trochę bajtów.Math/abs
Podkreśliłem również wezwanie do zamiast ponownego wiązanian-spaces
.Zasadniczo port Clojure idei @ Mr.Xcoder w Pythonie. Z perspektywy czasu powinienem był pierwotnie użyć metody
abs
/range
dla diamentowego wyzwania, ale wtedy mogłem nie wytworzyć błędnego wyjścia!Dość proste. Łączy ciąg liczbowy z liczbą spacji zależnych od bieżącego wiersza.
źródło
Galaretka , 15 bajtów
Wypróbuj online!
źródło
Mathematica, 92 bajty
Wypróbuj online
skopiuj / wklej kod za pomocą ctrl-v
naciśnij shift + enter, aby uruchomić
źródło
C, 97 bajtów
Twój kompilator prawdopodobnie będzie dużo narzekał na ten kod; mój rzucił 7 ostrzeżeń 4 różnych typów. Może poprawić kod później.
Wypróbuj online!
źródło
C (gcc) , 76 bajtów
Wypróbuj online!
Wyprowadza niektóre spacje końcowe, co powinno być OK.
Drukuje liczby przy użyciu wyrównanych do lewej pól dynamicznej długości - do tego właśnie
%-*d
służy ciąg formatu .Wewnętrzna pętla ma zabawną inicjalizację (zaczyna się od 10; każda wielokrotność 10 byłaby odpowiednia), aby „uprościć” swój warunek zakończenia.
źródło
Węgiel drzewny ,
21 20 1918 bajtówWypróbuj online!
Link do pełnej wersji . Zasadniczo tworzę dolną część rysunku, a następnie odbijam tekst w górę.
źródło
E…⁹⪫E…·¹χI﹪κχ× ι‖B↑
(także na 19 bajtów), ale tłumaczowi się to nie podoba (sam nie widzę, co jest z nim nie tak).Map
był to czerwony śledź, więc teraz opublikowałem moją 18-bajtową odpowiedź.CJam , 21 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
9{S*A,(+\*}%_W%);\+N*
Partia, 163 bajty
Uwaga: pierwsza linia kończy się na 9 spacjach. Objaśnienie: Używa kreatywnej numeracji linii! Pierwsza pętla musi działać 9 razy i za każdym razem usuwać spację, a druga pętla musi działać 8 razy i za każdym razem dodawać spację. Pierwszy z nich osiąga się, uruchamiając go 7 razy i przewracając po raz ósmy, podczas gdy drugi osiąga się, dodając dwie spacje i przewracając się, aby ponownie usunąć jedno z nich.
źródło
SOGL V0.12 , 14 bajtów
Wypróbuj tutaj!
Wyjaśnienie:
źródło
PHP , 69 bajtów
Wypróbuj online!
źródło
PowerShell , 30 bajtów
Wypróbuj online!
Konstruuje zakres
8,7,6...2,1,0,1,2...8
następnie pętli przez każdą liczbę. Wewnątrz pętli skonstruowanie szeregu1..9
łączone ze0
następnie-join
liczb w zakresie wraz z odpowiednią liczbą miejsc. Każdy ciąg jest pozostawiony w potoku, a wynik jest domyślny po zakończeniu programu.źródło