Entrada:
- Um número inteiro , que é garantido como .
- Um número inteiro , que é um de .
Saída:
Uma estrada de tamanho , que estará na direção noroeste se ; uma direção norte se ; ou uma direção nordeste se . A estrada sempre terá três espaços de largura (ou cinco em geral, se incluirmos as bordas externas). Além disso, haverá uma linha separadora de estradas na seção inferior e, depois disso, alternando enquanto sobe.
Alguns exemplos:
Entrada:
Saída:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Entrada: Saída:
\ \
\ \ \
\ \
\ \ \
Regras do desafio:
- Qualquer quantidade de espaços iniciais / finais e / ou novas linhas são aceitáveis, desde que imprima a estrada necessária em algum lugar na tela.
- Em vez das opções você também pode usar as opções ou . Além disso, você pode escolher qual das três opções é mapeada para qual das três direções. (Certifique-se de mencionar quais as opções que usei se difere do para , respectivamente, que é usado nesta descrição desafio!)
[north-west, north, north-east]
- Qualquer formato de saída razoável é aceitável. Obviamente, o mais comum é imprimi-lo no STDOUT, mas também é bom retorná-lo como uma string ou lista de caracteres 2D.
Regras gerais:
- Isso é código-golfe , 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 com as regras de E / S padrão , 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 (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Os dois exemplos acima e:
Entrada:
Saída:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Respostas:
Tela ,
2322 bytesExperimente aqui!
Utiliza as entradas de direção 0, 1 e 2.
Explicação:
fonte
Python 2 ,
79787372 bytesExperimente online!
Leva
[1,0,-1]
para[north-west, north, north-east]
-1 byte, graças a Neil
fonte
i%2*c or' '
salva um byte.Python 2 , 66 bytes
Experimente online!
Usa
d=-1
para NE,d=0
para N ed=1
para NW. Aproveita os espaços principais permitidos. A regra de que o segmento inferior da estrada possui um separador dificultou a correção da paridade; isso é alcançado com o fatiamento,(s*n)[n:]
fazendo a segunda metade das2n
alternâncias entre o espaço e o caráter da estrada.fonte
1. Python 3.5,
122120 bytesO script usa dois parâmetros: n, d.
d: 0, 1, 2 -> \ | /
tio.run
saída:
Explicação
editar: -2 bytes graças a Kevin Cruijssen
fonte
n-1-i
pode sern+~i
( dica relevante ) ej%2==0
pode serj%2<1
. Se você ainda não os viu, dicas para jogar golfe em Python e Dicas para jogar em <todos os idiomas> podem ser interessantes para ler.n+~i
, mas parece útil. Também obrigado pelo destaque do código.j%2*" "or c
salva outro par de bytes.PowerShell ,
8882807471 bytes-8 bytes graças ao Mazzy
-6 bytes graças ao AdmBorkBork e Mazzy
-3 bytes graças ao AdmBorkBork
Experimente online!
Usa [0,1,2] para NW, NE, N. Usa
d
como índice de lista duas vezes para obter primeiro o método de espaçamento (Retira a lista ao usar 2 que retorna 0) e depois qual caractere usar ao desenhar as linhas. Anexa uma lista à cadeia de espaços (que possui espaços entre os membros quando anexados como tal) que constrói a estrada. Também alterna entre uma faixa aberta ou um traço baseado no módulo de matemática.fonte
C (gcc) ,
10090 bytesExperimente online!
Versão bem escrita
fonte
Carvão ,
332923 bytesExperimente online! Link é a versão detalhada do código. Agora que todos os erros subjacentes do Charcoal parecem estar corrigidos, posso anunciar o código ideal. Explicação:
Gire a direção do cursor no sentido anti-horário, de acordo com a primeira entrada, para que 1 se torne nordeste, 2 norte e 3 noroeste.
Insira o comprimento da estrada.
Imprima metade da extensão da estrada e estique-a, dando o separador de estradas.
Imprima as margens da estrada.
O @KevinCruijssen enviou posteriormente uma versão mais difícil desta pergunta, que foi excluída desde então, mas os usuários com representantes suficientes podem vê-la aqui: O (difícil) caminho para o código O truque de alongamento que usei nesta resposta não é aplicável a essa pergunta. escreveu o seguinte programa de 45 bytes de
47:Experimente online! Link é a versão detalhada do código. Explicação:
Laço sobre os lados e separador.
Ir para o início do lado.
Faça uma matriz que contenha a
1
e um espaço, mas remova o espaço novamente se estivermos desenhando os lados em vez do separador.Faça um loop sobre cada trecho da estrada.
Gire a direção do cursor de acordo.
Passe um menos do que o comprimento da seção da estrada ...
... e imprima elementos alternativos da matriz. A alternância é obtida indexando ciclicamente na matriz com a coordenada Y do cursor.
Imprima a última linha desta seção da estrada, mas sem mover o cursor ...
... para que o cursor possa ser movido para cima, pronto para a próxima seção.
Gire a direção do cursor de volta para a próxima seção.
fonte
Kotlin ,
9692 bytesAceita [0, 1, 2] em vez de [-1, 0, 1]
Funciona de maneira semelhante a soluções em outros idiomas, mas infelizmente o Kotlin não brilha realmente neste.
val c=“\\|/“;
recupera o caractere a ser usado na construção de estradas, aproveitando o fato de o Kotlin tratar Strings como uma matriz de caracteres (como deveria, olhando para você Java)Experimente online!
fonte
4
com o meu exemplo de4
para ver a diferença que eu quero dizer. Não conheço Kotlin tão bem, mas acho que você pode resolvê-lo (e jogar 4 bytes ao mesmo tempo) mudando[(it+1)%2]
para[it%2]
. :) Além disso, é uma boa resposta, então +1 de mim.Código TSQL,
171117 bytesPercebi que isso poderia ser escrito muito mais curto como código.
Consulta TSQL, 137 bytes
USE master não é necessário, se seu banco de dados já for master. Alguns usuários, no entanto, têm um banco de dados padrão diferente.
O script ao testá-lo é um pouco diferente. Eu tive que substituir o espaço ascii-32 por ascii-160, os espaços não foram mostrados.
Experimente
Fiz alguns ajustes e percebi que eu poderia substituir
com
fonte
order by 1/0
que não causa um erro de divisão por zero?JavaScript (ES8),
90 8785 bytes(direction)(length)
Experimente online!
JavaScript (ES6), 90 bytes
Este desenha o caractere de saída por caractere com um pouco mais de matemática, em vez do
.padStart()
método.(direction)(length)
Experimente online!
fonte
Geléia ,
3130 bytesUm link diádico que aceita o comprimento à esquerda e a direção negada * à direita, o que gera uma 2ª matriz de caracteres.
*
[north-west, north, north-east]=[1, 0, -1]
Experimente online! (o rodapé chama o link, junta-se a caracteres de nova linha e imprime o resultado)
Quão?
fonte
Python 2, 127 bytes
Experimente online!
Primeiras duas linhas retiradas de @TFeld.
fonte
D,N=input()
(e usar o Python 2 em vez de 3) para corrigir isso. Ou você pode alterá-lo para uma função lambda usando esses dois parâmetros." ".join(..)
pouco correu.format
i%2*c or' '
economiza mais alguns bytes, embora tenha notado que o separador está errado para estradas com comprimentos ímpares.Python 2 , 93 bytes
Experimente online!
fonte
+' %s '+
para,'%s',
salvar 2 bytes'%s'%
completamente.J , 64 bytes
Experimente online!
Vai tentar jogar depois
fonte
C # (Compilador interativo do Visual C #) ,
12910710393 bytes-1 para nordeste, 1 para noroeste, 0 para norte
Experimente online!
fonte
Vermelho , 157 bytes
Experimente online!
fonte
Japonês, 53 bytes
Experimente Online!
fonte
Swift 4.2 ,
112108 bytes-4 bytes graças ao Sriotchilism O'Zaic
[0,1,2] em vez de [-1,0,1].
Experimente online!
Explicação
Determina a placa de rua a ser usada. (Aposto que isso pode ser reduzido de alguma forma)
Repete o comprimento da rua.
Adiciona os espaços em frente à rua.
Adiciona o sinal do meio a todas as outras linhas.
Meu primeiro ☝️, estou feliz com os conselhos de otimização. Aprendemos principalmente com esse tópico: dicas para jogar golfe no Swift .
fonte
in
e" "
no seu código, mesmo que você o tenha removido em seus exemplos.\(c)
nos dois casos). Você salvaria bytes apenas concatenando oc
para a string. Experimente online!Perl 6 , 66 bytes
Experimente online!
Retorna uma lista de linhas.
Explicação
fonte
Ruby , 90 bytes
Experimente online!
ATUALIZAÇÃO: Obrigado, Kevin, por apontar que meu envio original estava faltando espaços entre as bordas e os marcadores da estrada (ou seja, estradas de 3 larguras em vez de 5). Dito isso, pode haver uma solução mais curta para isso
c+' '+...+' '+c
.Informações direcionais:
-1, 0, 1
mapeia para{ north-west, north, north-east }
Argumentos: lê argumentos da linha de comando, como
4 -1
(uma estrada de quatro linhas, inclinada para o noroeste).Nota adicional: Isso foi testado localmente com Ruby v2.6.1 e parece que o Try It Online usa Ruby v2.5.3. Não tenho motivos para pensar que não funcionaria com todas as outras versões do Ruby.
fonte
|||
or|<sp>|
, mas deve ser|<sp>|<sp>|
or|<sp><sp><sp>|
(onde<sp>
é um espaço). Não conheço Ruby, mas parece que você pode resolvê-lo mudandoc+[' ',c][i%2]+c
parac+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 bytes
Experimente online!
Toma
d
como um de0
,1
ou2
.fonte
Japonês
-R
, 40 bytesExperimente online!
Explicação:
fonte
Stax , 23 bytes
Execute e depure
A entrada é dois números inteiros separados por um espaço.
O primeiro é
d
. -1 especifica nordeste. 0 para o norte. 1 para noroeste. O segundo parâmetro én
. Esses dois valores serão analisados implicitamente da entrada e colocados na pilha de entradan
por cima. Além dissod
, será acessível a partir do registro do stax,x
pois é o primeiro valor analisado implicitamente.Por exemplo, insira "1 7"
Execute este
fonte
perl -M5.010 -Mfeature = assinaturas, 97 bytes
fonte