Celem jest napisanie programu, który koduje inny program (wejście) z możliwie najmniejszą liczbą znaków.
Punktacja
- Wynik jest równy różnej liczbie znaków potrzebnej do wydruku.
- Niższy wynik jest lepszy.
Zasady
- Brak języków docelowych z ograniczonym zestawem poleceń. (Bez Brainf ** k, Biała spacja itp.)
Edycja : Mam na myśli co najmniej 26 znaczących znaków,A
nie zmienia sposobu działania programu brainf ** k, więc nie możesz policzyć tej postaci. To samo dotyczy białych znaków. - Język docelowy musi istnieć w momencie pisania tego pytania.
- Musisz załączyć małe wyjaśnienie, jak zarchiwizować swój wynik.
- Program wejściowy jest prawidłowy.
- Zakodowany program musi być poprawnym programem w tym samym języku, co dane wejściowe.
- Zakodowany program musi wykonać to samo zadanie, co program oryginalny.
- Twój koder musi działać dla każdego poprawnego programu w tym języku.
- Uwzględnij przykładowe dane wejściowe i wyjściowe.
Notatki
- Koder może być napisany w dowolnym języku, nie tylko w języku, na który jest kierowany.
- To nie jest gra w golfa , zachęca się do programów czytelnych.
- Wielkim celem jest sprawdzenie, ile różnych znaków potrzeba do napisania czegokolwiek w tym języku. Niedozwoliłem BF itp., Ponieważ nie byłoby żadnego wyzwania.
- Zostało to zainspirowane wydrukowaniem łańcucha w jak najmniejszej liczbie różnych znaków , możesz wziąć to jako metagolf w przypadku tego pytania.
Przykład
W Javie możesz używać \uXXXX
innych znaków. Prawidłowy wpis koduje w ten sposób każdy znak z wejścia. Miałoby to wynik 18 ( \ 0-9a-f
)
Kod w Tcl, koduje program Java:
set res {}
foreach char [split [read stdin] {}] {
append res [format \\u%04x [scan $char %c]]
}
puts $res
gets
czytam tylko jednego wiersza danych wejściowych? I przegapiłeś u
koder (ale z drugiej strony nie potrzebujesz miejsca i dlatego wynik pozostaje taki sam).