З усього математики завжди знайдеться кілька теорем, які виходять за рамки будь-якого здорового глузду. Одним з таких є той факт, що існують різні розміри нескінченності. Ще один цікавий факт - ідея про те, що багато нескінченностей, які здаються різними розмірами, насправді однакового розміру. Існує стільки ж парних чисел, скільки цілих чисел, скільки є раціональних чисел.
Загальна концепція цього питання полягає у протистоянні химерній реальності нескінченності. У цьому виклику ваша програма виведе список, який:
- У будь-який конкретний момент часу завжди мати цілу кількість записів
- Врешті-решт містять (якщо його потрібно виконувати досить довго) будь-яке конкретне (не нульове) раціональне число точно один раз у всьому списку
- Містять необмежену кількість порожніх слотів (записи в списку, які без потреби встановлюються на 0)
- Майте частку порожніх слотів, що наближається до межі 100%
- Для кожного додатного цілого числа N майте нескінченну кількість місць з N послідовними порожніми прорізами
Змагання
Ваше завдання полягає в тому, щоб написати цю найкоротшу програму, яка виведе спеціальний список із наступними правилами:
- Усі записи з індексом, який не є квадратним числом, слід встановити на нуль. Отже, перший запис буде нульовим, другий та третій - нульовим, четвертий - ненульовим тощо.
- Всі раціональні числа будуть у вигляді неправильної дробу (наприклад, 4/5 або 144/13), яка була спрощена. Виняток становлять нулі, що буде просто
0
. - Усі (позитивні та негативні) раціональні цифри повинні з часом з’являтися у списку, якщо ваша програма працює досить довго та має достатньо пам'яті. Для будь-якого конкретного раціонального числа необхідний час може бути довільно великим, але завжди кінцевим, кількість часу.
- Якщо бігти протягом нескінченної кількості часу, жодне ненульове раціональне число ніколи не повинно з’являтися двічі.
Правило 3 допускає певні зміни, оскільки існує нескінченна кількість можливих юридичних результатів.
Виходом буде потік рядків. Кожен рядок буде мати загальну форму, 5: 2/3
де перше число - це номер введення, а потім - раціональне число. Зауважте, що 1: 0
завжди буде перший рядок виводу.
Приклад фрагменту виводу:
1: 1/1
2: 0
3: 0
4: 2/1
5: 0
6: 0
7: 0
8: 0
9: -2/1
10: 0
etc...
Правила, положення та примітки
Це код гольфу. Діють стандартні правила гольф-коду. Крім того, через різницю, дозволену у висновку, вам потрібно хоча б показати, чому ви вважаєте, що ваш список буде містити всі можливі раціональні числа точно один раз, і що ваше рішення є правильним.
EDIT: Оскільки числа простих ліній не відволікали виклик, я змінюю його на квадратні числа. Це досягає тієї ж мети, а також скорочує рішення.
1: 0
завжди буде перший рядок виводу. - Це суперечить вашому прикладу і теж не має для мене сенсу.