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