Wyzwanie
Napisz niepusty program / funkcję, p
która, biorąc pod uwagę niepusty ciąg wejściowy s
, wyświetla pozycję pierwszego wystąpienia każdego znaku s
w 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 x
oznacza dowolną moc, która nie jest ważne wyjście na pozycji znaku (np liczba ujemna, 0
jeś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 rand
strumienia i twierdzenie, że gdzieś tam jest odpowiedź), spójne (np. x
Powyż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 -1
zawsze 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 A
na 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
01030708070
?