Este es mi amigo Thomas. Es mitad árbol, mitad emoticon.
| |
| :D |
| |
Esta solo. ¡Hagámosle algunos amigos!
Dado un emoticon basado en texto como entrada (por ejemplo ಠ_ಠ
, :P
, >_>
, no 😀
, 🤓
o 🐦
), salida de la treemote correspondiente.
La longitud de una mota de árbol es cuántos caracteres tiene (básicamente, la mayoría de las funciones de longitud incorporadas para las cadenas). Entonces ಠ_ಠ
tiene longitud 3.
La sintaxis para una treemote de longitud n
es la siguiente:
|< 2+n spaces>| * ceil(n/2)
| <emote> | (note the spaces)
|< 2+n spaces>| * ceil(n/2)
Por lo tanto, cualquier treemote de longitud 3 se vería así:
| |
| |
| ಠ_ಠ |
| |
| |
Tiene ceil(n/2)
segmentos de tronco separados por nueva línea a cada lado, cada uno con 2 + n
espacios en el interior.
Desafío: dado el emoticón basado en texto, genere la mota de árbol correspondiente.
Otras reglas:
- Este es el código de golf , lo que significa que quiero que escribas un código corto.
- Lagunas estándar no permitidas.
- Debe admitir caracteres que no sean ascii a menos que su idioma no pueda manejarlos.
Casos de prueba:
^_^
| |
| |
| ^_^ |
| |
| |
\o/
| |
| |
| \o/ |
| |
| |
(✿◠‿◠)
| |
| |
| |
| (✿◠‿◠) |
| |
| |
| |
D:
| |
| D: |
| |
( ͡° ͜ʖ ͡°)
| |
| |
| |
| |
| |
| |
| ( ͡° ͜ʖ ͡°) |
| |
| |
| |
| |
| |
| |
ಠ_ಠ
caso de prueba.Respuestas:
05AB1E ,
2725 bytesCódigo:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
( ͡° ͜ʖ ͡°)
devuelve resultados divertidos.( ͡° ͜ʖ ͡°)
tiene 11 caracteres de largo, pero parece tener 8 caracteres de largo.Python 3.5,
767573 bytes:(¡ Gracias a Blue por un consejo que ahorró 2 bytes! )
¡Pruébelo en línea! (Ideona)
Además, aquí hay una versión de Python 2.7.5 no competitiva ya que es mucho más larga a 87 bytes .
Esto se debe a que la codificación predeterminada de Python 2 es
ascii
, y por lo tanto, los caracteres que se encuentranಠ
fuera del rango de puntos unicode 128 cuentan como más de 1 byte (list('ಠ')
rendimientos['\xe0', '\xb2', '\xa0']
). La única solución que se me ocurrió para esto fue decodificar primero la entrada usandoutf-8
, y luego seguir con estautf-8
cadena decodificada.¡Prueba esta versión de Python 2 en línea! (Ideona)
fuente
/
en//
hacer el ceil división.Dyalog APL ,
373433 bytesUsuarios de Chrome: ver nota al pie *
Casos de prueba
* Chrome muestra incorrectamente los dos caracteres
≢⍵
(U + 2262, U + 2375) como≢⍵
(U + 2261, U + 0338, U + 2375) en lugar de como̸≡⍵
(U + 0338, U + 2262, U + 2375), así que aquí hay un Versión de pantalla para Chrome:{↑'|'{⍺⍵⍺}¨b,(⊂⍵),b←' '/⍨⌈0.5×̸̸≡⍵}
fuente
{⍺⍵⍺}¨b
es el emoticón "programador APL en su quinta taza de café dando un pulgar hacia arriba".V,
6057 bytesDesafortunadamente, V no tiene casi nada en términos de operaciones matemáticas. Las funciones de división y techo aumentaron drásticamente el recuento de bytes.
Como esto contiene un montón de desagradables no imprimibles, aquí hay un hexdump reversible:
Explicación:
fuente
Vitsy, 43 bytes
Explicación:
Pruébalo en línea!
Tenga en cuenta que, debido a un error en TIO, la entrada con caracteres Unicode no funcionará. Tendrás que usar la versión local en su lugar para esos.Gracias @ Dennis!fuente
Pyke, 31 bytes
Pruébalo aquí!
Gracias @ R.Kap por guardar un byte con el truco de división de piso
fuente
Ruby, 57 bytes
Utiliza trucos de división de enteros y aprovecha las peculiaridades de la
puts
función de Ruby .fuente
JavaScript ES6,
8378 bytesfuente
f=
, eso le ahorra 2 bytes. Ahorre otros 2 bytes moviéndosee
dentro de la plantilla ya
afuera. Guarde otros 2 bytes insertando espacios en lugar de agregar 2 a la repetición. Ahorre otro grupo de bytes utilizando el desplazamiento de bits para dividir entre 2.> <> , 103 bytes
Pruébalo en línea!
Esta solución se basa en la observación de que cada línea consiste
| <x> |
, dónde<x>
está el patrón en la línea media y el mismo número de espacios en las otras líneas.Después de leer la entrada (longitud
n
) de STDIN, el programa empujan*(n+(n%2))
espacios. La pila se rueda la mitad de las veces. A continuación, todos menos losn
personajes son arrastrados a una nueva pila, dejando una pila de pilas que consisten enn
espacios o en el patrón en sí (solo en la pila central). En el paso de salida, el contenido de la pila actual se imprime, rodeado por|
y|
.fuente
C, 89 bytes
Sin embargo, no estoy seguro de si manejará un emoticón no ASCII ...
fuente
strlen
cuenta los bytes hasta el primer byte cero y, como resultado, los emoticones no ASCII se consideran mucho más amplios de lo que son.PowerShell v3 +, 72 bytes
Toma la cadena de entrada
$a
. Se construye$b
como (la cadena vacía terminada en tubería (con$a.length
espacios en el medio) y una nueva línea final) repetida (longitud + 1 desplazada a la derecha un bit, es decir, dividida por dos y tope) veces. Luego genera las copias de$b
, la cadena de entrada con sus propias canalizaciones, y finalmente las copias de$b
nuevo.Requiere v3 + para el
-shr
operador de bit-shift .Ejemplos
fuente
Pyth, 30 bytes
Me sorprende que una tarea tan fácil no se implemente en Pyth.
Pruébalo en línea!
fuente
TSQL,
9688 bytes¡Prueba en línea!
fuente