Su tarea es escribir un programa que, dado un número y una cadena, divide la cadena en trozos de ese tamaño y los invierte.
Reglas
Su programa recibirá un número entero positivo n, así como una cadena scon una longitud de al menos uno que consta de solo ASCII imprimible (sin incluir espacios en blanco). La cadena se debe dividir en trozos de longitud n, si la longitud de la cadena no es divisible por nlas sobras al final se debe considerar su propio fragmento. Luego, invierta el orden de los trozos y júntelos nuevamente.
Casos de prueba
n   s           Output
2   abcdefgh    ghefcdab
3   foobarbaz   bazbarfoo
3   abcdefgh    ghdefabc
2   a           a
1   abcdefgh    hgfedcba
2   aaaaaa      aaaaaa
2   baaaab      abaaba
50  abcdefgh    abcdefgh
6   abcdefghi   ghiabcdef
Este es el código de golf , por lo que debe apuntar a la menor cantidad de bytes posible.

Respuestas:
Jalea , 2 bytes
Un programa completo que imprime el resultado.
Pruébalo en línea!
¿Cómo?
fuente
Python 3 , 35 bytes
Pruébalo en línea!
fuente
andpalabra clave aquí? @Dennis05AB1E ,
5 43 bytes-1 gracias a Dennis
-1 gracias a carusocomputing
Pruébalo en línea!
fuente
¹no es necesarioJavaScript (ES6), 37 bytes
Toma la entrada al curry: número primero, luego cadena, como
f(2)("abcdefgh").Mostrar fragmento de código
fuente
Perl 6 ,
2820 bytesIntentalo
Intentalo
Expandido:
fuente
Bash + coreutils, 22
Pruébalo en línea .
fuente
Haskell , 32 bytes
Pruébalo en línea!
fuente
PHP, 53 bytes
fuente
Röda , 36 bytes
Pruébalo en línea!
Es una función que toma un argumento. Los caracteres de la cadena deben estar en la secuencia.
tryse usa para descartar errores en caso de que laheadfunción no pueda leern-1valores.Explicación:
No tan ofuscado como de costumbre. Creo que es bastante hermoso. :)
fuente
[[try head n]]funciona en lugar de[[_]..[try head n-1]]?_la expresión.[[try head n]]tomaría n valores una vez , pero[[_]..[try head n-1]]toma n valores siempre que queden valores.CJam , 5 bytes
La entrada es un número y una cadena entre comillas dobles, separados por espacios en blanco.
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Lote, 74 bytes
Más bien molesto, esto termina siendo recursivo en lugar de recursivo de cola.
fuente
V ,
1310 bytesPruébalo en línea!
En acción:
se convierte en
que se convierte
antes de que se eliminen todas las líneas nuevas
fuente
brainfuck , 78 bytes
El primer byte de la entrada es el tamaño del fragmento, dado por el valor del byte. El resto de los bytes se consideran la cadena.
Pruébalo en línea!
Ampliado y comentado
fuente
PowerShell,
5649 bytes-7 bytes gracias a mazzy
Pruébalo en línea!
fuente
.ps1e intente llamar a este script en lugar de su código. Si funciona, entonces la prueba fue exitosa.Mathematica, 46 bytes
Función anónima. Toma un número y una cadena como entrada y devuelve una cadena como salida. No hay mucho que ver aqui.
fuente
Javascript -
544746 bytesRehecho:
Usado como
Gracias a @ETHproductions por alguna aceleración de RegEx ¡Gracias a @Shaggy por un byte adicional en la evaluación!
Original:
fuente
eval('/.{1,'+n+'}/g')s=>n=> ...eval("/.{1,${n}}/g"), utilizando comillas invertidas en lugar de comillas.Pyth, 5 bytes
Pruébalo en línea .
Explicación
fuente
Retina , 38 bytes
1 byte guardado gracias a @LeakyNun
(Tenga en cuenta el espacio en la segunda línea y el espacio final)
Este programa toma la entrada como unaria en la primera línea y la cadena en la segunda.
Pruébalo en línea!
¡Banco de pruebas! (ligeramente modificado)
Explicación
El primer paso es anteponer un espacio (será importante más adelante).
Ahora retrocedemos. Esto utiliza los grupos de equilibrio de .NET. Es importante tener en cuenta que los grupos aquí actúan como pilas, por lo que cada partida se empuja esencialmente a la pila. Aquí capturamos cada dígito del número unario en el grupo 2. Ahora, cada vez que se encuentra un carácter en la cadena, aparece una coincidencia del grupo 2. Esto asegura que el número de caracteres no exceda el del número unario.
Y finalmente elimine el número unario y la nueva línea.
fuente
\dpor.para guardar un byte.^también es redundante.\dmás. Y gracias por jugar al golf con el caret :)Java,
147138bytesString r(String s,int n){String r="";int l=s.length();for(int i=l/n*n;i>=0;i-=n)if(!(i>=l))r+=(i+n)>=l?s.substring(i):s.substring(i,i+n);return r;}¡Salvado 9 Bytes gracias a Kevin Cruijssen!
En forma expandida:
Este es mi primer intento de codegolf, así que cualquier comentario es bienvenido.
fuente
int l=s.length();for(int i=l/n*n;puede serint l=s.length(),i=l/n*n;for(;así que solo tienesintuna vez. Yif(!(i>=l))puede serif(l<i). Yr+=(i+n)>=l?puede estar sin el paréntesis:r+=i+n>=l?. Además, si aún no lo ha visto, le puedo recomendar que consulte los Consejos para jugar golf en Java para obtener algunos consejos geniales para usar. :) Una vez más, bienvenido.Perl 5 , 25 bytes
Utiliza las
-lnM5.010banderas.Pruébalo en línea!
Grito a Grinnz por contarme sobre
=~ m/.{1,$n}/g-M5.010permite el uso de lasayfunción, que para nuestros propósitos es imprimir con un nombre más corto.-npone la primera línea de entrada$_y-lcorta la nueva línea final.Luego obtenemos la segunda línea de entrada
<>y la aplicamos a la expresión regular.{1,$_}: cualquier carácter, entre 1 y $ _ (la primera entrada) veces. Como esto es codicioso por defecto, siempre trata de hacer coincidir $ _ caracteres. Se1,necesita para el posible fragmento sobrante al final.El
/gmodificador nos da cada coincidencia de esa expresión regular en la cadena de entrada como una lista, que luego se invierte e imprime. En Perl, pasar una lista parasayunirse sin ningún delimitador de forma predeterminada.fuente
Dyalog APL Extended ,
1615 bytesPruébalo en línea!
fuente
f←,/→∊∊∘⌽⊢⊂⍨≢⍤⊢⍴1↑⍨⊣Python, 62 bytes
Pruébalo en línea!
fuente
f=lambda n,s:s and f(n,s[n:])+s[:n]Apilado , 9 bytes
Pruébalo en línea!
#<trozos,revreveses y''#`uniones por cadena vacía. Bastante sencillo.fuente
QBIC , 24 bytes
Esto hace un excelente uso de la nueva función de subcadena que agregué recientemente a QBIC:
fuente
Pyth, 4 bytes
Toma entrada como
"s",n: ¡ Pruébelo usted mismo!fuente
Convexo , 2 bytes
Pruébalo en línea!
fuente
C, 69 bytes
El resultado se imprime en la salida estándar.
fuente
Scala,
5755 bytesGracias Jacob! Probarlo aquí .
Nota: Al usar la forma de símbolo de foldLeft ("/:"), pude despegar un par de bytes más.
fuente
mkStringlugar dereduceLeft, y elimine 7 bytes:(n:Int,s:String)=>s.grouped(n).toSeq.reverse.mkString("")Ohm , 5 bytes
Pruébalo en línea!
Explicación
fuente
R ,
6960 bytesPruébalo en línea!
Gracias a Kirill L. por la sugerencia de eliminar
seq.fuente
:y alguna manipulación nos permite deshacernos del final-1.