[[{}]]sx256?^dd3^8d^1-/8092541**r255/BF*+d0=xP
Спробуйте в Інтернеті!
Вхід на stdin, вихід на stdout.
Це працює, обчислюючи формулу для потрібного виводу у вигляді базового числа 256. Команда P у dc використовується для друку номера базового 256 у вигляді рядка.
Подальше пояснення:
Нехай n - вхід n. Програма dc обчислює суму
A = підлога (256 ^ n / 255) * 125 (BF трактується dc як 11 * 10 + 15 = 125)
і
B = підлога ((256 ^ n) ^ 3 / (8 ^ 8-1)) * 8092541 * (256 ^ n).
Для:
Зауважте, що 1 + 256 + 256 ^ 2 + ... + 256 ^ (n-1) дорівнює (256 ^ n-1) / 255 за формулою геометричної прогресії, і це дорівнює підлозі (256 ^ n / 255 ). Отже, це число, що складається з n 1 в базовому 256.
Коли ви помножите його на 125, щоб отримати A, результат - це число, що складається з n 125's в базі 256 (звичайно, 125 - це однозначна цифра в базі 256). Напевно, краще записати цифри в базу 256 як шістнадцяткові числа; 125 - це шістнадцятковий 7D, тому A - це базове число-256, що складається з n 7D в ряд.
B подібний:
Цього разу зауважте, що 1 + 16777216 + 16777216 ^ 2 + ... + 16777216 ^ (n-1) дорівнює (16777216 ^ n - 1) / 16777215, і це дорівнює підлозі (16777216 ^ n / 16777215).
Тепер 256 ^ 3 = 16777216 і 8 ^ 8-1 = 16777215, тому це те, що ми обчислюємо як підлогу ((256 ^ n) ^ 3 / (8 ^ 8-1)).
З подання геометричних рядів, це число в базовій частині 256 становить 100100100 ... 1001, з n цифр - 1, а решта цифр - 0.
Це множимо на 8092541, що в шістнадцятці - 7B7B7D. У базі 256 - це трицифрове число, що складається з цифр 7В, 7В та 7Д (записування цих цифр у шістнадцятковій кількості для зручності).
Звідси випливає, що добуток, записаний у базі 256, є 3-розрядним числом, що складається з 3-х цифр 7B 7B 7D, повторених n разів.
Це множиться на 256 ^ n, в результаті чого 4-розрядне базове число-256, що складається з 3-х цифр 7B 7B 7D, повторених n разів, а потім n 0-х. Це Б.
Додавання A + B тепер дає 4n-розрядне базове-256 число, що складається з 3-х цифр 7B 7B 7D, повторених n разів, а потім n 7D. Так як 7В і 7D є ASCII коди для {
і }
, відповідно, це рядок , що складається з п копій з {{}
подальшим п примірників}
, що є саме те , що ми хочемо , щоб при п> 0. Команда P в постійному друкує число базових 256 як струна, як саме нам потрібно.
На жаль, n = 0 слід розглядати як особливий випадок. Розрахунки, що наведені вище, дають результат 0 при n = 0; у такому випадку я щойно зашифрував друк рядка {}
.