To był tylko błąd

76

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 , 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.
Kevin Cruijssen
źródło
Czy wyprowadzanie tablicy ciągów - 1 ciąg w linii - jest dozwolone?
Kudłaty
@Shaggy Przepraszamy, w takim przypadku powinien zwrócić pojedynczy ciąg znaków z nowymi wierszami lub wygenerować wynik. Dodałem to jako regułę do wyzwania.
Kevin Cruijssen
Bez obaw, Kevin; Szansowałam tylko na ramię, żeby sprawdzić, czy mogę uratować sobie kilka bajtów.
Kudłaty
3
@Shaggy Hehe. Z jakiego innego powodu chcielibyśmy zadać pytanie w konkursie golfa, poza tym, że chcemy zaoszczędzić te kilka bajtów? ;)
Kevin Cruijssen
8
Ha, to wspaniale. Zastanawiałem się, dlaczego ta odpowiedź nagle zyskała tak wiele uwagi. Dzięki!
Carcigenicate

Odpowiedzi:

7

SOGL V0.12 , 12 bajtów

9{SUē↕∑}¹№╬«

Wypróbuj tutaj! Wyjaśnienie:

9{     }      9 times do
  SU            push "1234567890"
    ē           push e, predefined with the input, which defaults to 0, and then increase it
     ↕          get that many spaces
      ∑         join the string of digits with those spaces
        ¹     collect the results in an array
         №    reverse the array vertically
          ή  palindromize vertically with 1 overlap
dzaima
źródło
Och, fajnie, to jest nawet krótsze niż zaakceptowana odpowiedź. Hmm, jakie są zasady dotyczące krótszych odpowiedzi kilka miesięcy po zaakceptowaniu odpowiedzi? Czy teraz otrzymuję czek (nieco niesprawiedliwy wobec obecnie akceptowanej odpowiedzi), czy powinienem zrobić coś innego? Świetna odpowiedź niezależnie! +1 ode mnie
Kevin Cruijssen
@KevinCruijssen Zwykle najlepszą praktyką jest aktualizacja zaakceptowanej odpowiedzi, ale ponieważ wykorzystuje ona kilka nowych funkcji, powiedziałbym, że istnieje powód, aby pójść w którąkolwiek stronę - ty wybierasz.
dzaima
62

Python 2 , 59 57 56 55 bajtów

i=8;exec"print(' '*abs(i)).join('1234567890');i-=1;"*17

Wypróbuj online!

@Leaky Nun bardzo pomogła w grze w golfa, @Praind Zasugerował metodę zaoszczędzenia 1 bajtu, o której wcześniej myślałem, ale zapomniałem edytować, @CotyJohnathanSaxman zasugerował zmianę pętli.


Wyjaśnienie

  • i=8- Przypisuje wartość 8do zmiennej o nazwie i.

  • 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ąg 1234567890, tak aby |i|spacje były wstawiane między cyframi.

  • i-=1- Zmniejszenie i, a wykonując go 17 razy, osiąga -8, co tworzy powtarzalny wzór za pomocą abs().

Pan Xcoder
źródło
5
59 bajtów
Leaky Nun
23
Jest to farma bardziej imponująca niż 25 bajtów w dowolnym języku golfowym imho.
Jylo
4
@Jylo Dzięki, ale 25-bajtowe rozwiązania są bardzo imponujące, ponieważ pokazują wiele wysiłków golfowych podejmowanych przez ich autorów. Najpierw powinieneś wiedzieć, co oznacza każda postać w ich źródle, a następnie zrozumiesz, jak pięknie są golfa.
Pan Xcoder,
2
@JasonChen Nie, Python nie zezwala na tę składnię, ponieważ jest to specyficzne dla języków podobnych do C.
Pan Xcoder,
5
Możliwa inspiracja: Można tego dokonać również bez 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ąc exec, ale pomyślałem, że wspomnę o tym jako o możliwości.
ShadowRanger,
32

Vim, 35 bajtów:

i1234567890<esc>qqYP:s/\d/& /g
YGp{q7@q

Wyjaśnienie:

i1234567890<esc>    " insert '1234567890'
qq                  " Record the following into register 'q'
  Y                 "   Yank a line
   P                "   Paste it above us
    :s/\d/& /g      "   Put a space after each number
Y                   "   Yank this line
 G                  "   Move the end of the buffer
  p                 "   Paste the line
   {                "   Move the beginning of the buffer
    q               " Stop recording
     7@q            " Call macro 'q' 7 times
DJMcMayhem
źródło
6
Nie obchodzi mnie nawet, że to nie jest zwycięzca, jest piękny.
MrDuk
@MrDuk Thankyou! Cieszę się, że ci się podoba :)
DJMcMayhem
21

05AB1E ,  14  13 bajtów

17F9ÝÀN8αð×ý,

Wypróbuj online!

Wyjaśnienie

17F            # for N in [0 ... 16] do
   9Ý          # push [0 ... 9]
     À         # rotate left
      N8α      # compute the absolute difference between N and 8
         ð×    # push that many spaces
           ý   # merge the list of digits with the space string as separator
            ,  # print
Emigna
źródło
1
Hmm ... mógłbyś pokonać SOGL, gdybyś nie potrzebował s... czy ma sens łączenie łańcucha z listą lub listą z łańcuchem? Zasugeruję ulepszenie Adnanowi. Och, i jest .∊na û».
Erik the Outgolfer
@EriktheOutgolfer: Albo mógłbym zmienić metodę i zapisać 1 bajt, którego potrzebowałem :)
Emigna
Przepraszam, już głosowałem.
Erik the Outgolfer
3
Oznacza to, że głosowałbym ponownie ...
Erik the Outgolfer
4
8F9ÝÀNð×ý}».∊Zrobiłem zrobiłem paszczę statku kosmicznego! Byłem podekscytowany sugestią 12-bajtowej edycji.
Magic Octopus Urn
20

C64 ASM, 358 bajtów (102 bajty skompilowane z basicstub)

Jest to najbliższe, jakie mogłem uzyskać z powodu oczywistych ograniczeń:

C64

jsr $E544
lda #9
sta $FD
nl1: jsr dl
jsr il
dec $FD
bne nl1
inc $FD
nl2: ldy $FD
cpy #9
bne nt1
bl: jmp bl
nt1: iny
sty $FD
jsr dl
jsr il
jmp nl2
dl: clc
ldx #$31
ldy #0
lp: txa
sm: sta $0400, y
inx
cpx #$31
bne c1
rts
c1: cpx #$3A
bne nt2
ldx #$30
clc
nt2: tya
adc $FD
cmp #40
bcc c2
rts
c2: tay
jmp lp
il: lda sm+1
adc #39
bcc nc
inc sm+2
nc: sta sm+1
rts

(Prawdopodobnie można to trochę zoptymalizować)

Jupp3
źródło
Witamy w PPCG! Proszę użyć tagu kodu, aby ładnie publikować. Edytowałem Twój post. Po zastosowaniu zmian możesz zobaczyć, co się zmieniło, klikając edytuj
Евгений Новиков
Właśnie sprawdziłem i nie zmieści się nawet na 80 cols PET, ponieważ pierwsza i ostatnia linia wymaga 82 kolumn.
Shaun Bebbers
17

TSQL, 220 148 bajtów

Ulepszenie opublikowane przez ZLK:

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 @

Wynik:

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
Jan Drozen
ź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 @
ZLK
Wymień sys.objectssię sysobjectsi 1object_id` z idSzukałem krótszych tabel w sysschemacie, ale niczym kolumny miały tak krótki, jaksysobjects
Jaloopa
I możesz zaoszczędzić kolejne kilka bajtów, zmieniając wewnętrzny CAST(za pomocą POWER(10)) naVARCHAR
Jaloopa
W rzeczywistości unikaj wszystkich, które zastępują rzeczy, używając LOG10i REPLICATE: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
Jaloopa
Możesz zmienić nazwę zmiennej, aby tylko @zgolić 3 znaki.
Bridge
14

APL (Dyalog) , 22 bajty

↑∊¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D

Wypróbuj online!

⎕DD oznacza od zera do dziewięciu

1⌽ 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ędne

1+ Dodaj jeden

∊¨ zaciągnij (spłaszcz) każdy

 zmień jedną warstwę głębokości na poziom rangi (matrify)

Adám
źródło
3
W tak zwartym języku, aby dodać jeden, potrzeba dwóch bajtów?
aschepler
3
@aschepler Tak. APL nie jest językiem golfowym i nie ma prymitywnego przyrostu. J robi, ale zajmuje dwa bajty; >:.
Adám
4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D... ಠ_ಠ
Alexander
1
@Alexander Dzięki za zwrócenie mojej uwagi na to. Mogłem golfa 3 bajty.
Adám
13

Haskell , 58 55 bajtów

unlines["1234567890">>=(:(' '<$[1..abs n]))|n<-[-8..8]]

Wypróbuj online!

To w zasadzie rozwiązanie @nimi :)

bartavelle
źródło
12

Java 11 (JDK) , 98 bajtów

o->{for(int i=-9;++i<9;)System.out.println("".join(" ".repeat(i<0?-i:i),"1234567890".split("")));}

Wypróbuj online!

  • -14 bajtów, przechodząc do JDK 11, który ma teraz natywny String::repeat.

Poprzednia odpowiedź ( Java (OpenJDK 8) ), 113 112 bajtów

o->{for(int i=-9;++i<9;)System.out.printf("".join("%1$"+(i<0?-i:i>0?i:"")+"s","1234567890".split(""))+"%n","");}

Wypróbuj online!

Objaśnienia

Zasadniczo konstruuję następujące String17 razy ( Njest zmienną, a nie rzeczywistą wartością):

"1%1$Ns2%1$Ns3%1$Ns4%1$Ns5%1$Ns6%1$Ns7%1$Ns8%1$Ns9%1$Ns0%n"

Są to wszystkie oczekiwane cyfry, do %1$Nsktórych dołączona Njest liczba spacji między każdą cyfrą.

%1$Nsw zasadzie oznacza „weź pierwszy argument i wstaw go, aż długość będzie co najmniej N”. Ponadto, %1$0snie jest obsługiwany tak szczególnym przypadkiem %1$sjest dla 0.

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

  • 1 bajt dzięki Kevin Cruijssen
Olivier Grégoire
źródło
2
Niezła odpowiedź! Btw, ja wyraźnie wymienione w wyzwaniu nieużywany pusty parametr jest dozwolone, więc można wymienić ()->się o->zapisać bajt. :)
Kevin Cruijssen
Można dokonać i używać go w pętli for? ointfor(o=-9;++o<9;)
Zima
2
@ Zima Nie, ponieważ wyzwanie mówi „ nieużywany ”, a to użyłoby zmiennej parametru, nawet jeśli wartość nie byłaby użyta.
Olivier Grégoire,
@ OlivierGrégoire Odsyła do tego postu codegolf.meta.stackexchange.com/questions/12681/... i ten post mówi tylko, że powinien być pusty (0 dla ints).
Zima
@ Rzeczywiście, ale samo wyzwanie mówi „nieużywane”. Konkretne orzeczenia w sprawie wyzwania zastępują wartości domyślne.
Olivier Grégoire,
11

Japt -R , 19 18 16 14 13 bajtów

Aõ%A
£qYçÃÔÅê

Przetestuj lub wypróbuj online


Wyjaśnienie

A             :10
 õ           :Range [1,10]
  %A         :Modulo each by 10
\n           :Assign to variable U
£            :Map each element at 0-based index Y
 q           :  Join U with
  Yç         :   Space repeated Y times
    Ã        :End map
     Ô       :Reverse
      Å      :Slice off first element
       ê     :Mirror
             :Implicitly join with newlines and output
Kudłaty
źródło
2
Miły. Moje 16-bajtowe rozwiązanie to9ÆAõ%A qXîÃw ê ·
ETHproductions
8

JavaScript (ES2017), 83 73 72 68 bajtów

Dzięki Shaggy za uratowanie 10 bajtów. Dzięki Craig za uratowanie 1 bajtu. Dzięki łuki za zapisanie 4 bajtów.

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

console.log(a);
.as-console-wrapper { max-height: 100% !important; top: 0; }
.as-console-row:after { display: none !important; }

Tuszar
źródło
Zaoszczędź 1 bajt, używając wypełniacza do Math.abs. Zrobiłem też alistę 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)))
Thomas W
1
Zaoszczędź kilka bajtów za pomocą[..."1234567890"].join("".padEnd(i<0?-i:i))
Shaggy
@Shaggy Thanks. To pozwoliło zaoszczędzić 10 bajtów. :)
Tushar,
1
@ThomasW: [...Array(10).keys]miałby 0jako pierwszy element, a nie ostatni.
Kudłaty
1
Możesz zapisać bajt za pomocą metody przechowującej wynik w ciągu zamiast rejestrować:, for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`gdzie Xjest prawdziwa nowa linia
Craig Ayre
7

Brachylog , 30 29 28 bajtów

Ị↺{∧≜;Ṣj₍g;?↔zcc}ᶠ⁹↔;XcP↔Pẉᵐ

Wypróbuj online!

Oszczędność jednego bajtu dzięki Dziurawej Zakonnicy .

Wyjaśnienie

Ị↺                               The string "1234567890"
  {               }ᶠ⁹            Find the first 9 outputs of:
   ∧≜                              Take an integer
       ;Ṣj₍                        Juxtapose " " that number of times
           g;?↔z                   Zip that string of spaces with "1234567890"
                cc                 Concatenate twice into one string
                    ↔            Reverse the resuling list
                     ;XcP↔P      Palindromize the list (concatenate X to it into the list P,
                                   P reversed is still P)
                           ẉᵐ    Map writeln
Fatalizować
źródło
2
28 bajtów
Leaky Nun
@LeakyNun Utknąłem na dużym „Wydrukuj dokładnie ten tekst” i nie przeczytałem, że możemy mieć końcowe linie…
Fatalize
4
23 bajty
Leaky Nun
1
@LeakyNun Dlaczego nie opublikowałeś własnej odpowiedzi?
Fatalize
7

Węgiel drzewny , 18 bajtów

F⁹⪫⁺…I¹:⟦0¶⟧× ι‖B↑

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

F⁹      Repeat 9 times (i = loop variable)
  ⪫       Join
   ⁺       Concatentate
    …I¹:    All the characters from str(1) below ":" (i.e. to "9") as a list
    ⟦0¶⟧    A list whose element is the string "0\n"
   × ι     With i spaces
‖B↑     Reflect everything upwards but without duplicating the top line

Uwaga: Cast(1)pobiera taką samą liczbę bajtów, ponieważ wcześniej "1"potrzebowałby separatora ":"(który zdarza się, że deverbosifier nie wstawia).

Neil
źródło
7

R , 108 bajtów

for(i in abs(-8:8))cat(paste0(el(strsplit("1234567890","")),paste(rep(" ",i),collapse=""),collapse=""),"\n")

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.

Probel
źródło
Witamy na stronie! :)
DJMcMayhem
2
To nie wygląda całkiem dobrze - środkowa linia nie powinna mieć żadnych spacji.
Esolanging Fruit
@ Challenger5 masz rację! naprawiłem to używając paste0zamiast pastetego musiałem dodać bajt :(
Probel
1
zapisz 2 bajty, używając el: el(strsplit("1234567890",""))zamiaststrsplit("1234567890","")[[1]]
bouncyball
Możesz pozbyć się jednego ze pastezdań, używając separgumentu cati robiąc więcej, aby uzyskać go do 70 bajtów
Giuseppe
7

Python 3 , 58 57 54 bajtów

i=8
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1

Wypróbuj online!

(dzięki @flornquake za ostatnie trzy bajty; całkowicie zapomniałem używać opcji sepsave vs. .join)

ShadowRanger
źródło
1
54 bajty:while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
trzęsienie ziemi
7

Pyth , 14 13 bajtów

1 bajt dzięki Mnemonic.

V17j*da8NeMST

Wypróbuj online!

Leaky Nun
źródło
Możesz zapisać bajt, jeśli zapętlisz zamiast mapować i łączyć. Wypróbuj tutaj .
Mnemoniczny
6

Java 8, 235 234 206 163 bajtów

interface A{static void main(String[]a){for(int i=-8;i<9;i++){String s="";for(int j=1,k;j<10;j++){s+=j;for(k=0;k<(i>0?i:-i);k++)s+=" ";}System.out.println(s+0);}}}

Aktualizacja : -28 bajtów dzięki Dziurawej Zakonnicy!
Aktualizacja 2 : -43 bajty dzięki Dziurawej Zakonnicy!

Nie golfowany:

interface A {
    static void main(String[] a) {
        for (int i = -8; i < 9; i++) {
            String s = "";
            for (int j = 1, k; j < 10; j++) {
                s += j;
                for (k = 0; k < (i > 0 ? i : -i); k++)
                    s += " ";
            }
            System.out.println(s + 0);
        }
    }
}

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!

Alex Ferretti
źródło
4
Witamy w PPCG! Wskazówki dotyczące gry w golfa w Javie oraz wskazówki dotyczące gry w golfa we wszystkich językach mogą być interesujące do przeczytania. :) Niektóre rzeczy, na które możesz grać w golfa, to usunięcie publici 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! :)
Kevin Cruijssen
2
Hmm, czy na pewno opublikowałeś poprawny kod? Kiedy kopiuję i wklejam twój kod do TryItOnline , nie daje on poprawnego wyniku.
Kevin Cruijssen
1
Cholera, zrobiłem coś złego podczas gry w golfa! Naprawię to!
Alex Ferretti,
1
144 bajty
Leaky Nun
6

Łuska , 21 bajtów

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9

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.

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9
              ṁs`:0ḣ9  This part evaluates to the string "1234567890".
                   ḣ9   Range from 1 to 9.
                `:0     Append 0.
              ṁs        Convert each number to string and concatenate.
     §+↔tḣR8'          This part evaluates to a list like ["  "," ",""," ","  "]
                       but with 17 elements instead of 5.
          R8'           A string of 8 spaces.
         ḣ              Take prefixes.
     §+                 Concatenate
       ↔                the reversal and
        t               tail of the prefix list, palindromizing it.
  Ṫ                    Take outer product of the two lists
   `:                  with respect to flipped prepeding.
                       This prepends each digit to each string of spaces.
mΣ                     Map concatenation over the results, computing the rows.
                       Implicitly join with newlines and print.
Zgarb
źródło
Można wymienić ṁs`:0ḣ9z uṁsḣ10generować ciąg „1234567890” z jednej mniejszej bajt!
Sophia Lechner,
6

T-SQL 145 152 bajtów

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(number-8)))+'
'FROM master..spt_values WHERE type='P'PRINT @

Zaktualizowano do użycia:

  • master..spt_valuesdo generowania liczb ( WHERE type = 'P'zawsze są one następujące po sobie, zaczynając od 0)
  • @ TOP 17Pomysł ZLK
  • DRUKUJ (aby przestrzegać zasad - brak list ciągów)
  • @ Świetny pomysł JanDrozen'a na włączenie powrotu karetki do łańcucha (liczyłem to jako jeden bajt - co Windows CRLF?)
  • Pomysł @Bridge, aby użyć tylko @ dla nazwy zmiennej - wszystkie te sztuczki !!

Wyniki:

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

(Dzięki @JanDrozen za pomysł REPLACE)

Odwrócony inżynier
źródło
To miła odpowiedź! Witamy na stronie :)
DJMcMayhem
Dzięki. Widzę, że niektórzy z nas wymyślili tutaj swoje własne języki :)
Reversed Engineer
1
Połączenie tej odpowiedzi z drugą jest optymalne: np. SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects(Zakładając, że nie musisz drukować).
ZLK
Aha @ZLK - kilka fajnych sztuczek - TOP 17, RANK OVER i sys.objects - dziękuję!
Reversed Engineer
6

Clojure, 126 99 bajtów

-27 poprzez naprawienie kilku głupich błędów. Zewnętrzne użycie anie było konieczne, więc mogłem się acałkowicie pozbyć i tylko apply strraz napisać . To pozwoliło mi również użyć makra funkcji dla funkcji głównej, co pozwoliło zaoszczędzić trochę bajtów. Math/absPodkreśliłem również wezwanie do zamiast ponownego wiązania n-spaces.

Zasadniczo port Clojure idei @ Mr.Xcoder w Pythonie. Z perspektywy czasu powinienem był pierwotnie użyć metody abs/ rangedla 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.

#(doseq[n(range -8 9)](println(clojure.string/join(apply str(repeat (Math/abs n)\ ))"1234567890")))

(defn bugged []
  (doseq [n-spaces (range -8 9)]
    (println
        (clojure.string/join
          ; "String multiplication"
          (apply str
                 (repeat (Math/abs n-spaces) \space))
          "1234567890"))))
Carcigenicate
źródło
5

Mathematica, 92 bajty

Column@Join[Reverse@(s=Row/@Table[Riffle[Range@10~Mod~10,""<>Table[" ",i]],{i,0,8}]),Rest@s]

Wypróbuj online

skopiuj / wklej kod za pomocą ctrl-v
naciśnij shift + enter, aby uruchomić

J42161217
źródło
Czy mógłbyś dodać link TryItOnline ?
Kevin Cruijssen
@KevinCruijssen Mathematica nie jest wolnym językiem, a matematyka wydaje się nie działać .
Leaky Nun
@LeakyNun Ah ok, dzięki. Widzę czasem MartinEnder publikuje linki do TIO, ale tak naprawdę były to linki matematyczne.
Kevin Cruijssen
1
@Kevin Cruijssen tak, oczywiście, dodałem link z instrukcjami
J42161217,
5

C, 97 bajtów

i=-9;main(j){for(;++i<9;putchar(10))for(j=0;++j<11;printf("        "+8-abs(i)))putchar(48+j%10);}

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!

Tomsmeding
źródło
5

C (gcc) , 76 bajtów

f(x,y){for(y=-9;++y<9;puts(""))for(x=10;x++;printf("%-*d",abs(y)+1,x%=10));}

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 %-*dsł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.

anatolig
źródło
4

Węgiel drzewny , 21 20 19 18 bajtów

F⁹«F…¹χ⁺κ… ι0⸿»‖B↑

Wypróbuj online!

Link do pełnej wersji . Zasadniczo tworzę dolną część rysunku, a następnie odbijam tekst w górę.

Charlie
źródło
1
Kiedy zobaczyłem pytanie, pomyślałem, że spróbuję tego sam na węglu drzewnym, zanim spojrzę na odpowiedź. Zacząłem od 21-bajtowej odpowiedzi, ale grałem w golfa do 20 bajtów ... strasznie!
Neil
@Neil :-D Cóż, teraz jest 19 bajtów!
Charlie,
Tak, właśnie znalazłem ten golf. Patrzyłem też 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).
Neil
Och, Range bierze dwa argumenty, głuptasie.
Neil
1
Okazało się, że Mapbył to czerwony śledź, więc teraz opublikowałem moją 18-bajtową odpowiedź.
Neil
4

CJam , 21 bajtów

A,(+aH*ee{:\8-zS**n}/

Wypróbuj online!

Wyjaśnienie

A,     e# Get [0 1 2 ... 9].
(+     e# Rotate the 0 to the end.
aH*    e# Wrap in an array and repeat 17 times.
ee     e# Enumerate. This pairs each copy of the array with its index in
       e# the list.
{      e# For each [index array] pair...
  :\   e#   Unwrap the pair and swap its order.
  8-z  e#   Get the absolute difference of the index from 8.
  S*   e#   Get a string of that many spaces.
  *    e#   Riffle the list of digits with the string of spaces.
  n    e#   Print it with a trailing linefeed.
}/
Martin Ender
źródło
1
Alternatywne rozwiązanie (także 21 bajtów):9{S*A,(+\*}%_W%);\+N*
Esolanging Fruit
4

Partia, 163 bajty

@set s=1 2 3 4 5 6 7 8 9 0
@set t=         
@for %%l in (9 7)do @for /l %%i in (1,1,%%l)do @call:%%l
:7
@set t=  %t%
:9
@set t=%t:~1%
@call echo %%s: =%t%%%

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.

Neil
źródło
4

SOGL V0.12 , 14 bajtów

ā9{SUčf@*∑Κ}╬Æ

Wypróbuj tutaj!

Wyjaśnienie:

ā               push an empty array
 9{        }    9 times do
   SU             push "1234567890"
     č            chop into characters
      f@*         get current iteration (0-based) amount of spaces
         ∑        join with that
          Κ       prepend this to the array
            Β  palindromize vertically with 1 overlap
dzaima
źródło
4

PowerShell , 30 bajtów

8..0+1..8|%{1..9+0-join' '*$_}

Wypróbuj online!

Konstruuje zakres 8,7,6...2,1,0,1,2...8następnie pętli przez każdą liczbę. Wewnątrz pętli skonstruowanie szeregu 1..9łączone ze 0następnie -joinliczb w zakresie wraz z odpowiednią liczbą miejsc. Każdy ciąg jest pozostawiony w potoku, a wynik jest domyślny po zakończeniu programu.

AdmBorkBork
źródło
1
Niezła odpowiedź! Powershell nagle wydaje się bardziej golfowy :)
Mr. Xcoder