Foi só um bug

76

Inspirado na saída com erros na resposta Clojure da @Carcigenicate para o desafio Print this diamond .

Imprima este texto exato:

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

(Do meio para fora em ambas as direções, cada dígito é separado por mais um espaço que a linha anterior.)

Regras do desafio:

  • Não haverá entrada ( ou uma entrada não utilizada vazia ).
  • Os espaços à direita são opcionais.
  • Uma única linha nova à direita é opcional.
  • Espaços iniciais ou novas linhas não são permitidos.
  • Não é permitido retornar um array de strings. Você deve imprimir o texto ou ter uma função que retorne uma única string com o resultado correto.

Regras gerais:

  • Isso é , então a resposta mais curta em bytes vence.
    Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação.
  • As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
  • As brechas padrão são proibidas.
  • Se possível, adicione um link com um teste para o seu código.
  • Além disso, adicione uma explicação, se necessário.
Kevin Cruijssen
fonte
É permitida a saída de uma matriz de cadeias - 1 cadeia por linha -?
Shaggy
@ Shaygy Desculpe, neste caso, ele deve retornar uma única string com novas linhas ou gerar o resultado. Eu adicionei isso como regra ao desafio.
Kevin Cruijssen
Não se preocupe, Kevin; estava apenas arriscando meu braço para ver se eu poderia me salvar alguns bytes.
Shaggy
3
@Shaggy Hehe. Que outro motivo teríamos para fazer uma pergunta em um desafio de código-golfe, além de ter o objetivo de salvar esses poucos bytes? ;)
Kevin Cruijssen
8
Ha, isso é incrível. Fiquei me perguntando por que essa resposta de repente chamou tanta atenção. Obrigado!
Carcigenicate

Respostas:

7

SOGL V0.12 , 12 bytes

9{SUē↕∑}¹№╬«

Experimente aqui! Explicação:

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
fonte
Oh legal, isso é ainda mais curto que a resposta aceita. Hmm, qual é a política para respostas mais curtas alguns meses depois que uma resposta foi aceita? Isso agora recebe o cheque (meio injusto com a resposta atualmente aceita, eu acho), ou devo fazer outra coisa? Ótima resposta, independentemente! +1 de mim.
Kevin Cruijssen 29/10
@KevinCruijssen Normalmente, a melhor prática é atualizar a resposta aceita, mas como isso usa alguns novos recursos, eu diria que há motivos para seguir de qualquer maneira - você escolhe.
dzaima
62

Python 2 , 59 57 56 55 bytes

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

Experimente online!

@Leaky Nun ajudou bastante no golfe, o @Praind sugeriu um método para economizar 1 byte, que eu pensava anteriormente, mas esqueci de editar, @CotyJohnathanSaxman sugeriu mudar o loop.


Explicação

  • i=8- Atribui o valor 8a uma variável chamada i.

  • exec"..."*17- Execute esse bloco de código ( ...) 17 vezes.

  • print(...) - Saída do resultado.

  • ' '*abs(i)- Crie uma String com um espaço repetido |i|vezes.

  • .join('1234567890')- Intercalar a sequência criada acima com 1234567890, de modo que |i|sejam inseridos espaços entre os dígitos.

  • i-=1- Decrementa ie, executando-o 17 vezes, alcança -8, o que cria um padrão repetitivo com a ajuda de abs().

Mr. Xcoder
fonte
5
59 bytes
Freira vazada
23
É uma fazenda mais impressionante que 25 bytes em qualquer idioma de golfe.
Jylo 3/07
4
@Jylo Obrigado, mas as soluções de 25 bytes são muito impressionantes, pois mostram muitos esforços de golfe feitos por seus autores. Você deve primeiro saber o que cada personagem em sua origem significa e depois entenderá como eles são lindamente treinados.
XCoder #
2
@JasonChen Não, o Python não permite essa sintaxe, porque isso é específico para linguagens do tipo C.
Mr. Xcoder
5
Inspiração possível: exec Também pode ser feito sem 55 bytes . Utilizou uma abordagem semelhante para reduzir o Python 3 para 57 bytes . Não via nenhuma maneira óbvia de diminuí-lo, omitindo exec, mas achava que eu mencionaria isso como uma possibilidade.
ShadowRanger
32

Vim, 35 bytes:

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

Explicação:

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
fonte
6
Eu nem me importo que este não seja o vencedor, é lindo.
MrDuk
@MrDuk Thankyou! Estou feliz que você tenha gostado :)
DJMcMayhem
21

05AB1E ,  14  13 bytes

17F9ÝÀN8αð×ý,

Experimente online!

Explicação

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
fonte
1
Hmm ... você poderia ter vencido o SOGL se não precisasse s... faz sentido juntar uma string a uma lista ou uma lista com uma string? Vou sugerir melhorias para Adnan. Ah, e há .∊para û».
Erik the Outgolfer
@EriktheOutgolfer: Ou eu poderia mudar o meu método e salvar o que 1 byte eu precisava :)
Emigna
Desculpe já votado.
Erik the Outgolfer
3
Isso significa que eu teria votado novamente novamente ...
Erik the Outgolfer
4
8F9ÝÀNð×ý}».∊Eu fiz uma nave espacial! E fiquei empolgado ao sugerir uma edição de 12 bytes.
Magic Octopus Urn
20

C64 ASM, 358 bytes (102 bytes compilados com o basicstub)

Este é o mais próximo que pude obter devido a limitações óbvias:

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

(Provavelmente poderia ser otimizado um pouco)

Jupp3
fonte
Bem-vindo ao PPCG! Por favor, use código tag para postar bonita. Eu editei sua postagem. Após a aplicação das alterações, você pode ver o que foi alterado, clicando em editar
Евгений Новиков
Acabei de verificar e ele nem se encaixa em um PET de 80 cols, pois a primeira e a última linha exigem 82 colunas.
precisa saber é o seguinte
17

TSQL, 220 148 bytes

Melhoria postada por 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 @

Resultado:

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
fonte
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 04/07
Substituir sys.objectscom sysobjects, e 1object_id` com idOlhei para tabelas curtas no sysesquema, mas nada menos tinham colunas tão curto quantosysobjects
Jaloopa
E você pode salvar mais alguns bytes alterando o interno CAST(com o POWER(10)) paraVARCHAR
Jaloopa
Na verdade, evite tudo o que substitui as coisas usando LOG10e 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 4/17/17
Você pode alterar o nome da variável para apenas @três caracteres.
Bridge
14

APL (Dyalog) , 22 bytes

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

Experimente online!

⎕DD igits de zero a nove

1⌽ gire um passo para a direita (coloca zero no final)

 incluir (para tratar como unidade)

()↑¨¨ Para cada um desses números, use o número de caracteres de cada uma das letras:

⍳17 um a dezessete

¯9+ subtrair nove

| encontre os valores absolutos

1+ Adicione um

∊¨ alistar (achatar) cada

 alterar uma camada de profundidade em um nível de classificação (matrificar)

Adão
fonte
3
Em uma linguagem compacta como essa, são necessários dois bytes para adicionar um?
Aschepler
3
@aschepler Sim. O APL não é uma linguagem de golfe e não possui um primitivo de incremento. J faz, mas são necessários dois bytes; >:.
Adám 04/07/19
4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D... ಠ_ಠ
Alexander
1
@ Alexander Obrigado por voltar minha atenção para este. Eu poderia jogar 3 bytes.
Adám 06/07/19
13

Haskell , 58 55 bytes

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

Experimente online!

Esta é basicamente a solução da @nimi :)

bartavelle
fonte
12

Java 11 (JDK) , 98 bytes

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

Experimente online!

  • -14 bytes alternando para o JDK 11, que agora possui um nativo String::repeat.

Resposta anterior ( Java (OpenJDK 8) ), 113 112 bytes

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

Experimente online!

Explicações

Basicamente, estou construindo as seguintes String17 vezes ( Né uma variável, não um valor real):

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

São todos os dígitos esperados, unidos por %1$Nsonde Nestá o número de espaços entre cada dígito.

%1$Nsbasicamente significa "pegar o primeiro argumento e preenchê-lo até que o comprimento seja pelo menos N". Além disso,%1$0s não é suportado por isso um caso especial %1$sé feita para 0.

Por fim, formato-imprimo essa string usando um único argumento: "" :, para que o formatador reutilize sempre a mesma string vazia, preenchendo-a com espaços, conforme necessário.

Economizar

  • 1 byte graças a Kevin Cruijssen
Olivier Grégoire
fonte
2
Boa resposta! Aliás, mencionei explicitamente no desafio que um parâmetro vazio não utilizado é permitido, para que você possa substituir ()->por o->para salvar um byte. :)
Kevin Cruijssen
Você pode fazer oum inte usá-lo em seu loop for? for(o=-9;++o<9;)
Inverno
2
@ Winter Não, porque o desafio diz " não utilizado " e isso usaria a variável de parâmetro, mesmo que o valor não fosse usado.
Olivier Grégoire
@ OlivierGrégoire O link para este post codegolf.meta.stackexchange.com/questions/12681/… e este post diz apenas que deve estar vazio (0 para ints).
Inverno
@ De fato, mas o desafio em si diz "não utilizado". As decisões específicas em um desafio substituem os padrões.
Olivier Grégoire
11

Japt -R , 19 18 16 14 13 bytes

Aõ%A
£qYçÃÔÅê

Teste ou experimente online


Explicação

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
Shaggy
fonte
2
Agradável. Minha solução de 16 bytes foi9ÆAõ%A qXîÃw ê ·
ETHproductions
8

JavaScript (ES2017), 83 73 72 68 bytes

Obrigado Shaggy por salvar 10 bytes. Obrigado Craig por economizar 1 byte. Obrigado arcos por salvar 4 bytes.

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; }

Tushar
fonte
Salve 1 byte usando um polyfill para Math.abs. Eu também fez a alista não codificado, mas isso é uma preferência ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
Thomas W
1
Salvar alguns bytes com[..."1234567890"].join("".padEnd(i<0?-i:i))
Shaggy
@ Obrigado Shaggy. Isso economizou 10 bytes. :)
Tushar
1
@ ThomasW: [...Array(10).keys]teria 0como o primeiro elemento, não o último.
Shaggy
1
Você pode salvar um byte usando o seu método de armazenar o resultado em uma string ao invés de login: for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`, onde Xé uma nova linha real
Craig Ayre
7

Brachylog , 30 29 28 bytes

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

Experimente online!

Salvo um byte graças a Leaky Nun .

Explicação

Ị↺                               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
Fatalizar
fonte
2
28 bytes
Freira vazada
@LeakyNun eu fiquei preso no grande "Imprimir este texto exato" e não li que poderíamos ter linhas de fuga ...
Fatalize
4
23 bytes
Freira vazada
1
@LeakyNun Por que você não postou sua própria resposta?
Fatalize
7

Carvão , 18 bytes

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

Experimente online! Link é a versão detalhada do código. Explicação:

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

Nota: Cast(1)leva o mesmo número de bytes porque "1"precisaria de um separador antes ":"(o que, por acaso, o deverbosifier falha ao inserir).

Neil
fonte
7

R , 108 bytes

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

Apenas colando e recolhendo as cordas.

Experimente online!

Edit: obrigado por Challenger5 por apontar um problema. Corrigido agora.

Edit 2: salvou um byte graças ao bouncyball.

Probel
fonte
Bem vindo ao site! :)
DJMcMayhem
2
Isso não parece muito certo - a linha do meio não deve ter nenhum espaço.
Esolanging Fruit
@ Challenger5 você está certo! corrigido usando em paste0vez de pasteentão tinha que adicionar um byte :(
Probel 4/17/17
1
salvar 2 bytes usando el: el(strsplit("1234567890",""))em vez destrsplit("1234567890","")[[1]]
bouncyball
Você pode se livrar de uma das pastedeclarações, usando o separgumento para cate fazer um pouco mais para obtê-lo para 70 bytes
Giuseppe
7

Python 3 , 58 57 54 bytes

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

Experimente online!

(obrigado a @flornquake pelos últimos três bytes; esqueci completamente de usar seppara salvar vs. .join)

ShadowRanger
fonte
1
54 bytes:while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
flornquake
7

Pitão , 14 13 bytes

1 byte graças ao Mnemonic.

V17j*da8NeMST

Experimente online!

Freira Furada
fonte
Você pode salvar um byte se fizer um loop em vez de mapear e ingressar. Experimente aqui .
Mnemonic
6

Java 8, 235 234 206 163 bytes

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);}}}

Atualização : -28 bytes graças a Leaky Nun!
Atualização 2 : -43 bytes graças a Leaky Nun novamente!

Ungolfed:

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);
        }
    }
}

Experimente online

EDIT: O código anterior estava errado! Cometi um erro ao jogar o código, ele deve funcionar como pretendido agora!

Alex Ferretti
fonte
4
Bem-vindo ao PPCG! Dicas para jogar golfe em Java e Dicas para jogar golfe em <todos os idiomas> podem ser interessantes para ler. :) Algumas coisas que você pode jogar no golfe são remover o publice livrar-se de alguns espaços desnecessários. E há mais algumas coisas a melhorar, mas sugiro ler as dicas e ver onde você pode melhorar. Mais uma vez bem-vindo, e aproveite a sua estadia! :)
Kevin Cruijssen
2
Hmm, também, você tem certeza que publicou o código correto? Quando copio e colo seu código no TryItOnline, ele não fornece a saída correta.
Kevin Cruijssen
1
Aww droga, eu fiz algo errado enquanto jogava o código! Eu vou consertar isso!
Alex Ferretti
1
148 bytes: um loop
Leaky Nun
1
144 bytes
Freira vazada
6

Casca , 21 bytes

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

Este é um programa completo que imprime em STDOUT. Experimente online! Existem muitos espaços à direita.

Explicação

O Husk ainda está faltando muitas coisas essenciais, como uma função de intervalo de dois argumentos, então partes desta solução são um pouco invasivas.

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
fonte
Você pode substituir ṁs`:0ḣ9por uṁsḣ10para gerar a sequência "1234567890" com menos um byte!
Sophia Lechner
6

T-SQL 145 152 bytes

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

Atualizada para usar:

  • master..spt_values para gerar números (WHERE type = 'P' , estes são sempre consecutivos, começando em 0)
  • @ ZLK's TOP 17 ideia de
  • PRINT (para obedecer às regras - sem listas de strings)
  • A ótima idéia de @ JanDrozen de incluir o retorno de carro na string (contei isso como apenas um byte - Windows CRLF, o quê?)
  • Idéia do @Bridge para usar apenas @ para o nome da variável - todos esses truques !!

Resultados:

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

(Obrigado @JanDrozen pela idéia REPLACE)

Engenheiro reverso
fonte
Esta é uma boa resposta! Bem-vindo ao site :)
DJMcMayhem
Obrigado. Vejo alguns de nós inventamos nossas próprias línguas aqui :)
Engenheiro invertida
1
Uma mistura entre essa resposta e a outra é ideal: por exemplo SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects(supondo que você não precise imprimir).
ZLK 04/07
Aha @ZLK - alguns truques legais - TOP 17, CLASSIFICAÇÃO EXTRA e sys.objects - obrigado!
Engenheiro reverso
6

Clojure, 126 99 bytes

-27, corrigindo alguns erros estúpidos. O uso externo de anão era necessário, então pude me livrar acompletamente e escrever apenas apply struma vez. Isso também me permitiu usar uma macro de função para a função principal, que salvou alguns bytes. Também inline a chamada para, em Math/absvez de voltar a ligar n-spaces.

Basicamente, uma porta Clojure da idéia Python do @ Mr.Xcoder. Em retrospecto, eu deveria ter usado o abs/range método para o desafio de diamantes, mas talvez não tenha produzido a saída com bug!

Bem simples. Une a sequência numérica a um número de espaços que depende da linha atual.

#(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"))))
Carcinigenicado
fonte
5

Mathematica, 92 bytes

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

Experimente online

copiar / colar código com ctrl-v,
pressione Shift + Enter para executar

J42161217
fonte
Você poderia adicionar um link TryItOnline ?
Kevin Cruijssen
@KevinCruijssen Mathematica não é um idioma livre e a Matemática parece não funcionar .
Leaky Nun
@LeakyNun Ah ok, obrigado. Às vezes, vejo o MartinEnder postando links TIO, mas esses eram de fato links de matemática.
Kevin Cruijssen
1
@Kevin Cruijssen sim, é claro, eu adicionei o link com instruções
J42161217
5

C, 97 bytes

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

Seu compilador provavelmente reclamará muito sobre esse código; o meu lançou 7 avisos de 4 tipos diferentes. Pode melhorar o código mais tarde.

Experimente online!

tomsmeding
fonte
5

C (gcc) , 76 bytes

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

Experimente online!

Ele gera alguns espaços à direita, que deveriam estar OK.

Ele imprime os números usando campos justificados à esquerda de comprimento dinâmico - é isso que a string de formato %-*d serve a .

O loop interno possui alguma inicialização engraçada (começa em 10; qualquer múltiplo de 10 seria bom) para "simplificar" sua condição de terminação.

anatolyg
fonte
4

Carvão , 21 20 19 18 bytes

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

Experimente online!

Link para a versão detalhada . Basicamente, crio a parte inferior do desenho e depois reflito o texto.

Charlie
fonte
1
Quando vi a pergunta, pensei em fazer isso em carvão antes de olhar a resposta. Comecei com uma resposta de 21 bytes, mas joguei com 20 bytes ... assustador!
Neil
@ Neil :-D Bem, são 19 bytes agora!
317 Charlie
Sim, acabei de encontrar esse golfe. Eu também estava pesquisando E…⁹⪫E…·¹χI﹪κχ× ι‖B↑(também por 19 bytes), mas o intérprete não parece gostar (não consigo ver o que há de errado nisso).
Neil
Oh, Range leva dois argumentos, bobo.
Neil
1
Acontece que Mapera um arenque vermelho, então agora eu postei minha resposta de 18 bytes.
Neil
4

CJam , 21 bytes

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

Experimente online!

Explicação

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
fonte
1
Solução alternativa (também 21 bytes):9{S*A,(+\*}%_W%);\+N*
Esolanging Fruit
4

Lote, 163 bytes

@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%%%

Nota: A primeira linha termina em 9 espaços. Explicação: Usa numeração de linha criativa! O primeiro loop precisa executar 9 vezes e excluir um espaço a cada vez, enquanto o segundo loop precisa executar 8 vezes e adicionar um espaço a cada vez. O primeiro é alcançado executando-o 7 vezes e caindo pela 8ª vez, enquanto o último é alcançado adicionando dois espaços e caindo para excluir um deles novamente.

Neil
fonte
4

SOGL V0.12 , 14 bytes

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

Experimente aqui!

Explicação:

ā               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
fonte
4

PowerShell , 30 bytes

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

Experimente online!

Constrói um intervalo de 8,7,6...2,1,0,1,2...8loops através de cada número. Dentro do loop, construímos uma série de 1..9concatenada com 0, em seguida, -joinos números na gama juntamente com o número apropriado de espaços. Cada sequência é deixada no pipeline e a saída é implícita na conclusão do programa.

AdmBorkBork
fonte
1
Boa resposta! Powershell repente se sente mais golfy :)
Mr. Xcoder