Świadomość pozycyjna
Twoim zadaniem jest wygenerowanie programu, który dla każdej permutacji jego znaków (w tym oryginalnego programu) generuje pozycje każdego znaku względem oryginalnego programu.
Jeśli twój program to
Derp
musisz wydać
[0, 1, 2, 3]
(lub jakiś równoważny). To dlatego, że Dznajduje się w 0położeniu th, ejest w 1st R z 2ND, a rd.p3
Weźmy inny program, który jest programem oryginalnym, ale ze znakami permutowanymi:
epDr
Musisz wyprowadzać
[1, 3, 0, 2]
ponieważ eznajduje się w 1pozycji st oryginalnego programu, pjest w 3pozycji Ddrugiej, 0th i rdrugiej 2.
Jeśli oryginalny program ma dwa powtarzające się znaki:
abcda -> [0, 1, 2, 3, 4]
Następnie dla permutacji znaki 0iw 4tablicy muszą być w porządku rosnącym:
baadc -> [1, 0, 4, 3, 2] (0 first, then 4)
Zasady:
- Twój program musi zawierać co najmniej dwa unikalne znaki.
Co najwyżej
floor(n/2)postacie muszą być takie same.aabb (acceptable) aaaabc (not acceptable, only floor(6/2) = 3 a's allowed)Wyjście twojego programu może być tablicą (lub czymś podobnym) zawierającą wszystkie pozycje znaków w kolejności lub ciągiem z dowolnym ogranicznikiem, więc są one w porządku:
[0, 1, 2, 3] 0,1,2,3 0 1 2 3
12w R byłby ważny? Po prostu wydrukowałby 12i zostałby permutowany; 21.