Desafio
O desafio é simples: imprima uma cobra .
Você obterá o comprimento da cobra como entrada.
Uma cobra de comprimento 2 é assim:
==(:)-
Uma cobra de comprimento 7 é assim:
=======(:)-
Em outras palavras, o comprimento de uma cobra é quantos sinais de igualdade existem antes da cabeça .
Uso
Digamos que eu fiz uma implementação em C ++ e a compilei ./getsnake
.
Eu poderia executá-lo assim:
$ ./getsnake 10
==========(:)-
Esclarecimentos
- As brechas padrão não são permitidas.
- Você pode obter entrada e saída de qualquer maneira aceitável.
- Você pode assumir que todas as entradas fornecidas são números inteiros positivos.
- Você pode escrever uma função em vez de um programa regular.
code-golf
string
ascii-art
kolmogorov-complexity
InitializeSahib
fonte
fonte
Respostas:
Hexagonia , 33 bytes
Não vai ganhar, mas ainda é legal. Pode ser capaz de jogar mais golfe.
Experimente online!
Golfe:
Formatado:
Colorido (Feito com o Hexagony Colorer de Timwi )
Explicação:
Loop, imprima "=" até o contador atingir 0.
Impressão "("
Impressão ":"
Impressão ")"
Os valores acima foram gerados usando um script python simples. No entanto, fiquei sem espaço para o "-". Então, tive que recorrer a truques mais avançados.
Quando o programa imprime ")", o valor da célula não é 41, é 1065. Hexagony apenas modifica o valor durante a impressão. Como se vê, (1065 * 1000 + 4)% 256 = 44, a apenas um dos 45, o valor ascii para "-". Depois, apenas incremento, imprimo e insiro um @ em algum lugar após a impressão.
fonte
Goma de canela, 7 bytes
Experimente online.
Teriam 6 bytes com a
p
sintaxe antiga : /Explicação
Descomprime para
p~=~(:)-
, op
estágio simplesmente lê a entrada e repete as=
n vezes.fonte
Brian & Chuck , 31 bytes
Entrada na forma de um valor de byte , portanto, por exemplo, a entrada
!
fornece uma cobra de comprimento 33.Experimente online!
Faz algum tempo...
Explicação
Uma rápida cartilha de Brian & Chuck:
,
(entrada) e apenas Chuck pode usar.
(saída). Além de<
e>
existem{
e}
que movem a cabeça da fita para a próxima célula zero (ou no caso da{
extremidade esquerda da fita, se não houver nenhuma célula a caminho). Em vez de[...]
, o único fluxo de controle é o?
que alterna o controle para a outra instância se a célula atual for diferente de zero. A primeira instrução executada na outra célula é aquela após a condição. E, finalmente,_
é apenas um alias para bytes nulos, por conveniência.Agora o código. Brian começa com isso:
Isso lê a entrada na primeira célula de Chuck, move a cabeça da fita para a esquerda com
{
(não faz nada agora) e diminui a entrada com-
antes de alternar o controle para Chuck se o valor ainda for diferente de zero. Isso inicia o loop principal. Chuck então executa este bit:Isso move a cabeça da fita em Brian até o fim, move duas células para a esquerda
=
e a imprime antes da cabeça da fita para a esquerda e alterna o controle de volta para Brian. É assim que os loops geralmente funcionam em B&C.Depois que a entrada for reduzida a zero, a
?
fita de Brian não fará nada. Então Brian executa esta parte:O
):(=
são no-ops, então o código real é justo>}-?
. Saímos da célula zero com>
, passamos para_
com}
, diminuímos para torná-lo diferente de zero e mudamos para Chuck com?
. Em seguida, o último bit em Chuck é executado:Isso simplesmente imprime os cinco caracteres na frente de Chuck, ou seja
=(:)-
. Observe que precisamos imprimir outro,=
já que o loop principal é apenas executadoN-1
vezes para entradaN
.fonte
V , 8 bytes
Experimente online!
V usa a codificação "Latin1".
Explicação:
fonte
Retina , 10 bytes
Experimente online!
Esta é uma simples substituição de regex.
Corresponde ao
.+
que corresponde a toda a entrada e a substitui por$*=(;)-
.Esse
$*
é um recurso exclusivo do Retina: é o operador especial de repetição de caracteres.Por exemplo,
5$*x
se tornariaxxxxx
.No caso de o argumento anterior estar ausente, a correspondência inteira é usada como argumento padrão.
fonte
Python, 21 bytes
Ideone it!
fonte
"="*input()+"(:)-"
Haskell, 25 bytes
'='<$[1..n]
é equivalente areplicate n '='
.fonte
Java 8, 52 bytes
Suíte de teste. (Compilar> Executar)
Créditos .
da maneira tradicional,
615453 bytes7 bytes graças a Kevin Cruijssen.
1 byte graças a Dom Hastings.
fonte
for(int i=0;i<n;i++)
pode jogar golfefor(;n>0;n--)
, pois você não precisa da entrada para mais nada além do loop for.for(;n-->0;)
salvar outro byte!Geléia , 9 bytes
Experimente online!
fonte
C, 38
Experimente em ideone.
fonte
f(n){~-printf(n?"=":"=(:)-")||f(~-n);}
.f(n){for(;n;printf(n--?"=":"(:)-"));}
por 1.05AB1E,
109 bytesExplicação
Experimente online
1 byte economizado graças a Adnan.
fonte
'=×"ÿ(:)-
para 9 bytes :). Isso usa interpolação de string.ÿ
faz :)Javascript, 23 bytes
fonte
n(3)
e recebeu umUncaught ReferenceError: n is not defined
erro ...x=n=>"=".repeat(n)+"(:)-"; x(7);
x=
e alterada para 25 caracteres?C #, 28 bytes
fonte
Python , 24 bytes.
input()
obtém entrada do usuário*
, quando usado em seqüências de caracteres e um número inteiro, cria uma nova sequência, composta de cópias unidas do original. Por exemplo:"hello "*3
saídashello hello hello
.Ao multiplicar
=
einput()
, você obtém uma sequência do=
comprimento que o usuário especifica.Usando
+
junta duas cordas, neste caso, o nosso corpo"=…="
com a cabeça,"(:)-"
para fazer a cobra.print
produz o resultado.fonte
GolfScript,
1110 bytesMultiplica "=" pela entrada e adiciona cabeçalho.
-1 graças a Leaky Nun
fonte
Mathematica,
2120 bytesFunção anônima. Pega um número n como entrada e retorna uma cobra de comprimento n como saída.
"="~Table~#
gera uma lista{"=", "=", ..., "="}
de comprimento n e<>"(:)-"
concatena os elementos da lista e anexa"(:)-"
à sequência resultante.fonte
"="~Table~#<>"(:)-"&
R,
3227 bytesEssa solução é bem simples, a
rep
função repete o primeiro elemento ("="
)scan()
vezes, que é de fato a entrada do usuário.EDIT :
Resposta ligeiramente mais curta, usando
scan()
diretamente.Alternativamente,
para uma cobra não picada ( 34 bytes )
fonte
sep=""
é necessário aqui, caso contrário, sua cobra parece com o um que atravessou a estrada de ferro:= = = (:)-
.sep
como uma nota lateral, no entanto;)Lote, 68 bytes
fonte
CJam,
1311 bytesTeste aqui.
-2 bytes graças ao quartata
fonte
'=*
vez de{'=}*
.Perl 6 ,
16 1512 bytesExplicação:
Uso:
fonte
JAISBaL , 9 bytes
Verbose:
Testado com JAISBaL-0.0.7 (o .jar compilado acabou de ser enviado, mas a fonte está no git há algum tempo)
fonte
#
antes do nome do idioma para parecer com todo mundo.PowerShell v2 +, 19 bytes
Programa completo. Recebe entrada
$args[0]
, usa multiplicação de string para construir o corpo e concatenação de string para prender na cabeça.fonte
"$("="*[int]$args[0])(:)-"
C,
46.4543byteseconomizou 2 bytes graças ao owacoder! economizou 3 bytes graças ao rici!
Experimente no Ideone!
fonte
-->
operador ataca novamente.>0
e salvar dois bytes.f(n){while(4-printf("=\0(:)-"+2*!n--));}
Cheddar, 15 bytes (não-competitivo)
Uma resposta direta.
fonte
Sesos , 11 bytes
Hexdump:
Experimente online!
Montador:
fonte
K, 17 bytes
Exemplo;
Explicação;
fonte
-1(
...);
?{(x#"="),"(:)-"}
Perl, 16 + 1 (
-p
sinalizador) = 17 bytesPrecisa de
-p
sinalizador, portanto, execute com:fonte
Minkolang 0.15 , 12 bytes
Experimente aqui!
Explicação
fonte
Befunge-98, 24 bytes
Pega a entrada numérica do usuário e depois imprime a cobra.
fonte
Matlab / Octave, 22 bytes
Esta é uma função anônima.
Experimente em Ideone .
Explicação
Suponha
n= 5
.1:n
produz o vetor de linha[1 2 3 4 5]
.~(1:n)
nega cada entrada, por isso dá[0 0 0 0 0]
....+61
adiciona61
a cada entrada, por isso dá[61 61 61 61 61]
.61
é o valor ASCII do caractere=
.[... '(:)-']
concatena isso com a string'(:)-'
. Isso é convertido automaticamente[61 61 61 61 61]
na cadeia de caracteres'====='
antes da concatenação.fonte