Ś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 D
znajduje się w 0
położeniu th, e
jest w 1
st R z 2
ND, a rd.p
3
Weźmy inny program, który jest programem oryginalnym, ale ze znakami permutowanymi:
epDr
Musisz wyprowadzać
[1, 3, 0, 2]
ponieważ e
znajduje się w 1
pozycji st oryginalnego programu, p
jest w 3
pozycji D
drugiej, 0
th i r
drugiej 2
.
Jeśli oryginalny program ma dwa powtarzające się znaki:
abcda -> [0, 1, 2, 3, 4]
Następnie dla permutacji znaki 0
iw 4
tablicy 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
źródło
12
w R byłby ważny? Po prostu wydrukowałby12
i zostałby permutowany;21
.Odpowiedzi:
Właściwie 2 bajty
Wypróbuj online!
To drukuje
podczas (jedynej) innej permutacji
odciski
Jak to działa
W rzeczywistości kolejne cyfry są analizowane oddzielnie, więc
10
wypycha 1 na stosie, a następnie 0 na nim.Po zakończeniu programu stos jest drukowany od góry do dołu, więc najpierw drukuje 0 , a następnie wysuw linii, a następnie 1 .
Obniżony program
01
robi to samo, w odwrotnej kolejności.źródło
Galaretka , 2 bajty
Wypróbuj online!
Wyjścia:
[0, 1]
Inne wyniki permutacji
J;
:[1, 0]
Jak to działa:
źródło