En Haskell la notación de la lista:
[a,b,c]
Es solo azúcar sintáctico para:
a:b:c:[]
Y la notación de cadena:
"abc"
Es solo azúcar sintáctico para:
['a','b','c']
Esto significa que la cadena:
"abc"
Es lo mismo que:
'a':'b':'c':[]
Tarea
Dada una cadena, debe mostrar cómo se vería la versión sintaxis en Haskell.
Reglas
Recibirá una cadena por cualquier método de entrada válido, debe generar una cadena que termine
:[]
con cada carácter de la entrada rodeado'
y separado por:
. La cadena vacía debería salir[]
.Puede suponer que no recibirá ningún carácter que requiera escapar (p
'
. Ej. , Nuevas líneas, pestañas ...) y que la entrada estará en el rango de ASCII imprimibleEste es el código de golf al que debe apuntar para minimizar el conteo de bytes de su respuesta
Casos de prueba
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
y'
son sintácticamente diferentes.Respuestas:
Haskell , 26 bytes
Pruébalo en línea!
Explicación:
En notación sin punto y usando en
concatMap
lugar de=<<
, esto se convierte enDada una cadena
s
, asignamos cada carácterc
a una cadena"'c':"
usando lashow
función que devuelve una representación de cadena de la mayoría de los tipos de Haskell. Esas cadenas se concatenan y[]
se agrega una final .Aunque no fue solicitado por el desafío, esta respuesta incluso funciona con un escape adecuado, porque
show
se encarga de ello:f "'"
rendimientos"'\\'':[]"
.fuente
(++'[':']':[]).((++':':[]).show=<<)
, ¿no?Haskell,
332826 bytesPruébalo en línea!
fold
la función de punto libre dada desde la derecha en la cadena de entrada que comienza con[]
. La función es: mostrar char como un char de Haskell, es decir, rodeado'
y concatenar con el resultado hasta ahora después de poner un:
frente.Editar: @ Ørjan Johansen guardó dos bytes. ¡Gracias!
fuente
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
para construir la lista en lugar de++
, aunque ambos tienen su propia elegancia.Python 3 , 32 bytes
Pruébalo en línea!
fuente
JavaScript ES6,
424031 bytesReemplaza cada char con
'<char>':
, luego agrega[]
al finalPruébalo en línea!
fuente
$&
.Lisp común,
5042 bytesPruébalo en línea!
Reducido gracias al comentario de @coredump, al usar en
read
lugar de definir una función.fuente
(format t"~{'~a':~}[]"(coerce(read)'list))
(algunas otras preguntas son entradas y salidas más estrictas, pero aquí está bien)V , 11 bytes
Pruébalo en línea!
Utiliza una expresión regular para rodear cada carácter de entrada
'':
y luego seA
extiende[]
hasta el final.fuente
C,
555453 bytesfuente
char *h
puts("[]");
una salida con una nueva línea final para guardar algunos bytes.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 bytes-2 bytes gracias a ovs
Pruébalo en línea!
fuente
*map
existe ...input()
durante los últimos 20 minutos (literalmente), cuando podría ser un lambda @. @"[]"
con[]
05AB1E ,
15 12 1110 bytes-3 bytes gracias a carusocomputing
-1 byte gracias a Adnan
-1 byte gracias a la genial idea de Erik the Outgolfer
Pruébalo en línea!
fuente
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
que funcionaría para 11, pero seJ
une a la matriz global, no a toda la pila en esa situación.R, 51 bytes
fuente
scan(,'')
lugar de una función.f<-
desde el principio de tu códigoPyth,
14108 bytes¡Prueba esto!
-2 bytes gracias a @isaacg
Finalmente, Pyth es bueno en algo.
explicación
fuente
M
y no sé por qué no lo uséa
. ¡Ahora somos al menos 2 bytes más cortos que todas las otras soluciones aquí!Perl 6 , 19 bytes
fuente
Retina, 12
2 etapas:
'
':
rodea[]
al finalPruébalo en línea .
fuente
Python 2 ,
48464437 bytes-2 bytes gracias a Rod. -7 bytes gracias a Wheat Wizard.
Pruébalo en línea!
fuente
lambda s:':'.join(map(repr,[*s,[]]))
olambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
2927 bytesPruébalo en línea!
fuente
JavaScript (ES6), 36 bytes
Intentalo
fuente
Gelatina ,
11 108 bytes-1 byte gracias a Christian (elimine la concatenación
;
y utilice la impresión implícita)+0 bytes (fijos para el caso del borde de una cadena vacía - previamente el programa completo:
ŒṘ€j”:“:[]
)-2 gracias a Erik the Outgolfer (el uso
p
en lugar de;€
since”:
es efectivamente la longitud 1; el usoØ[
se ha convertido en una abreviatura de⁾[]
)Pruébalo en línea!
Un programa completo que imprime el resultado (como enlace devuelve una lista de listas de caracteres).
... pero ¿hay alguna manera de ahorrar usando STDIN?
¿Cómo?
fuente
PHP , 41 bytes
Pruébalo en línea!
fuente
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
opción adicional con qué opción debe ejecutarse? Hacer un enfoque propio, diría yo para obtener votos a favor y Titus han hecho algo similar mientras tanto-R
bandera. Las etiquetas se pueden cerrar incluso en construcciones comoeval()
ycreate_function()
.Perl 5 , 22 bytes
19 bytes de código +
-p
bandera.O, por el mismo ByteCount,
s/./'$&':/g;s/$/[]/
.Muy sencillo:
s/./'$&':/g
rodea a cada personaje con comillas y agrega un:
después.$\
se imprime de forma implícita después de cada impresión, por lo que establecer que[]
da salida a la final[]
.Pruébalo en línea!
fuente
Java (OpenJDK 8) ,
868376 bytes-3 bytes gracias a @KevinCruijssen
-7 bytes gracias a @FlorianSchaetz
Pruébalo en línea!
fuente
;
no tiene que contarse para las respuestas lambda,;
después de}
eso no es necesario en absoluto, y el{
y}
puede eliminarse alrededor del ciclo for. Y podría guardar 4 bytes más en Java 10 cambiando tanto elString
comochar
avar
.brainfuck, 68 bytes
Pruébalo en línea!
fuente
Brain-Flak ,
135, 131 bytesPruébalo en línea!
+1
Byte para la-c
bandera.Gracias a WheatWizard por eliminar los NOOP muy obvios que tenía sin ninguna razón XD.
fuente
ML estándar ,
5250 bytes¡Ahorré 2 bytes gracias a @Laikoni!
Pruébalo en línea!
String.translate
es un nombre por desgracia mucho tiempo, pero fue 5 bytes más corto que el usoconcat
,map
yexplode
.fuente
Cubix ,
3129 bytesA
también se puede sustituir pori
;tratando de averiguar si hay una buena manera de exprimir otro byte o dos de esto.-2 bytes gracias a MickyT! ¡También superado por MickyT !Se adapta a un cubo 3x3x3:
¡Míralo en línea!
Pruébalo en línea!
fuente
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 bytes
Pruébalo en línea!
fuente
[1:-1]
parte, por lo que fue más largo que totalmente humanos. +1APL (Dyalog) ,
2119 bytesPruébalo en línea!
'[]',⍨
los soportes anexados a'.'
cada personaje⎕R
PCRE R reemplazado por'''&'':'
una cita, el partido, una cita y dos puntosfuente
sed ,
1918 bytes-1 byte gracias a Jordan
Pruébalo en línea!
fuente
PHP, 39 bytes
Ejecutar como tubería con
-F
.fuente
Convexo , 10 bytes
Pruébalo en línea!
fuente
Cubix , 27 bytes
Pruébalo en línea!
Míralo correr
Una variación ligeramente diferente de la respuesta de Guiseppe . Esto pone los dos puntos y la cita en la pila. Luego recorre la entrada, intercambia y emite la pila. Solo se desecha la entrada y se retienen los dos puntos y la cita.
Una vez que se alcanza el final de la entrada, la IP se pregunta un poco alrededor del cubo, agregando y sacando los corchetes. Hay un par de comandos redundantes en la mezcla.
fuente