Reto
Mark es un estudiante que recibe sus N
calificaciones de forma concatenada en una sola línea.
El desafío es separar sus marcas, sabiendo que cada marca solo puede ser 0
o 1
o 2
o 3
o 4
o 5
o 6
o 7
o 8
o 9
o 10
.
Entrada
N
Número natural y una línea.
Salida
Un conjunto de números naturales.
Ejemplo
N, One line------------------> Set of marks
3, '843'---------------------> [8, 4, 3]
1, '0'-----------------------> [0]
2, '1010'--------------------> [10,10]
3, '1010'--------------------> [1,0,10] or [10,1,0]
4, '1010'--------------------> [1,0,1,0]
9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0]
12,'499102102121103'---------> [4, 9, 9, 10, 2, 10, 2, 1, 2, 1, 10, 3]
5, '71061'-------------------> [7, 1, 0, 6, 1]
11,'476565010684'------------> [4, 7, 6, 5, 6, 5, 0, 10, 6, 8, 4]
4, '1306'--------------------> [1, 3, 0, 6]
9, '51026221084'-------------> [5, 10, 2, 6, 2, 2, 10, 8, 4]
14,'851089085685524'---------> [8, 5, 10, 8, 9, 0, 8, 5, 6, 8, 5, 5, 2, 4]
11,'110840867780'------------> [1, 10, 8, 4, 0, 8, 6, 7, 7, 8, 0]
9, '4359893510'--------------> [4, 3, 5, 9, 8, 9, 3, 5, 10]
7, '99153710'----------------> [9, 9, 1, 5, 3, 7, 10]
14,'886171092313495'---------> [8, 8, 6, 1, 7, 10, 9, 2, 3, 1, 3, 4, 9, 5]
2, '44'----------------------> [4, 4]
4, '9386'--------------------> [9, 3, 8, 6]
Reglas
- Cuando son posibles varias salidas, proporcione solo una salida.
- Solo la marca de valor
10
está en dos decimales, otros están en un decimal. - La entrada y la salida se pueden dar en cualquier formato conveniente
- No es necesario manejar entradas inválidas
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
code-golf
string
array-manipulation
mdahmoune
fuente
fuente
n, 'string'
pares del bloque de texto de ejemplo copiado:spl = [item.split('-')[0] for item in text.split('\n')]
Respuestas:
Brachylog ,
2321 bytes-2 bytes gracias a Fatalize
Pruébalo en línea!
La entrada es un par
[Line, N]
.Este es mi primer programa Brachylog, por lo que probablemente haya mucho margen de mejora.
Es muy lento cuando la longitud de la línea> 7.
Explicación:
(*)
ịṫ?
comprueba que no hay ceros a la izquierda. Convierte la cadena a entero y luego nuevamente a cadena y se compara con la cadena original.fuente
ị
y para la comprobación de cero:h~c.{ℕ≤10}ᵛ&t~l
. Sin embargo, esto probablemente sea más lento, ya que la desconcatenación de enteros debe funcionar incluso para enteros desconocidos a través de restricciones, lo que lo hace ineficiente.h
yt
para obtener el primer / último elemento es más eficiente que usar∋
para ambos (que en la mayoría de los programas ni siquiera funcionará)).Perl 6 , 25 bytes
Pruébalo en línea!
Bloque de código anónimo que toma un número y una cadena y regresa como un objeto Match.
Explicación:
fuente
Python 3 , 47 bytes
Pruébalo en línea!
Toma la "una línea" como una cadena de bytes con bytes sin procesar
\x00 - \x09
. Si no es aceptable:Python 3 , 56 bytes
Pruébalo en línea!
Toma "una línea" como cadena de bytes.
fuente
V ,
17, 12 bytesPruébalo en línea!
Estaba contento con 17 bytes, pero 05AB1E llegó con 13, y no podía dejar que un desafío quedara sin respuesta. :RE
Hexdump:
Solución alternativa:
Desafortunadamente, esto reemplaza
10
con1 0
fuente
Ruby , 57 bytes
Pruébalo en línea!
Puede que este no sea el enfoque más golfista, pero parece una idea divertida sustituir temporalmente
10
un hexadecimalA
, que por cierto también es una calificación alta (si consideramos el sistema de calificación AF :))fuente
Haskell , 68 bytes
Pruébalo en línea!
Avariciosamente, toma 10s siempre que haya más dígitos que marcas restantes.
fuente
JavaScript,
5752 bytesPruébalo en línea
fuente
Python 3 ,
71 6859 bytesabajo otros 9 bytes gracias a los ovs.
Pruébalo en línea!
Inicialmente estaba tratando de usar
str.partition()
recursivamente, pero el usoreplace
me golpeó en la cara no mucho después. ¿Alguien puede mejorar en esto?Además, aquí hay un enlace TIO que utilicé para convertir los casos de prueba en algo más copiable / pegable
fuente
: [c
y'x' else
y10 for
<number>e
,<letter><number>
,f'
.lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]
.Haskell , 98 bytes
¡Pruébalo en línea o prueba todo!
Explicación
La función
s
realiza todas las divisiones posibles, por ejemplo: se"1010"
convierte en[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
, observe cómo terminan las divisiones más largas al principio (porque1:0:y
viene antes10:y
).Con eso en mente, podemos tomar todos estos valores y filtrar los
y
correos electrónicos donde sey == take n y
mantienen las divisiones que son más cortas de lo requerido. Por ejemplo con4
dejamos la lista igual[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
.Ahora podemos obtener el primer elemento en esa lista porque las entradas siempre serán válidas (por ejemplo
5!"1010"
,[1,0,1,0]
también darían , pero no necesitamos manejarlo).Nota: de alguna manera conté mal ...
y==take n y
tiene la misma longitud quelength y==n
: Sfuente
Perl 5
-plF
, 39 bytesPruébalo en línea!
fuente
Limpio , 128 bytes
Pruébalo en línea!
fuente
05AB1E , 13 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
JavaScript (nodo de Babel) ,
70 6959 bytesToma entrada como
(n)(line)
.Pruébalo en línea!
Comentado
JavaScript (ES6),
6459 bytesGuardado 5 bytes gracias a @ guest271314
Toma entrada como
(n)(line)
.Pruébalo en línea!
Comentado
fuente
s.match()
devuelve una matriz de cadenas pero"10"
puede dividirse en[1,0]
(2 enteros) en la función de devolución de llamada deflatMap()
.eval(`[${s}]`.replace('1,0',10))
Java (OpenJDK 8) , 78 bytes
Un buen one-liner usando la API de streams.
Pruébalo en línea!
Cómo funciona
fuente
R , 63 bytes
Si bien la longitud de la cadena es mayor que
n
, sustituya los siguientes 10 que alcanza por a":"
(el carácter ASCII después de 9). Luego se divide en números tomando el valor ASCII de cada carácter en la cadena.Pruébalo en línea!
fuente
Rojo , 91 bytes
Pruébalo en línea!
fuente
Jalea , 18 bytes
Pruébalo en línea!
fuente