Podaj pierwszą pozycję w swoim programie dla każdego znaku wejściowego

43

Wyzwanie

Napisz niepusty program / funkcję, pktóra, biorąc pod uwagę niepusty ciąg wejściowy s, wyświetla pozycję pierwszego wystąpienia każdego znaku sw kodzie źródłowym p.

Na przykład, jeśli twój program to

main() { cout << magic << cin }
^0   ^5   ^10  ^15  ^20  ^25

i otrzymuje wejście abcd{, wyjście powinno być

[1, x, 9, x, 7] (0-based)        [2, x, 10, x, 8] (1-based)

Tutaj xoznacza dowolną moc, która nie jest ważne wyjście na pozycji znaku (np liczba ujemna, 0jeśli używasz indeksowanie 1 oparte NaN, Inf, łańcuch potato, większa liczba niż długość Twojego programu, itp).

Ograniczenia

Czytanie kodu źródłowego jest niedozwolone (jak w prawidłowym quine). Używanie komentarzy jest dozwolone, ale wlicza się do twojego wyniku.

Dane wejściowe i wyjściowe mogą być wykonane w rozsądnym formacie, ale muszą być jednoznaczne (tylko dodatkowe ograniczniki, brak randstrumienia i twierdzenie, że gdzieś tam jest odpowiedź), spójne (np. xPowyższe powinno zawsze mieć tę samą wartość) i ludzkie czytelny ; na przykład ciąg znaków lub tablica znaków. Możesz założyć, że dane wejściowe to ciąg (lub tablica) drukowalnych znaków ASCII; nie trzeba obsługiwać całego zestawu Unicode.


Niestandardowa strona kodowa lub ascii do wydruku w kodzie?

Jeśli twój język używa niestandardowej strony kodowej (Jelly, APL itp.), Musisz to wziąć pod uwagę (więc program €æÆmusi wyświetlać [1, x, 2]dane wejściowe €%æ). Używanie tylko znaków spoza ASCII do -1zawsze wyjściowego (ponieważ dane wejściowe są tylko ASCII) nie jest prawidłowym rozwiązaniem. Możesz założyć, że twój program natywnie akceptuje twoją niestandardową stronę kodową, tj. Jeśli twój program ma metodę konwersji znaku Ana liczbę całkowitą 65(kodowanie ASCII), możesz założyć, że teraz konwertuje on 65 znak na twojej stronie kodowej 65.


Inspirowany następującym wyzwaniem: świadomość pozycyjna

Sanchises
źródło
Czy wielkie litery mają znaczenie?
Kritixi Lithos
@KritixiLithos domyślnie tak .
Martin Ender,
@KritixiLithos To prawda.
Sanchises,
Jeśli mój program używa tylko indeksów od 0 do 9 , czy potrzebuję separatora, czy mogę wyprowadzać dane wyjściowe, np. 01030708070?
Dennis
@Dennis Nie, nie masz. Jest jednoznaczny, spójny i czytelny dla człowieka. Wymaganie separatora nie dodałoby nic ciekawego do wyzwania, więc zdecydowanie wykorzystaj swoją niską liczbę bajtów. ;)
Sanchises,

Odpowiedzi:

24

Python2, 55 bajtów

a=" )dfi(+m,nprut.';";print map(('a="'+a).find,input())

Zaczyna się od ciągu zawierającego wszystkie znaki użyte w kodzie, a następnie przeszukuje indeksy

Pręt
źródło
5
Nie rozumiem, jak to jest nudna odpowiedź. Myślę, że użycie standardowego quine jest o wiele mniej interesujące niż to. :)
Martin Ender,
Ponieważ jest to Python 2, czy nie spowodowałoby to awarii większości danych wejściowych ?. Jeśli się zepsuje, będziesz musiał użyć raw_input.
TidB
@TidB hmm, chyba nie? jaki masz na myśli wkład?
Rod
@Rod Nevermind, byłem trochę głupi. Zawsze będzie działać, gdy wprowadzisz iterowalny. Głupi ja.
TidB
12

Lenguage , 56 623 bajtów

Poniżej znajduje się zrzut szesnastkowy pierwszych 256 bajtów. Pozostałe bajty można wybrać dowolnie.

0000000: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f  ................
0000010: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f  ................
0000020: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f   !"#$%&'()*+,-./
0000030: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f  0123456789:;<=>?
0000040: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f  @ABCDEFGHIJKLMNO
0000050: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f  PQRSTUVWXYZ[\]^_
0000060: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f  `abcdefghijklmno
0000070: 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f  pqrstuvwxyz{|}~.
0000080: 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f  ................
0000090: 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f  ................
00000a0: a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af  ................
00000b0: b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf  ................
00000c0: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf  ................
00000d0: d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df  ................
00000e0: e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef  ................
00000f0: f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff  ................

Dane wyjściowe wyrażone są w bajtach, co jest zwyczajowo stosowane w „pieprzeniu mózgu” i in.

Jak to działa

W szczególności jest to prosty program dla kotów ,[.,].

Kod źródłowy zawiera wszystkie 256 bajtowe wartości w kolejności, więc indeks każdego bajtu w nim odpowiada jego wartości.

Dennis
źródło
4
Hmmm, myślę, że Lenguage to jedyny język, w którym ludzie są obeznani z trzema rzędami wielkości ...
Sanchises,
2
Lenguage to także jedyny język, który nieustannie znajduje sposoby na oszukiwanie, które nawet nie byłyby w żaden sposób konkurencyjne w innych językach. : P
Dennis,
Czy nie byłby +[,.]lepszy wynik?
Sanchises,
@ Sanchises To zaoszczędzi około 12 000 bajtów, ale na końcu wydrukuje dodatkowy bajt zerowy.
Dennis
2
Cóż, przypuszczam, że bajt zerowy znajduje się na wejściu (nawet jeśli jego funkcją jest zakończenie łańcucha) i byłby na pozycji 0 w twoim programie ...;)
Sanchises
10

Lenguage , 1,22e7 bajtów

Składa się z 12263215 NULbajtów (Hex 0x00) .

Generuje znak NULdla każdego znaku, który nie pojawia się w źródle.

Ruse polega na tym, że dane wejściowe nigdy nie będą zawierać a NUL, więc zawsze wypisujemy ilość NULs znaków na wejściu.

To przekłada się na następujący program Brainfuck

,[[-].,]

I z podziałem ...

,[[-].,]
,[    ,]    #Basic Input loop.
  [-]       #Zero out the cell.
     .      #Print it (A NUL).

To po prostu pokazuje siłę Lenguage jako języka golfowego. Bój się tego.

ATaco
źródło
2
Taki sprytny podstęp, prawie wygrałeś ... Próbowałeś też odwrotnie, tj. 0x00 bajtów i indeksowanie 1?
Sanchises,
Chciałbym, ale Brainfuck / Lenguage (lub przynajmniej interpreter, którego używam) nie może rozróżnić EOF od 0x00, więc nie byłbym w stanie odpowiedzieć na wyzwanie.
ATaco,
Brainfuck i in. zwykle wolno drukować liczby całkowite jako bajty, tzn. drukujesz SOH dla 1, NUL dla 0
Dennis
@ Sanchises Czy możesz potwierdzić, że tak jest tutaj?
Dennis
1
Nie ,[>.,]byłby krótszy?
Jo King
8

Galaretka , 10 9 bajtów

“ṾiЀƓv”v

Wypróbuj online!

Jak to działa

“ṾiЀƓv”v  Main link. No arguments.

“ṾiЀƓv”   Set the left argument and the return value to s := 'ṾiЀƓv'.
        v  Execute the string s as a monadic Jelly program with argument s.

 Ṿ         Uneval; yield a string representation of s, i.e., r := '“ṾiЀƓv”'.
     Ɠ     Read one line from STDIN and evaluate it like Python would.
  iЀ      Find the index of each character in the input in r.
      v    Eval the list of indices as a monadic Jelly program with argument s.
           Why?
             This is the shortest way to add the character 'v' to the string s,
             meaning that we can use r without having to append anything.
           What?
             The v atom vectorizes at depth 1 for its left argument, meaning that
             it acts on arrays of numbers and/or characters. When fed an array of
             integers, it first converts them to strings, then concatenates the
             strings and evaluates them as a Jelly program. For example, the array
             [1, 2, 3] gets cast to the string '123', then evaluates, yielding 123.
             Something slightly different happens if the array starts with a 0. For
             example, the array [0, 1, 2] gets cast to '012' just as before, but
             Jelly views '0' and '12' as two separate tokens; numeric literals
             cannot start with a 0. Since the Jelly program is monadic, the first
             token – '0' – sets the return value to 0. Since the second token –
             '12' – is also a niladic link, the previous return value is printed
             before changing the return value to 12. Then, the program finishes
             and the last return value is printed implicitly.
Dennis
źródło
8

pbrain, 402 356 340 338 329 bajtów

[(:<>)+,-.](>>>>>>)+([-]<<[->+>+<<]>>[-<<+>>]>>[-<+<+>>]<[->+<]<[-<->]<)+([-]+++++++[>+++++++++++++<-]>)+([-]+++++[>++++++++<-]>)+(-:<+++[->++++++<]>)+(-:++)+(-:++)+(----:+)+(-:++)+(-:+)+(-:+)+(-:+)+([-]++:++)+([>[->+>+<<]>>[-<<+>>]<:>>+:[[-]>+<]>-[<<<<[-.>]>>>>>>+>>>>>]<<[-]<<+<-]>>>)[-]>>>>>>>,[<<<<<<++<+++++++++++++:>>>>>>,]

Uff, @KritixiLithos i ja pracujemy nad tym już od 4 dni.

Wyświetla, 0x00jeśli znak wejściowy nie jest w programie, w przeciwnym razie indeks znaku (na podstawie 1) w postaci szesnastkowej. Wypróbuj online!

Wyjaśnienie:

[(:<>)+,-.]
All chars listed here; like other submissions 
(>>>>>>)
@KritixiLithos added this part; I don't know what it does but saves the program
+([-]<<[->+>+<<]>>[-<<+>>]>>[-<+<+>>]<[->+<]<[-<->]<)
Comparison ;calculates z=x!=y and puts it in between x and y
Start; X _ _ _ Y
           ^
End;   X Z _ _ Y
         ^
+([-]+++++++[>+++++++++++++<-]>)
Function to add 91 to the tape
+([-]+++++[>++++++++<-]>)
Function to add 40 to the tape
+(-:<+++[->++++++<]>)
Function to add 58 to the tape
+(-:++)
Function to add 60 to the tape
+(-:++)
Function to add 62 to the tape
+(----:+)
Function to add 41 to the tape
+(-:++)
Function to add 43 to the tape
+(-:+)
Function to add 44 to the tape
+(-:+)
Function to add 45 to the tape
+(-:+)
Function to add 46 to the tape
+([-]++:++)
Function to add 93 to the tape
+([>[->+>+<<]>>[-<<+>>]<:>>+:[[-]>+<]>-[<‌​<<<[-.>]>>>>>>+>>>>>]<<[-]<<+<-]>>>)

Ta ostatnia funkcja to pętla. Pętla przechodzi przez wybrane znaki [(:<>)+,-.]w kolejności i porównuje dane wejściowe ze znakiem. Teraz wyjaśnię dokładniej, jak działa ta pętla.

12-n n+2 _ n+2: _ _ _ i _ _ _ _ _ _;  n=loop counter
                  ^                ;  i=input

Stos wygląda tak, gdy jest w pętli. Pętla będzie działać, dopóki nie 12-nbędzie 0. Mamy więc licznik, który jest n+2. Ten licznik jest także liczbą funkcji dla każdego z wybranych znaków. Więc kiedy n=0, n+2zostaną odpowiadające pierwszego znaku, tj [. >[->+>+<<]>>[-<<+>>]<:robi to, konwertuje licznik na postać.

Gdy wskaźnik znajdzie się w miejscu karetki, porównamy znak wytworzony ze zmiennej licznika z danymi wejściowymi, zachowując je.

12-n n+2 _ n+2: Z _ _ i _ _ _ _ _ _;  n=loop counter
                ^                  ;  i=input

Zjest, 0gdy znak jest równy wejściowi lub innej niezerowej liczbie całkowitej w przeciwnym razie.

Teraz wymyślamy instrukcję if, aby sprawdzić tę równość.

[[-]>+<]

Jeśli Zjest niezerowe, tzn. Znak i dane wejściowe nie są takie same, zwiększamy kolejne miejsce w pamięci.

Po wyjściu z tego wyrażenia if zmniejszamy następne miejsce pamięci. Teraz to miejsce pamięci zawiera !Z. Na koniec, używając tego, wypisujemy indeks znaku, jeśli pasuje do wejścia, a następnie wymuszamy wyjście z pętli. W przeciwnym razie kontynuujemy pętlę, dopóki się nie skończy lub nie zostanie znalezione dopasowanie.

[-]>>>>>>>
Clears first byte; goes to position to start program
,[<<<<<<++<+++++++++++++:>>>>>>,]
Loops inputs
betseg
źródło
7

CJam , 14 12 bajtów

{sq\f#p_~}_~

Wykorzystuje indeksowanie oparte na 0 i -1dla znaków, które nie pojawiają się w źródle.

Wypróbuj online!

Martin Ender
źródło
6

JavaScript, 34 bajty

f=a=>a.map(v=>('f='+f).indexOf(v))

Pobiera dane wejściowe jako tablicę ciągów, xjest -1(indeksowanie 0).

LarsW
źródło
Jest to dozwolone, ponieważ ta metoda jest również dopuszczalna w przypadku quines. Nie otwiera pliku źródłowego i nie czyta go, ani nie używa zmiennej zainicjowanej w źródle.
mbomb007,
1
@ mbomb007 Nie mogę mówić o wszystkich silnikach JavaScript, ale w Firefox Function.toString działa poprzez czytanie źródła. W pewnym momencie ulegnie awarii w kompilacjach debugowania, jeśli źródła nie będzie już tam, gdy będzie próbował je odczytać. (Nie próbowałem tego ostatnio, ponieważ kompilacje debugowania są ogólnie bardzo awaryjne.)
Neil
Nie sądzę, że jest inaczej niż s='s=%s;print s%%s';print s%sw Pythonie. Nie obejmuje f=, więc jest w porządku
mbomb007
1
Naprawdę nie możesz tego zrobić, ponieważ dane wejściowe apowinny być ciągiem znaków. Nie ma mapfunkcji dla ciągów.
manonthemat
@manonthemat „Możesz założyć, że dane wejściowe są łańcuchem (lub tablicą)”
LarsW
5

C, 153 152 143 bajty

char s[99],p[]="odeflnrti%()*+-0;<={}\\";c;f(char*i){sprintf(s,"char s[99],p[]=\"%s",p);for(c=0;c<strlen(i);)printf("%d ",strchr(s,i[c++])-s);}

Wypróbuj online!

betseg
źródło
5

Rubinowy, 41 88 86 71 69 67 61 56 bajtów

a='p$<.chrs{| #index};"';$<.chars{|c|p"a='#{a}".index c}

Dzięki Lynn za zabicie 6 bajtów

GB
źródło
1
a='p$<.chrsm{| #index};"';p$<.chars.map{|c|"a='#{a}".index c}powinien również działać, pobierając dane wejściowe ze STDIN.
Lynn,
4

> <> (Ryba) 70 bajtów

 #.0+4*a5;!?l|!?f4*b+l1--naolc3*1+0.01?!|~ed+0.0+2e-{:;!?+1:i-1:r}+2:"

Prawdopodobnie najdłuższa wkładka> <> 1, jaką kiedykolwiek stworzyłem.

Wydrukuje dane wyjściowe dla każdego znaku znalezionego w osobnej linii (indeksowane 0).

Nieznany znak zawsze wydrukuje długość kodu + 1 (mógłbym to zmienić, jeśli uzna się za nie w porządku w jego obecnym stanie), więc w tym przypadku 71 zawsze będzie znakami „Nie znaleziono”.

Kiedy tylko będę miał czas, znajdę wyjaśnienie.

Niektóre przypadki testowe;

## K = 1 \ n1 \ n71

# "# = 1 \ n69 \ n1

Wypróbuj online

> <> język

Pelikan turkusowy
źródło
Myślę, że 71 jest w porządku jako wyjście dla nie znalezione. Jest spójny, jednoznaczny i czytelny dla człowieka, co moim zdaniem jest ważniejsze niż bycie „... dowolnym wyjściem, które nie jest dodatnią liczbą całkowitą”. Rozszerzyłem zasady, aby odzwierciedlić tę decyzję.
Sanchises,
3

Perl 6 , 50 52 bajtów

{(('R~.index$_) for}\\'R~'{((\'').index($_) for $_)}

Tłumaczenie rozwiązania GB Ruby i rozwiązania Rod's Python .

Lambda, która wprowadza listę znaków i wyświetla listę indeksów Nilliczonych od zera ( dla nieistniejących znaków).

EDYCJA: Naprawiono niedopatrzenie - wymagane dodanie 2 bajtów :(

smls
źródło
3

Clojure, 43 56 48 bajtów

Edycja: Cholera, zapomniałem 2! Zwiększono z 43 do 56.

Edycja 2: Zaktualizowałem przykładowy kod pod tym tekstem, zaktualizowałem liczbę bajtów, których nie należy uwzględniać (def f ...), ale tylko część mapy mieszania.

{\{ 0\\   1\  3\0   4\1 10\3 14\4 20\2 34 \} 43}

Mapa skrótów składa się tylko z postaci 01234{\\}i koduje ich lokalizacje. W mapach skrótów Clojure można używać funkcji, jak pokazano w tym kompletnym przykładzie ( fmożna je zastąpić definicją map skrótów):

; Keeping track of the zero-based index:
;      00000000001111111111222222222233333333334444444444
;      01234567890123456789012345678901234567890123456789
(def f {\{ 0\\   1\  3\0   4\1 10\3 14\4 20\2 34 \} 43})

(map f "0123456789{} \\abcdef") ; (4 10 34 14 20 nil nil nil nil nil 0 43 3 1 nil nil nil nil nil nil)
(apply str (keys f))            ; " 01234{\\}"

Chyba to się liczy :)

NikoNyrh
źródło
2

JavaScript, 39 bajtów

p=s=>[...s].map(c=>`p=${p}`.indexOf(c))

console.log( p('mapP') )

Washington Guedes
źródło
1
czy możesz to wyjaśnić [...s]?
Erresen,
Znany jest jako operator rozkładania, możesz zobaczyć nieco więcej w poradach golfowych ES6 .
Washington Guedes,
2
Odczytywanie kodu źródłowego jest niedozwolone
Arnauld,
2

Pyth, 11 bajtów

xL_+N"N+_Lx

Program, który pobiera dane wejściowe z "quoted string", z dowolnymi cudzysłowami w łańcuchu poprzedzonym znakiem poprzedzającym \, i drukuje listę wartości o indeksie zerowym -1dla znaków spoza źródła.

Wypróbuj online!

Jak to działa

xL_+N"N+_Lx    Program. Input: Q
xL_+N"N+_Lx"Q  Implicit quote closure and implicit input
     "N+_Lx"   Yield the string "N+_Lx"
   +N          Prepend a quote
  _            Reverse
 L          Q  Map over Q:
x               Yield the index of the character in the string
               Implicitly print
TheBikingViking
źródło
2

05AB1E , 19 bajtów

"'ìsvDyk,"'"ìsvDyk,

Wypróbuj online!

Daje to -1 zamiast brakujących znaków.


Luis Mendo opublikował to (nieco zmodyfikowane) na Golf you quine dla wielkiego dobra! dodanie „s” i „k” do tego quine również skutkuje tą odpowiedzią. Nie mogę jednak przypisać sobie tej trywialnej modyfikacji ... Luis, możesz wysłać mi wiadomość, jeśli chcesz to ponownie opublikować, a ja po prostu ją usunę. Jeśli chcesz zobaczyć moje postępy przed znalezieniem tego pytania, zobacz zmiany. Cóż ... W pewnym momencie było znacznie podobnie jak jego.

Urna Magicznej Ośmiornicy
źródło
@ Sanchises działa dla mnie!
Magic Octopus Urn
Cool cool cool!
Sanchises
@MagicOctopusUrn Dobra robota !!
Luis Mendo,
2

SmileBASIC, 128 96 88 86 bajtów

?R<3+CD,4LINPUT(S$)WHILE""<S$?INSTR("?R<3+CD,4LINPUT(S$)WHILE"+CHR$(34),SHIFT(S$))WEND

Ważną rzeczą do zrozumienia jest to, że nie jest to tak naprawdę wyzwanie. Potrzebujesz tylko kodu źródłowego do ostatniego unikalnego znaku .

Umieszczam co najmniej 1 każdego znaku na początku kodu: ?R<3+CD,4LINPUT(S$)WHILE"więc muszę tylko przechowywać kopię programu do pierwszego znaku cudzysłowu.

12Me21
źródło
1

Python, 90 88 bajtów

a,b,d=" ()+.7:[]efilmnor","a,b,d=\"",lambda e:[[b.find(d),a.find(d)+7][d in a]for d in e]

Przypadek testowy:

print(d("a,b(]q"))
#[0, 1, 2, 8, 15, -1]
TidB
źródło
1

Skumulowane , niekonkurencyjne, 36 bajtów

Kiedy powiedziałem, że ten język wciąż się rozwija, miałem na myśli to. Najwyraźniej promptużywany do zużywania całego stosu. Dlatego nie mogę mieć miłych rzeczy. Wypróbuj tutaj!

[tostr ':!' + prompt CS index out]:!

To jest standardowy szkielet quine. Zasadniczo :duplikuje funkcję [...]na stosie, która jest następnie wykonywana za pomocą !. Następnie wnętrze programu [...]wykonuje się z funkcją na stosie. Rzuca go na ciąg, dołącza :!(sam program), a następnie pobiera ciąg znaków za pomocą prompt. CSkonwertuje go na ciąg znaków. Ciąg znaków różni się nieco od zwykłego ciągu tym, że ma wektoryzację operatorów. W tym przypadku indexwektoryzuje dane wejściowe, uzyskując każdy indeks ciągu wejściowego w programie, w końcu outumieszczany.

W przypadku danych wejściowych Hello, World!daje to:

(-1 27 -1 -1 2 -1 6 -1 2 5 -1 26 9)

Próbowałem użyć tego bez quine (tj. Kodowania ciągu znaków, które pojawiają się w twoim źródle), ale w Stacked jest tylko jeden rodzaj cudzysłowu, a 'więc dłuższe byłoby zrobienie tego rodzaju rozwiązania.

Conor O'Brien
źródło
1

Łuska , 12 bajtów

m€`:'""m€`:'

Wypróbuj online!

Wyjaśnienie

Wyjaśnienie służy ¨do rozdzielania ciągów znaków i 'ograniczania znaków:

m€`:'""m€`:'  -- implicit input, for example: ¨m"a1`¨
      "m€`:'  -- string literal: ¨m€`:'¨
  `:'"        -- append character '"': ¨m€`:'"¨
m             -- map function over each character (example with 'a'):
 €            -- | index of first occurrence (1-indexed): 0
              -- : [1,6,0,0,3]
ბიმო
źródło
1

Java 8, 172 122 bajtów

a->{/*.indexOf(c)+\" ;}orh:Systmup*/for(char c:a)System.out.print("a->{/*.indexOf(c)+\\\" ;}orh:Systmup".indexOf(c)+" ");}

Indeksowane 0 i podaje -1znaki, które nie są częścią kodu źródłowego.

Wyjaśnienie:

Wypróbuj online.

a->{                         // Method with character-array parameter and no return-type
  /*.indexOf(c)+\" ;}orh:Systmup*/
                             //  Comment containing the remaining characters of the code
  for(char c:a)              //  Loop over the input-array
    System.out.print(        //   Print:
      "a->{/*.indexOf(c)+\\\" ;}orh:Systmup"
                             //    String containing all the characters used in the code
      .indexOf(c)+" ");}     //    Print the index of the char, plus a space as delimiter
Kevin Cruijssen
źródło
1

J , 31 22 bajtów

11|1+i.~&'11|1+i.~&'''

Wypróbuj online!

1-indeksowany, 0 dla znaków, których nie ma w kodzie. ''oznacza pojedynczy cytat. Znajdź każdy znak w ciągu 11|1+i.~&', dodaj 1, modulo 11.

FrownyFrog
źródło
1

> <> , 31 bajtów

'rd3*i:0(?;}{:}-&b0&?.75*l-nao]

Wypróbuj online!

Dane wyjściowe są indeksowane 1, 32co oznacza, że ​​znaku nie ma w kodzie.

Jo King
źródło
1

Perl 5 z -pl, 43 bajtów

Używa wprowadzania oddzielonego znakiem nowej linii i drukuje -1znaki, które nie pojawiają się w programie.

$s=q{$_=index"\$s=q{$s};eval\$s",$_};eval$s

Wypróbuj online!

Dom Hastings
źródło
@ Sanchises Naprawiono teraz, przepraszam za to. Wyraźnie nie czytał poprawnie!
Dom Hastings,
Nie ma problemu. Dziękujemy za wniesienie nowego życia do tego wyzwania!
Sanchises
1

Stax , 19 bajtów

"'sym[]I+"'"s+ym[]I

Uruchom i debuguj

Generuje indeks oparty na 0, jeden znak na linię. Okazuje się, że jest krótszy niż modyfikacja "34bL"34bLnapisanego wcześniej quine.

Weijun Zhou
źródło