As primeiras cartas, mexam-se! era muito popular, mas tinha participação limitada. Este será mais fácil de resolver, mas espero envolver alguns truques no golfe.
Você recebe uma sequência de apenas letras minúsculas. Para cada carta, com a posição no alfabeto m , movê-lo de modo que se torna o m th carta do fim. Se o valor de m for maior que o comprimento da string, mova-o para a frente. Saída apenas a cadeia totalmente transformada.
Exemplos:
"girafa"
- 'g' é a sétima letra do alfabeto, já é a sétima letra do verso, então deixe-o.
- 'i' é a 9ª letra, uma vez que 9 é maior que o comprimento da palavra, ela vai para a frente, então a string se torna
igraffe
- 'r' é a 18ª letra, como 'i' vai para a frente:
rigaffe
- 'a' é a primeira letra, vai até o fim:
rigffea
- 'f' é a sexta letra, torna-se a sexta na parte de trás:
rfigfea
- o próximo 'f' também é a sexta letra, e também a sexta parte de trás:
rffigea
- 'e' são as 5as letras, vão para a quinta parte de trás:
rfefiga
"flor"
- 'f' (6) =>
flower
- «l» (12) =>
lfower
- «o» (15) =>
olfwer
- 'w' (23) =>
wolfer
- «e» (5) =>
weolfr
- «r» (18) =>
rweolf
"abacaxi"
- «p» (16) =>
pineapple
- «i» (9) =>
ipneapple
- «n» (14) =>
nipeapple
- «e» (5) =>
nipaepple
- 'a' (1) =>
nipepplea
- «p» (16) =>
pnipeplea
- «p» (16) =>
ppnipelea
- «l» (12) =>
lppnipeea
- 'e' (5) =>
lppneipea
(certifique-se de mover o e que ainda não foi movido! Aqui não importa, mas abaixo disso.)
Agradecemos à @Neil por melhorar os casos de teste com estas três adições:
"pizza"
- «p» (16) =>
pizza
- «i» (9) =>
ipzza
- «z» (26) =>
zipza
- 'z' (26) =>
zzipa
(movendo o segundo z!) - 'a' (1) =>
zzipa
"abracadabra"
- 'a' (1) =>
bracadabraa
- 'b' (2) =>
racadabraba
- «r» (18) =>
racadabraba
- 'a' (1) =>
rcadabrabaa
- «c» (3) =>
radabrabcaa
- 'a' (1) =>
rdabrabcaaa
- 'd' (4) =>
rabrabcdaaa
- 'a' (1) =>
rbrabcdaaaa
- 'b' (2) =>
rrabcdaaaba
- «r» (18) =>
rrabcdaaaba
- 'a' (1) =>
rrbcdaaabaa
"personagens"
- «c» (3) =>
haractecrs
- «h» (8) =>
arhactecrs
- 'a' (1) =>
rhactecrsa
- «r» (18) =>
rhactecrsa
- 'a' (1) =>
rhctecrsaa
- «c» (3) =>
rhtecrscaa
- «t» (20) =>
trhecrscaa
- «e» (5) =>
trhcrescaa
- «r» (18) =>
rtrhcescaa
- 's' (19) =>
srtrhcecaa
code-golf
string
permutations
geokavel
fonte
fonte
Python 3, 78 bytes.
Economizou 2 bytes graças ao orlp.
Economizou 7 bytes graças ao DSM.
Constrói a palavra como uma lista e depois se junta a ela.
fonte
(q-p,0)[p>q]
é maior quemin(q-p,0)
.max(q-p,0)
.Python 2, 86 bytes
Python 3, 88 bytes
Exemplos
Python 2:
Python 3:
fonte
k.remove
remove a primeira instância, então isso falhará em algo comobaa
.Javascript ES6,
136134131 bytesNote que eu tenho muito cuidado para não mover o mesmo personagem duas vezes, caso contrário,
pizza
virazipza
quando deveria serzzipa
. Há também um caso avançado que trata de não remover caracteres prematuramente;characters
torna-se talvezsrtrchaeac
ousrtrheccaa
se você fizer errado, mas deveria sersrtrhcecaa
. Outra palavra complicada éabracadabra
para a qual a saídarrabaaadcba
estaria incorreta;rrbcdaaabaa
estaria correto.Editar: Raspou dois bytes usando substring que automaticamente coage seus argumentos para o intervalo de 0 a comprimento.
Editar: raspou três bytes alterando a primeira substring para substr, conforme sugerido pelo user81665.
fonte
substr
vez desubstring
.slice
é melhor (eu acho).slice
lo.pizza
caso de teste que você colocou no meu post, mas eu o corrigi.Pitão,
1817 bytesConjunto de Teste .
Repete usando reduzir sobre a sequência de entrada, inserindo em uma sequência, sequência vazia da caixa base, na posição correta.
fonte
23, 23 caracteres / 40 bytes
Try it here (Firefox only).
Explicação
fonte