Para "desplazarse" sobre un número de n
lugares, haga lo siguiente:
- Eliminar los últimos
n
dígitos - Agregue
n
copias del primer dígito al comienzo del número
Por ejemplo, para cambiar el número 31415
tres lugares, saque los últimos tres dígitos para obtener 31
, y luego agregue tres copias más del primer dígito 3
, al final, dando 33331
.
Si el número es negativo, los dígitos deben tomarse desde la izquierda y el primer dígito debe "rellenarse" desde la derecha. Por ejemplo, la cadena 31415
desplazada sobre -3 lugares da 15555
.
Si el número es 0, no se debe realizar ningún cambio.
Si el turno es mayor que la duración del programa, entonces los dígitos que se completaron podrían comenzar a eliminarse. Esto significa que si el número dado es mayor que la longitud de la cadena, no se realizarán más cambios después de que toda la cadena se convierta en un solo dígito.
El reto
Dados dos números, n
y s
, el retorno n
cambió de s
lugar.
Casos de prueba
n, s -> result
7243, 1 -> 7724
452, -1 -> 522
12, 1 -> 11
153, 4 -> 111
Este es el código de golf , por lo que gana el envío válido más corto (medido en bytes).
Respuestas:
APL (Dyalog) , 32 bytes
Función anónima que toma el tamiz como argumento izquierdo y el número (como una cadena) como argumento derecho.
Pruébalo en línea!
{
función anónima donde ⍺ y ⍵ son argumentos izquierdo y derecho|⍺
el valor absoluto del turnoa←
almacenar en un⋄
entonces⌽⍵
revertir el número⊃
elija el primer (es decir, el último) dígitoa⍴
r darle forma a una longitud⍵,
anteponer el número(
...),
anteponer lo siguiente:⊃⍵
el primer dígitoa⍴
r darle forma a una longitud(
...)↓
suelte el siguiente número de caracteres:a-⍺
un menos el turno(
...)↑
tome el siguiente número de caracteres:≢⍵
la longitud del número originalfuente
Python 2 , 50 bytes
Pruébalo en línea!
fuente
Haskell, 69 bytes
Toma el número como una cadena. Pruébalo en línea!
Cómo funciona:
fuente
MATL , 12 bytes
Las entradas son: número que se desplazará como una cadena; cantidad de desplazamiento como un número.
Pruébalo en línea! O verificar todos los casos de prueba .
Consisder entradas
'452
y'-1'
.fuente
J, 37 bytes
Esta fue una de esas situaciones en J donde un verbo explícito parecía la opción correcta (¿la única?), Pero me encantaría saber si hay una reescritura tácita de esto:
El verbo shift incorporado de J le permite configurar el carácter de "relleno":
La lógica para determinar si usar el primer o el último carácter como el carácter de relleno es sencillo
Pruébalo en línea!
fuente
J , 23 bytes
La entrada ny la salida son cadenas que contienen los números.
Pruébalo en línea!
Explicación
fuente
Retina , 61 bytes
Pruébalo en línea!
fuente
05AB1E , 16 bytes
Pruébalo en línea!
Explicación
fuente
Python 2 , 87 bytes
Pruébalo en línea!
Toma el número como una cadena y el cambio como un entero. Devuelve una cadena.
Intenté incrustar la inversión dentro de la función en lugar de hacer una llamada recursiva, pero parecía que no podía hacerlo bien.
fuente
Python 3 , 73 bytes
Pruébalo en línea!
fuente
Haskell , 108 bytes
Oh bueno, esto fue peor de lo que pensaba ...
Pruébalo en línea!
Sin golf
fuente
Clojure, 121 bytes
Ay, desagradable tratar con entradas negativas también.
fuente
Pyth, 28 bytes
Pruébelo en línea o pruebe algunas entradas
Explicación
fuente
05AB1E , 33 bytes
Pruébalo en línea!
05AB1E no es tan caliente con condicionales.
fuente
JavaScript, 80 bytes
Toma la entrada como una representación de cadena del número y una cantidad numérica de "desplazamiento". Devuelve una cadena.
Fragmento de prueba
fuente