Świadomość pozycyjna

10

Ś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
    
clismique
źródło
7
Nie wierzę, że to wyzwanie pozwala na jakiekolwiek nietrywialne rozwiązanie, ponieważ praktycznie każda odpowiedź w dowolnym języku o długości> = ~ 5 nie będzie poprawnym programem dla każdej permutacji, nie mówiąc już o programie, który rozwiązuje dane wyzwanie.
lub
1
@ Qwerp-Derp Prawie nikt nie mówi nic na temat piaskownicy. Jakiś czas temu opublikowałem pytanie po spędzeniu około 1 miesiąca w piaskownicy. I tylko wtedy, gdy go opublikowałem, ludzie zauważyli błędy i padały głosy negatywne. Moim zdaniem, piaskownica jest bezużyteczna.
Ismael Miguel
1
Tym razem wydaje mi się, że w tym wyzwaniu dłuższa odpowiedź byłaby bardziej imponująca niż krótsza.
Wojowu
1
@Wojowu Mogę sprawić, że będzie to kręgle kodu , jeśli to możliwe - najdłuższy program wygrywa.
clismique
1
Czy program 12w R byłby ważny? Po prostu wydrukowałby 12i zostałby permutowany; 21.
Billywob,

Odpowiedzi:

21

Właściwie 2 bajty

10

Wypróbuj online!

To drukuje

0
1

podczas (jedynej) innej permutacji

01

odciski

1
0

Jak to działa

W rzeczywistości kolejne cyfry są analizowane oddzielnie, więc 10wypycha 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 01robi to samo, w odwrotnej kolejności.

Dennis
źródło
1
Inne języki, w których to działa; Poważnie, 05ab1e, ///, 2sable.
Teal pelikan
Specyfikacja mówi, że liczby muszą być oddzielone. Działa to na poważnie, ale w rzeczywistości jest to po prostu poważnie 2.0.
Dennis
7

Galaretka , 2 bajty

;J

Wypróbuj online!

Wyjścia: [0, 1]

Inne wyniki permutacji J;:[1, 0]

Jak to działa:

;J
;          Concats 0 with...
 J         [1...len(z)], here just [1]

J;
J          [1...len(z)], here just [1]
 ;         ...Concatted with 0
mleko
źródło