Dado um número inteiro não negativo, imprima um X
que seja tão grande. X
é a saída da entrada 0
e você adicionará barras iguais à entrada em cada direção para estender as X
entradas maiores.
Casos de teste
0 0
X
1
\ /
X
/ \
2
\ /
\ /
X
/ \
/ \
...
10
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
X
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
Regras
Você pode imprimir a saída ou retornar uma sequência ou lista de sequências de uma função. É permitida uma nova linha à direita, bem como um espaço em branco interno extra que não afeta a aparência.
Isso é código-golfe , então a resposta mais curta em bytes vence!
X
no meio (parte do motivo pelo qual eu adicionei-lo), mas quem sabe: DRespostas:
Tela , 3 bytes
Experimente aqui!
metade do tamanho da resposta do carvão vegetal: D
fonte
Carvão , 6 bytes
Seu absurdo não está me impedindo;)
Experimente online!
fonte
JavaScript (ES6), 79 bytes
Usa uma função recursiva g que percorre uma grade e constrói o caractere de saída por caractere.
Quão?
Ambas as variáveis x e y iteram de 2n a -1 , onde n é a entrada.
Para cada posição (x, y) na grade, escolhemos um destes caracteres:
/
\
X
usando os seguintes testes:
~x
: Falsy se x == -1 : chegamos ao fim da linha.x-y
: Falsy se x == y : estamos localizados na anti-diagonal.x+y-w
: Falsy se x + y == w : estamos localizados na diagonal.x-n
: Falsy se x == n : como esse teste é realizado apenas quando x == y , isso significa que estamos localizados no centro exato da grade.e a seguinte árvore de decisão:
Demo
Mostrar snippet de código
fonte
MATL , 16 bytes
Experimente online!
Considere a entrada
2
como um exemplo. A pilha é mostrada aqui de cabeça para baixo, ou seja, os elementos inferiores são os mais recentemente empurrados.fonte
C,
108106 bytesExperimente online!
(-2 golfe graças ao MD XF)
Ele imprime dois caracteres (a princípio,
c = 47
que é uma barra ec + 45
, que é uma barra invertida; depois são trocados) com uma largura de campo dinâmica.As larguras dos campos começam em
1
e2n
, e a cada iteração, a primeira largura é incrementada em 1 e a segunda é diminuída em 2.Quando a largura do segundo campo se torna 0, ela gera
'X'
uma nova linha em vez dos caracteres regulares e inverte a direção dos incrementos (i
). Uma nova linha é impressa para todas as outras linhas separadamente (puts("")
).fonte
a,b,i=1,c;g(n){for(b=2*n,c=47;a+=i;b?puts(""):(i=-i,c=92),b-=2*i)printf("%*c%*c",a,b?c+45*i:88,b,b?c:10);}
Experimente online!shortC , 111 bytes
Com base na minha resposta C . Conversões:
R
->printf(
P
->putchar(
W
->while(
O
->for(
");}
Isso também usa códigos ASCII para
\
e/
.Experimente online!
fonte
Python 2 , 81 bytes
Experimente online!
fonte
C,
168155150 bytes-5 graças a Computronium
Certamente pode ser jogado golfe; Eu estou fazendo isso. Experimente online!
Ungolfed:
fonte
V , 21 bytes
Experimente online!
Hexdump:
Explicação:
Basicamente, temos Inserir um X, n vezes estendemos as barras .
Mas não é tão simples assim, porque também precisamos adicionar as barras na primeira vez. Se as barras já estavam lá, poderíamos escrever estender as barras como:
O que nos pouparia 6 bytes.
fonte
C #,
157122120 bytesVersão não destruída:
fonte
_=d=>new string(' ',d);
(note que não há necessidade de chavesd
). Você pode remover as chaves ao redor do loop for. Utilize uma sequência literal com, para não precisar escapar de todas as barras invertidas. Se você definiri=0
, poderá fazer++i<a+1
e remover oi++
.\n
um feed de linha real, mas não tenho certeza se será possível remover os chavetas ao redor do loop for, você precisaria tentar.++i<a+1
para++i<=a
EDIT Você também pode economizar mais 4 bytes por mudar aFunc
partirnew string(' ',d)
de"".PadLeft(d)
_
.Mathematica, 71 bytes
(Parcialmente inspirado na solução de 104 bytes de Jenny_mathy)
Retorna uma lista de strings.
Explicação:
IdentityMatrix[2#+1]
cria uma matriz do tamanho certo com 1s na diagonal e 0s em outro lugar. Em seguida, multiplicamos por"\\"
(uma barra invertida escapada), o que a torna uma matriz com barras invertidas ao longo da diagonal e 0s em outros lugares, pois é claro que 1 vezes a barra invertida é invertida e 0 vezes a barra invertida é 0. Adicionamos isso às"/"
vezes seu reverso para fazer a forma X. Estamos quase terminando, exceto que ainda existem 0s em todos os lugares, e o meio está"\\" + "/"
. Corrigimos essas duas coisas substituindo" "
por0
e"X"
paraa_+_
, que corresponde a qualquer soma de duas coisas (como_+_
deveria, exceto que o Mathematica é inteligente demais para o seu próprio bem e interpreta isso como 2 vezes_
). Finalmente,""<>#&/@
transforma isso em uma lista de strings.fonte
Java (OpenJDK 8) , 135 bytes
Expressão lambda que pega e número inteiro e retorna uma matriz de Strings
Experimente online!
Ungolfed:
fonte
T-SQL, 201 bytes
Formatado:
A entrada é via coluna a na tabela nomeada t , de acordo com nossas diretrizes .
fonte
Rubi , 66 bytes
Função recursiva.
Experimente online!
Explicação
fonte
Geléia ,
2417 bytesExperimente online!
Como funciona
-6 bytes graças a @LeakyNun e -1 byte com uma melhoria adicional
fonte
Lote, 201 bytes
Começa construindo a linha superior e, depois de imprimir cada linha, move o
\
espaço direito e/
esquerdo uma vez, certificando-se de que eles fazem umX
no meio.fonte
PHP , 115 bytes
Experimente online!
fonte
Retina , 74 bytes
Experimente online! Explicação:
Coloque o
X
.Começando em
X
, trabalhando para cima, coloque uma\
diagonal para a esquerda a cada vez. Coloque também/
mais dois espaços após a/
última vez.Começando em
X
, trabalhando para baixo, coloque uma/
diagonal para a esquerda a cada vez. Coloque também\
mais dois espaços após a/
última vez.O número de espaços entre as duas diagonais precisa ser ímpar; portanto, o último espaço em cada linha (exceto a
X
linha original ) é excluído.fonte
Mathematica, 131 bytes
Mathematica, 104 bytes
aqui está outra abordagem usando o Grid
fonte
APL (Dyalog) , 25 bytes
Requer
⎕IO←0
qual é o padrão em muitos sistemas.Experimente online!
' \/'[
…]
Indexe a string com⎕
obter entrada2×
multiplicar por dois1+
Adicione um⍳
do que muitos números inteiros∘.=⍨
tabela de igualdade (ou seja, matriz de identidade; diagonal NW-SE)(
…)
Aplique a seguinte função tácita nesse⊢
o argumento+
mais2×
duas vezes⌽
o argumento espelhado horizontalmente (ou seja, diagonal NE-SW)fonte
Bash , 138 bytes
Experimente online!
Muito longo, o bash aquece '\ e /'
Menos golfe
fonte
Python 2 ,
9584 bytes-10 bytes graças a @FelipeNardiBatista
Experimente online!
fonte
05AB1E , 21 bytes
Experimente online!
fonte
Perl 5, 110 + 1 = 111 bytes
Usa
-n
sinalizador.fonte
QBIC , 90 bytes
Como essa monstruosidade funciona, é deixado como um exercício para o leitor ...
Saída de amostra:
fonte
Visual Basic.Net ,
454450 bytesNão tenho certeza se fazer uma func para
writeline
vai economizar alguns bytes graças a Stephen S para apontando paraas ...
remoção também mudouinteger
naobject
última edição mudou a primeira voltafonte
as Types
, porque, se o tiverOption Strict Off
, o VB.NET age como uma linguagem pouco digitada.function
s =!for loops
Agradecimentos para o golfeOption Strict
desativado por padrão? É no Visual Studio, pelo menos05AB1E , 22 bytes
Experimente online!
Explicação
Solução alternativa de 22 bytes
fonte
Pyke, 14 bytes
Experimente aqui!
fonte
tcl, 134
demonstração
Conjunto
n
na primeira linha.Pode ser que eu possa jogar mais usando uma abordagem recursiva
fonte
R ,
7572 bytesInspirado por esta resposta , gera uma matriz implícita e a grava no stdout; lê o tamanho de stdin. Ele precisa criar uma matriz de caracteres de espaço e usar
sep=''
b / c, caso contrário, ele terá problemas de espaçamento.Experimente online!
fonte