Aktualizacje: Usunięto limit czasu. Musisz umieć opisać wynik - patrz nowa reguła.
Pangram jest zdanie, że wykorzystuje każdą literę w alfabecie przynajmniej raz, takie jak:
Idealny pangram wykorzystuje każdą literę dokładnie raz.
Rozważ napisanie programu, który jest idealnym pangramem, używając 95 alfabetu znaków drukowalnych ASCII (kody szesnastkowe od 20 do 7E) jako alfabetu:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Taki program musi zawierać dokładnie 95 znaków, przy czym każdy znak ASCII do wydruku występuje dokładnie raz, ale w dowolnej kolejności. (Zatem istnieje 95! = 1,03 × 10 148 możliwości.)
Twoim zadaniem jest napisanie tego programu w taki sposób, aby liczba drukowalnych znaków ASCII drukowanych na standardowym wyjściu była jak najwyższa (tj. Płodna).
Twój wynik to liczba drukowalnych znaków ASCII, które program wypisuje ( łączna kwota, a nie liczba odrębna : AABC
wyniki 4, a ABC
wyniki 3) . Najwyższy wynik wygrywa.
Detale
- Wynik może zawierać dowolne znaki (w tym duplikaty), ale tylko wystąpienia 95 drukowanych znaków ASCII liczą się do wyniku.
- Za pomocą tego JSFiddle można policzyć liczbę drukowalnych znaków ASCII w dowolnym ciągu.
- Jeśli twój język nie ma standardowego, użyj najbardziej odpowiedniej alternatywy.
- Twój program ...
- musi mieć skończony czas wykonywania (limit czasu został usunięty)
- musi mieć skończoną wydajność
- może zawierać komentarze
- musi się kompilować i uruchamiać bez (nieprzechwyconych) błędów
- nie może pytać ani wymagać danych wejściowych
- muszą być niezmienne w czasie i deterministyczne
- nie wolno używać bibliotek zewnętrznych
- nie może wymagać połączenia sieciowego
- nie wolno wykorzystywać plików zewnętrznych
- (możesz użyć samego pliku programu, o ile zmiana nazwy pliku nie zmienia zachowania programu)
- Jeśli to zadanie jest niemożliwe, to jest jakiś zły język.
- Musisz podać dokładny wynik lub dokładnie go opisać, jeśli jest zbyt duży, aby zmieścił się w poście . W rzeczywistości nie musisz uruchamiać programu. Tak długo, jak będzie działał przez określony czas na komputerze z nieograniczoną ilością pamięci, jest poprawny.
Przykład
Ten uproszczony program w języku Python 2 jest możliwym rozwiązaniem:
print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~
Wyprowadza, 9876543210
który zawiera 10 znaków ASCII do wydrukowania, co daje wynik 10.
a
sześć biliardów razy, w których nie jest nawet możliwe uzyskanie dokładnej górnej granicy liczba znaków. W każdym razie nadal jestem dumny z mojego 95, nawet jeśli jest trochę mały. Rozmiar to nie wszystko, wiesz.