Обновления: ограничение по времени снято. Вы должны быть в состоянии описать вывод - см. Новое правило.
Панграмма является предложением , которое использует каждую букву в алфавите , по крайней мере один раз, такие как:
Идеально панграмма использует каждую букву только один раз.
Подумайте о том, чтобы написать программу, которая является идеальной панграммой, используя в качестве алфавита 95 печатных символов ASCII (шестнадцатеричные коды от 20 до 7E):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Такая программа должна содержать ровно 95 символов, причем каждый печатный символ ASCII встречается ровно один раз, но в любом порядке. (Таким образом, существует 95! = 1,03 × 10 148 возможностей.)
Ваша задача состоит в том, чтобы написать эту программу так, чтобы количество печатаемых символов ASCII, печатаемых на стандартный вывод, было как можно выше (т.е. плодовитым).
Ваша оценка - это количество печатаемых символов ASCII, которые выводит ваша программа ( общая сумма, а не отдельная сумма: AABC
баллы 4, тогда как ABC
баллы 3) . Самый высокий балл побеждает.
Детали
- Вывод может содержать любые символы (включая дубликаты), но только экземпляры из 95 печатных символов ASCII засчитываются в ваш счет.
- Вы можете использовать этот JSFiddle для подсчета количества печатных символов ASCII в любой строке.
- Если у вашего языка нет стандартного вывода, используйте наиболее подходящую альтернативу.
- Ваша программа ...
- должно иметь конечное время выполнения (ограничение по времени было снято)
- должен иметь конечный вывод
- может содержать комментарии
- должен компилироваться и запускаться без ошибок
- не должен запрашивать или требовать ввода
- должен быть инвариантным по времени и детерминированным
- не должен использовать внешние библиотеки
- не должен требовать подключения к сети
- не должен использовать внешние файлы
- (вы можете использовать сам файл программы, если изменение имени файла не влияет на поведение программы)
- Если эта задача невозможна, это какой-то язык, который слишком плох.
- Вы должны дать свой точный вывод или точно описать его, если он слишком велик, чтобы поместиться в посте . Вы на самом деле не должны запускать вашу программу. До тех пор, пока он будет работать за ограниченное время на компьютере с неограниченным объемом памяти, он действителен.
пример
Эта упрощенная программа на Python 2 является возможным решением:
print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~
Он выводит, 9876543210
который содержит 10 печатных символов ASCII, получая при этом 10.
a
шесть квадриллионов раз, когда даже невозможно получить точный верхний предел количество символов Во всяком случае, я все еще горжусь своими 95, даже если это немного. Знаете, размер - это еще не все.