Instrucciones
Barry es un desarrollador de back-end no tan bueno a cargo de una pequeña API que debería brindarle información sobre las compras realizadas en la tienda de un cliente. Sin embargo, no ha hecho un gran trabajo y su jefe le dice que lo arregle en el lado del cliente. Lo ideal es recibir valores separados por comas, como 927,2,45,90
la que corresponde a algo como item_id
, item_amount
, unit_price
,total
En este primer rompecabezas solo nos preocupamos item_id
y item_amount
necesitamos los otros campos para presentar el problema. Barry consigue a veces cosas mezcladas y los retornos de ruido como parte de la salida, también se equivoca en el orden, volver noise
, noise
, unit_price
, total
, item_id
, item_amount
.
Tu tarea
Es necesario almacenar en un mapa (o estructura similar) los pares de item_id
y item_amount
con independencia de que Barry los devuelve correctamente o no e imprimir cada elemento en una nueva línea en el menor número de caracteres posibles. (El almacenamiento no es obligatorio, solo nos importa la salida)
Entrada de muestra (formatos mixtos correctos y desordenados)
103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000
En otras palabras, la entrada será a,b,x,x
o x,x,x,x,a,b
donde lo que nos importa es a
& b
. Debe proporcionar código suponiendo que tengamos una variable llamada G
(o cualquier otro nombre) con todas las líneas de csv.
Salida de muestra
103,2
106,1
67,2 //This one was messy
4,20
Tolerancia
Hay un cierto margen de tolerancia cuando se trata de la respuesta. También se aceptarán respuestas en formatos similares pero que cumplan con los valores correctos. Formatos como [a,b]
, (a,b)
o {a,b}
son válidas, pero a,b
se prefiere.
Aunque el primer acertijo tuvo una aceptación mixta debido a que fue fácil y rápido de resolver, también sentí que a algunas personas también les gustaba. Así que voy a seguir haciendo quickgolfs por ahora
x,x,x,x
yx,x,x,x,x,x
dondex
denota un número?Respuestas:
Pyth, 10 bytes
Pruébelo en línea: Pyth Compiler / Executor
(Los primeros 4 caracteres
=G.Q
leen todos los datos y los almacenanG
)Explicación
fuente
Perl, 24
Ejemplo:
fuente
Python 3,
123767262 bytesSoy un recién llegado, tengo que comenzar en alguna parte ...
Con las sugerencias de xnor y DLosc (62 bytes):
fuente
for
pueden estar todas en la misma línea en Python, siempre que no haya otra declaración de bloque en el cuerpo.for
para evitar sangrías. El condicional[0,4][...]
se puede acortar a4*(...)
, usando el hecho de que los bools equivalen a 0/1. Además, si escribed[x:x+2]
comod[x:][:2]
, aunque sea un carácter más largo, le permite evitar guardar la expresión parax
una variable.Sed, 32 bytes
Esto elimina todo hasta la cuarta coma si hay una. Luego elimina todo de la segunda coma (que puede haber sido previamente sexta).
¡Y hasta logré justificar correctamente!
fuente
Javascript, 44 bytes
Asumiendo entrada en variable
G
.Editar: Me acabo de dar cuenta, esto se parece mucho a la solución perl de nutki.
Fragmento de demostración:
fuente
Scala, 68 bytes
- MrBones
Scala,
4670 bytesEditar: imprimir el resultado
Manifestación
fuente
G.map{k=>val x=k.split(",");println((x++x).slice(4,6).mkString(","))}
G.map(_.split(",")).map(x=>println((x++x).slice(4,6).mkString(",")))
CJam,
181514 bytesPruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
Shell POSIX, 30 bytes
Asumiendo POSIX
sed
ycut
están presentes:Duplica la línea, dejando los datos de interés listos para ser extraídos de los campos 5 y 6.
fuente
Javascript,
1171129995847671 bytesJS Fiddle
fuente
;
con,
en el cuerpo del bucle y, por lo tanto, quitando los frenos{
y}
for of
usted puede guardar 3 bytes. Funciona en cualquier navegador moderno.for(r of q=G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])
Pip , 12 + 1 = 13 bytes
Utiliza el
-l
indicador, que proporciona la salida como listas de números separadas por espacios en cada línea. *Explicación:
g
. Comog
normalmente se inicializa a partir de los argumentos de la línea de comandos, también puede colocar la entrada allí para obtener los mismos resultados.^',
divide (cada cadena en) la lista en comas.M
asigna una función a cada elemento en el resultado._@[4 5]
define una función lambda. El argumento de la función está representado por_
;@[4 5]
devuelve una lista de sus elementos 4 y 5. Si la lista tiene seis elementos, estos serán los dos últimos. Si tiene cuatro, los índices se ajustan, por lo que el resultado son los dos primeros. (Ej"abcd"@4 == "abcd"@0 == "a"
.)[[103 2] [106 1] [67 2]]
, que se imprime automáticamente al final del programa. La-l
bandera se une a cada sublista en el espacio y luego a todo en la nueva línea, por lo que el resultado es el siguiente:* Actualmente. Puedo cambiar este comportamiento, pero todavía estoy planeando tener una bandera que haga lo mismo.
fuente
Perl, 37
35
caracteres+2
para-p
y-l
. No estoy seguro de si hay un enfoque en Perl que supere supere la solución de @ nutki , pero pensé que publicaría esta idea que tenía de todos modos.Corre con:
fuente
bash, 54
fuente
C, 95 bytes
El código es simple. Aquí está la versión sin golf:
Pruébalo aquí
fuente
Ruby, 53
o es bueno
fuente