No odies cuando quieras copiar y pegar una lista de números (vector, matriz ...), de un programa a otro, pero el formato en el que tienes los números no coincide con el formato en el que lo necesitas ?
Por ejemplo, en MATLAB puede tener una lista separada por espacios como esta:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
En Python, necesitaría insertar comas para hacer que esa lista sea una entrada válida, por lo que tendría que convertirla a
[1, 2, 3, 4, 5]
para que funcione En C ++ es posible que desee algo como:
{16,2,77,29}
y así.
Para simplificar la vida de todos, creemos un convertidor de listas, que tome una lista en cualquier formato * y genere una lista en otro formato especificado.
Los corchetes válidos son:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
Los delimitadores válidos son:
a,b,c
a;b;c
a b c
a, b, c <-- Several spaces. Must only be supported as input.
a; b; c <-- Several spaces. Must only be supported as input.
a b c <-- Several spaces. Must only be supported as input.
Nota, la entrada puede tener cualquier número de espacios entre los números, pero la salida puede optar por tener cero espacios (si ,
o ;
se utiliza como delimitador), o un solo espacio (si es el espacio delimitado).
Además de la lista de entrada, habrá una cadena (o dos caracteres) que define el formato de salida. La cadena de formato será primero ser el tipo corchete de apertura (solamente), [
, (
, <
, {
o (el último es un único espacio utiliza cuando no hay soporte circundante). El tipo de paréntesis será seguido por el tipo de delimitador
,
, ;
o (el último es un espacio único). Los dos caracteres de formato de entrada deben tomarse como un solo argumento (cadena o dos caracteres consecutivos) en el orden descrito anteriormente.
Algunos ejemplos de cadenas de formato:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
Reglas:
- La salida no puede tener espacios iniciales
- La salida puede tener espacios finales y una nueva línea
- La salida solo debe ser la lista de números, no
ans =
similar
- La salida solo debe ser la lista de números, no
- La entrada será una lista de números enteros o decimales (tanto positivos como negativos (y cero)), y una cadena de dos caracteres
- Si la entrada consta de solo enteros, la lista de salida debe tener solo enteros. Si la lista de entrada consta de números enteros y decimales, todos los números de salida pueden ser números decimales. (Es opcional mantener los enteros como enteros)
- El número máximo de dígitos después del punto decimal que debe admitirse es 3.
- La entrada será dos argumentos. Es decir, los números están en un argumento, y la cadena de formato es un argumento único.
- El código puede ser un programa o función
- La entrada puede ser argumento de función o STDIN
Algunos ejemplos:
1 2 3 4
[,
[1,2,3,4]
<1; 2; 3>
; <-- Space + semicolon
1;2;3
not valid: 1.000;2.000;3.000 (Input is only integers => Output must be integers)
{-1.3, 3.4, 4, 5.55555555}
[,
[-1.300,3.400,4.000,5.556] (5.555 is also valid. Rounding is optional)
also valid: [-1.3,3.4,4,5.55555555]
El código más corto en bytes gana. Como siempre, el ganador será seleccionado una semana a partir del día en que se publicó el desafío. Las respuestas que se publican más tarde aún pueden ganar si son más cortas que el ganador actual.
Tabla de clasificación
El Fragmento de pila al final de esta publicación genera el catálogo a partir de las respuestas a) como una lista de la solución más corta por idioma yb) como una tabla de clasificación general.
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
## Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
## Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
para denotar elementos negativos. :(