El reto
En este desafío, debe realizar dos tareas diferentes (pero relacionadas) dependiendo del orden de la entrada.
Su programa recibirá una cadena sy un número entero ncomo entrada y
- dividir
sen pedazos de longitudnsisviene primero. El último elemento será más corto si es necesario. - dividir
sennpedazos de igual longitud sinviene primero. Silen(s)no es un múltiplo denlos primeroslen(s) mod nelementos será uno más largo.
Solo puede tomar esas 2 entradas. snunca contendrá solo dígitos.
Notas
- Puede usar el mapeo inverso. Tenga esto en cuenta en su respuesta si lo hace.
ssolo contendrá caracteres ASCII imprimibles (sin líneas nuevas).- No puede utilizar ningún componente incorporado que resuelva esas dos tareas directamente. Todas las demás construcciones están permitidas.
- Tienes que tomar ambos argumentos de la misma fuente.
- Puede tomar los argumentos en una lista ordenada o en cualquier otro formato que indique claramente su orden siempre que no sea ambiguo.
- Puede tomar la entrada como una cadena / secuencia y usar un carácter que no sea una entrada válida (como un nulobyte) para separarlos.
nsiempre será igual o menor que la longitudsy mayor que cero.- Puede generar la lista resultante en cualquier formato razonable siempre que indique claramente las piezas particulares y su orden.
Ejemplo
Entrada: programming, 3
el último elemento contiene solo 2 caracteres, porque 11 no es divisible por 3.
Salida: ["pro", "gra", "mmi", "ng"]
Entrada: 3, programming
11 no es múltiplo de 3, por lo que los 2 primeros elementos serán uno más largo:
Salida: ["prog", "ramm", "ing"]
Reglas
- Función o programa completo permitido.
- Reglas predeterminadas para entrada / salida.
- Se aplican lagunas estándar .
- Este es el código de golf , por lo que gana el conteo de bytes más bajo. Tiebreaker es una presentación anterior.
Casos de prueba
Los casos de prueba se generaron con este programa Pyth (usa incorporados, por lo que no hay una respuesta válida). ¡Gracias a @FryAmTheEggman por proporcionar la versión base de eso!
3, helloworld -> ['infierno', 'owo', 'rld'] helloworld, 3 -> ['hel', 'low', 'orl', 'd'] 1, programación -> ['programación'] programación, 1 -> ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g'] 8, programación -> ['pr', 'og', 'ra', 'm', 'm', 'i', 'n', 'g'] programación, 8 -> ['programm', 'ing'] 9, código golf -> ['c', 'o', 'd', 'e', '', 'g', 'o', 'l', 'f'] código golf, 9 -> ['código golf'] 4, 133tspeak -> ['133', 'ts', 'pe', 'ak'] 133tspeak, 4 -> ['133t', 'spea', 'k']
¡Feliz codificación!

Respuestas:
MATL,
462621272942 bytesPruébalo en línea! (Actualizado ligeramente para trabajar con la última versión del idioma)
Explicación
fuente
euna construcción prohibida?XUZN?...porU?...e intercambiar las dosiframas. Además, no necesita el3$eno resuelve directamente el problema, por lo que no considero que esté prohibido, no.JavaScript (ES6), 132 bytes
Probablemente esto esté irremediablemente sobre-diseñado.
fuente
JavaScript (Firefox),
8887 bytesLlámalo como
(...)("programming")(3)usando Firefox 30+.fuente
Ruby, 119 bytes
Y tomo el primer lugar por 2 bytes ...
fuente
x.scan(/.{,#{y}})funciona igual de bien para dividir las cadenas en el primer caso. ¿O eso cuenta como una construcción?AWK,
121130128122 BytesEl único problema es si la primera entrada es una cadena que comienza con un valor numérico. Esto provocaría
AWKver la cadena como ese número y la segunda entrada como la cadena.OK ... solucionó el problema numérico, pero agregó 9 bytes :(.
Se modificó un poco para guardar un par de bytes.
Casi de vuelta a la longitud original. :)
fuente
Haskell, 131 bytes
Ejemplo de uso:
Cómo funciona: el trabajo principal lo realiza la función auxiliar
qque toma un par de números(d,m)y una cadenas. Primero construye una lista demvecesd+1seguida de infinitasd(ej.(1,3)->[2,2,2,1,1,1,1,1,...]). Luego se usasplitPlacespara dividirsesen trozos de longitudes dados por la lista.splitPlacesse detiene si sesquedan sin elementos, por lo que una lista infinita está bien.La función principal
#verifica qué parámetro es el númeron/ cadenastry llamaqcon uno(div (length str) n, mod (length str) n)o(n, 0)másstr.fuente
C # (LINQPAD) - 335 bytes
La parte de lectura de entrada tomó un poco de espacio. Ganador de la respuesta más larga.
Uso # 1:
Uso # 2:
fuente
Pyth, 181 bytes
Supongamos que el código más largo en bytes gana \ o /
Pruébalo aquí! (El intérprete en línea parece tener un error, muestra la entrada mientras no debería)
Aquí está la salida del terminal:
En serio, estoy abierto a un nuevo enfoque. Soy nuevo en Python, así que probablemente me perdí algunas manos cortas.
Quiero decir, creo que mi respuesta es independiente desde el punto en que es más larga que la respuesta de JavaScript ...
fuente
testcases. Los casos de prueba son generados por Pyth. La solución es.xcsJKcJsKdóndeJy dóndeKestán los dos argumentos.PHP, 114 bytes
(Reemplace
+@$pconis_numeric($p)para arreglar).(Inserte
~para ASCII imprimible,a¶ cualquier ASCII antes$t;de arreglarlo).-nro probarlo en línea .fuente
PowerShell ,
122118 bytesPruébalo en línea!
Menos golfizado:
fuente