Se le da una lista de 2 tuplas de enteros positivos, de la forma:
a1 b1, a2 b2, ..., an bn
En otras palabras, las 2 tuplas están separadas por comas, y los enteros dentro de cada tupla están separados por espacios. Todos los a
números están en orden estrictamente creciente, así como el b
s. Su objetivo es "llenar los vacíos". Lo que se entiende por eso es lo siguiente:
- Si a i +1 == a i + 1 , no hagas nada.
- De lo contrario, si a i +1 <a i + 1 , insertará tuplas en la secuencia de la siguiente manera: a i b i , a i +1 b i + 1 , a i +2 b i + 1 , ..., a i + 1 -1 b i + 1 , a i + 1 b i + 1 .
En otras palabras, si hay un "espacio" en el a i , entonces insertará más en la lista con el b
s insertado para ser b i + 1 (el final del espacio).
Ejemplo :
Entrada: 6 125, 7 170, 10 185
Salida: 6 125, 7 170, 8 185, 9 185, 10 185
Puntaje : el puntaje del envío es el número de bytes necesarios para construir un programa para, cuando se le da una cadena como se describió anteriormente, generar en el mismo formato la lista de tuplas "llena".
¡La puntuación más baja gana!
a1 b1, a2 b2, a3 b3
el único par que activa una insercióna1 b1, a3 b3
requiere una inserción dea2 b3
, pero ¿dónde debería insertarse?Respuestas:
Pyth,
3130 bytes1 byte gracias a Jakube.
En el nivel superior, para cada número en el rango de las a, la lista se filtra por a's mayores que ese número, luego la b de la primera tupla se usa como la b.
Demostración.
fuente
CJam,
42413938 bytesPruébelo en línea en el intérprete de CJam .
fuente
Python 2,
192180171 BytesDesafortunadamente, toma una tonelada de bytes analizar la entrada y el formato de salida. Además, gracias a Sp3000 por poner mi cerebro en marcha :)
fuente
Python 3.5.0b1 +, 123 bytes
Analizar la entrada fue un dolor, así que simplemente lo ignoré y lo analicé tal como está. Esto significa que
se analiza como
de ahí el splat en el formato de cadena.
fuente
(a,*b)
tener que hacer((a,)+b)
o(a,b[0])
. Las versiones anteriores de Python darían unSyntaxError
.JavaScript ( ES6 ),
97103Al encontrar la redacción de la pregunta difícil de entender, basé mi trabajo en el ejemplo.
Primero intente, podría haber una forma más corta con solo 1 divisiónEscaneando la cadena de entrada en una sola pasada usando reemplazar..
fuente
Haskell, 152 bytes
Cómo funciona
p
es una función auxiliar de formato de cadena simple:(%)
es una función de "búsqueda" para rellenar espacios en blanco:[head a..last$init a]
es el rango de números a utilizar: desde el primer entero analizado hasta el penúltimo entero analizado. (Esto0+
ayuda al verificador de tipos a inferir que todo el programa trata conNum
valores; de lo contrarioread
, no sabe qué analizar). LuegoconcatMap
(o=<<
) nuestras funciones anteriores sobre el rango para obtener una cadena grande. Eso es lo queg
hace:Finalmente hay
main
. Es de la formainteract$s
, por lo que todo lo que nos importa es la funcións :: String -> String
que convierte stdin en stdout .Primero, para leer la entrada, nos dividimos en palabras:
Entonces tenemos
concatMap
la funciónmap(read.fst).lex
sobre esta lista. Por una palabra, esto hace:Entonces, para una lista de palabras, obtienes
concat [[6], [125], [7], ...] == [6, 125, 7...]
, que es la lista a la que queremos pasarg
. Finalmente, nos dadrop
la guía", "
de la cadenag
.fuente
CJam, 34 bytes
Comencé con la respuesta de Dennis al golf , pero finalmente no se parece en nada al original.
Pruébalo en línea.
fuente
Perl, 67 bytes
(Código de 66 caracteres + opción de línea de comando de 1 carácter)
Ejemplo de ejecución:
Explicación: El enfoque general es construir una expresión regular que sea capaz de mirar hacia el próximo token para determinar si aumenta en uno (la expresión regular es basura en la aritmética, por lo que agregamos una ejecución perl para hacer la adición, luego busque eso). Si no es así, reemplazamos esta coincidencia con el texto original, más el nuevo token con el índice aumentado. Luego repetimos esto varias veces en la entrada hasta que no cambie.
Para la explicación a continuación, una 'sección' es el valor separado por comas, y los 'tokens' son los valores separados por espacios dentro de este.
fuente
C #, 174 bytes
Sangrado por claridad:
fuente
Bash + coreutils, 87
Prueba de salida:
fuente
Python 3, 232 bytes
En realidad no es tan breve, pero utiliza un método diferente a la solución de Python ya publicada
fuente
Java, 229 bytes
Yo creo que he corté esto abajo lo más que pueda. Me interesaría ver si hay un mejor enfoque que conduzca a una respuesta Java más corta:
Formateado:
fuente