Para "deslocar" vários n
lugares, faça o seguinte:
- Remova os últimos
n
dígitos - Adicione
n
cópias do primeiro dígito ao início do número
Por exemplo, para mudar o número 31415
três lugares, retire os três últimos dígitos 31
e, em seguida, adicione mais três cópias do primeiro dígito 3
, ao final, dando 33331
.
Se o número for negativo, os dígitos devem ser retirados da esquerda e o primeiro dígito deve ser "preenchido" da direita. Por exemplo, a string 31415
deslocada sobre -3 lugares fornece 15555
.
Se o número for 0, nenhuma alteração deve ser feita.
Se o turno for maior que a duração do programa, os dígitos preenchidos podem começar a ser removidos. Isso significa que, se o número fornecido for maior que o comprimento da string, nenhuma alteração adicional será feita depois que a string inteira se tornar um único dígito.
O desafio
Dados dois números, n
e s
return retornou n
sobre os s
lugares.
Casos de teste
n, s -> result
7243, 1 -> 7724
452, -1 -> 522
12, 1 -> 11
153, 4 -> 111
Isso é código-golfe , portanto, o menor envio válido (medido em bytes) vence.
Respostas:
APL (Dyalog) , 32 bytes
Função anônima que usa o crivo como argumento à esquerda e o número (como uma string) como argumento à direita.
Experimente online!
{
função anônima onde ⍺ e ⍵ são argumentos à esquerda e à direita|⍺
o valor absoluto da mudançaa←
armazenar em um⋄
então⌽⍵
reverter o número⊃
escolha o primeiro (ex. último) dígitoa⍴
r moldá-lo para comprimento um⍵,
Anexar o número(
…),
Acrescente o seguinte:⊃⍵
o primeiro dígitoa⍴
r moldá-lo para comprimento um(
…)↓
Solte o seguinte número de caracteres:a-⍺
a menos a mudança(
…)↑
Pegue o seguinte número de caracteres:≢⍵
o comprimento do número originalfonte
Python 2 , 50 bytes
Experimente online!
fonte
Haskell, 69 bytes
Pega o número como uma sequência. Experimente online!
Como funciona:
fonte
MATL , 12 bytes
As entradas são: número a ser deslocado como uma string; quantidade de deslocamento como um número.
Experimente online! Ou verifique todos os casos de teste .
Entradas do Consisder
'452
e'-1'
.fonte
J, 37 bytes
Essa foi uma daquelas situações em J em que um verbo explícito parecia a escolha certa (a única?), Mas eu adoraria saber se há uma reescrita tácita disso:
O verbo turno incorporado de J permite configurar o caractere "preenchimento":
A lógica para determinar se deve usar o primeiro ou o último caractere como o caractere de preenchimento é simples
Experimente online!
fonte
J , 23 bytes
A entrada ne a saída são cadeias contendo os números.
Experimente online!
Explicação
fonte
Retina , 61 bytes
Experimente online!
fonte
05AB1E , 16 bytes
Experimente online!
Explicação
fonte
Python 2 , 87 bytes
Experimente online!
Pega o número como uma sequência e o deslocamento como um número inteiro. Retorna uma string.
Tentei incorporar a reversão dentro da função em vez de fazer uma chamada recursiva, mas não consegui acertar.
fonte
Python 3 , 73 bytes
Experimente online!
fonte
Haskell , 108 bytes
Oh bem, isso foi pior do que eu pensava ..
Experimente online!
Ungolfed
fonte
Clojure, 121 bytes
Ouch, desagradável para lidar com entradas negativas também.
fonte
Pitão, 28 bytes
Experimente online ou teste algumas entradas
Explicação
fonte
05AB1E , 33 bytes
Experimente online!
05AB1E não é tão quente com condicionais.
fonte
JavaScript, 80 bytes
Recebe a entrada como uma representação de sequência do número e um valor numérico de "turno". Retorna uma string.
Snippet de teste
fonte