Este é meu amigo Thomas. Ele é meia árvore, meio emoticon.
| |
| :D |
| |
Ele está sozinho. Vamos fazer alguns amigos para ele!
Dado um ícone baseado em texto como entrada (por exemplo ಠ_ಠ
, :P
, >_>
, não 😀
, 🤓
ou 🐦
), a saída treemote correspondente.
O comprimento de um treemote é quantos caracteres ele possui (basicamente a maioria das funções de comprimento integradas para strings). Então ಠ_ಠ
tem comprimento 3.
A sintaxe para um treemote de comprimento n
é a seguinte:
|< 2+n spaces>| * ceil(n/2)
| <emote> | (note the spaces)
|< 2+n spaces>| * ceil(n/2)
Portanto, qualquer treemote de comprimento 3 se pareceria com:
| |
| |
| ಠ_ಠ |
| |
| |
Ele tem ceil(n/2)
segmentos de tronco separados por nova linha em ambos os lados, cada um com 2 + n
espaços internos.
Desafio: dado o emoticon baseado em texto, produza o treemote correspondente.
Outras regras:
- Isso é código-golfe , o que significa que quero que você escreva um código curto.
- Lacunas padrão não permitidas.
- Você deve suportar caracteres não-ascii, a menos que seu idioma não possa lidar com eles.
Casos de teste:
^_^
| |
| |
| ^_^ |
| |
| |
\o/
| |
| |
| \o/ |
| |
| |
(✿◠‿◠)
| |
| |
| |
| (✿◠‿◠) |
| |
| |
| |
D:
| |
| D: |
| |
( ͡° ͜ʖ ͡°)
| |
| |
| |
| |
| |
| |
| ( ͡° ͜ʖ ͡°) |
| |
| |
| |
| |
| |
| |
ಠ_ಠ
caso de teste.Respostas:
05AB1E ,
2725 bytesCódigo:
Explicação:
Usa a codificação CP-1252 . Experimente online! .
fonte
( ͡° ͜ʖ ͡°)
retorna resultados engraçados.( ͡° ͜ʖ ͡°)
em si é de 11 caracteres, mas parece 8 caracteres.Python 3.5,
767573 bytes:( Obrigado ao Blue por uma dica que salvou 2 bytes! )
Experimente Online! (Ideona)
Além disso, aqui está uma versão Python 2.7.5 não - competitiva, pois é muito maior em 87 bytes .
Isso ocorre porque a codificação padrão do Python 2 é
ascii
e, portanto, caracteres comoಠ
fora do intervalo de 128 pontos unicode contam como mais de 1 byte (list('ಠ')
rendimentos['\xe0', '\xb2', '\xa0']
). A única solução alternativa em que pude pensar nisso foi decodificar a entrada usandoutf-8
e depois seguir com essautf-8
sequência decodificada.Experimente esta versão online do Python 2! (Ideona)
fonte
/
em//
fazer o ceil divisão.Dyalog APL ,
373433 bytesUsuários do Chrome: veja nota de rodapé *
Casos de teste
* O Chrome exibe incorretamente os dois caracteres
≢⍵
(U + 2262, U + 2375) como≢⍵
(U + 2261, U + 0338, U + 2375) em vez de como̸≡⍵
(U + 0338, U + 2262, U + 2375). versão de exibição para Chrome:{↑'|'{⍺⍵⍺}¨b,(⊂⍵),b←' '/⍨⌈0.5×̸̸≡⍵}
fonte
{⍺⍵⍺}¨b
é o emoticon "Programador da APL na sua quinta xícara de café dando um joinha".V,
6057 bytesInfelizmente, V não tem quase nada em termos de operações matemáticas. As funções de divisão e teto aumentaram drasticamente a contagem de bytes.
Como contém um monte de imprimíveis desagradáveis, eis um hexdump reversível:
Explicação:
fonte
Vitsy, 43 bytes
Explicação:
Experimente online!
Observe que, devido a um erro no TIO, a entrada com caracteres unicode não funcionará. Você precisará usar a versão local em vez disso.Obrigado, @Dennis!fonte
Pyke, 31 bytes
Experimente aqui!
Obrigado @ R.Kap por salvar um byte com o truque de dividir o piso
fonte
Ruby, 57 bytes
Usa truques de divisão inteira e tira proveito das peculiaridades da
puts
função Ruby .fonte
JavaScript ES6,
8378 bytesfonte
f=
, que economiza 2 bytes. Salve outros 2 bytes movendo-see
dentro ea
fora do modelo . Salve outros 2 bytes inserindo espaços em vez de adicionar 2 à repetição. Salvar outro monte de bytes usando pouco mudando para dividir por 2.> <> , 103 bytes
Experimente online!
Essa solução é baseada na observação de que cada linha consiste em
| <x> |
, onde<x>
está o padrão na linha do meio e o mesmo número de espaços nas outras linhas.Depois de ler a entrada (comprimento
n
) do STDIN, o programa abren*(n+(n%2))
espaços. A pilha é então rolada metade do número de vezes. Em seguida, todos osn
caracteres , exceto os são puxados para uma nova pilha, deixando uma pilha de pilhas que consiste emn
espaços ou no próprio padrão (apenas na pilha do meio). Na etapa de saída, o conteúdo da pilha atual é impresso, cercado por|
e|
.fonte
C, 89 bytes
Não tenho certeza se ele vai lidar com emoticons não-ascii embora ....
fonte
strlen
conta os bytes até o primeiro zero byte e, como resultado, os emoticons não-ascii são considerados muito mais amplos do que são.PowerShell v3 +, 72 bytes
Leva a string de entrada
$a
. Constrói$b
como (a cadeia vazia de extremidade de tubo (com$a.length
espaços no meio) e uma nova linha à direita) repetida (comprimento + 1 mudou para a direita um bit, ou seja, dividido por dois e no teto) vezes. Em seguida, gera as cópias de$b
, a sequência de entrada com seus próprios pipes e, finalmente, as cópias de$b
novo.Requer v3 + para o
-shr
operador de troca de bits .Exemplos
fonte
Pitão, 30 bytes
Estou surpreso que uma tarefa tão fácil não seja implementada no Pyth.
Experimente online!
fonte
TSQL,
9688 bytesExperimente online!
fonte