Étant donné une chaîne en entrée, sortez une ou plusieurs variantes de la chaîne de sorte que:
- Aucun personnage n'est dans sa position d'origine
- Aucun personnage n'est adjacent à un personnage auquel il était à l'origine adjacent
Vous pouvez supposer que cela sera toujours possible pour la chaîne donnée et ne contiendra que des caractères alphabétiques à casse unique ( [a-z]
ou [A-Z]
si vous préférez)
Notez que les doublons du même caractère ne sont pas considérés comme uniques.
Par exemple, étant donné l'entrée programming
, la sortie ne peut pas contenir un m
au 7ème ou 8ème caractère, et ne peut pas contenir un g
au 4ème ou 11ème caractère (1 indexé)
Exemple:
Prends la ficelle abcdef
Ce qui suit serait une sortie valide: daecfb
Cependant, les éléments suivants ne seraient pas valides: fdbcae
comme dans cet exemple c
et b
sont toujours adjacents.
L'adjacence s'enroule également, ce qui signifie que vous ne pouvez pas faire fdbeca
comme f
et que vous a
êtes toujours adjacent.
Testcases:
Notez que ce ne sont pas les seules sorties valides pour les entrées données
Écrit comme input -> output
:
helowi -> ioewhl
mayube -> euabmy
stephens -> nhseespt
aabcdeffghij -> dbfhjfigaeca
Notation:
Il s'agit de code-golf, donc le moins d'octets dans chaque langue gagne!
No character is adjacent to a character that it was originally adjacent to
. L'ordre n'est-il pas important pour la contiguïté? Donc l'entrée "abcd" ne peut avoir "ab" nulle part, et ne peut avoir "ba" nulle part non plus?