Википедия: парадокс дихотомии Зенона
Бесконечное количество математиков идут в бар. Первый заказывает пиво. Второй заказывает половину пива. Третий заказывает четверть пива. Бармен останавливает их, наливает два сорта пива и говорит: «Вы все идиоты».
Печатайте следующие серии в течение всего времени работы программы, при этом знаменатель каждого элемента умножается на два каждый раз:
1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...
По мере n
приближения к бесконечности приближается сумма этой последовательности 2
.
правила
Нет, вы не можете печатать 2
.
Вы не можете печатать 1/1
как первый элемент.
Вы можете удалить пробелы 1+1/2+...
или добавить пробелы, 1 + 1 / 2 + ...
как вам нужно.
Вы можете использовать символы новой строки вместо пробелов в качестве разделителя из-за широкого спроса.
Вы можете добавить .
плюс постоянное число0
знаменатель к знаку, если это необходимо.
«Бесконечно» означает отсутствие ненужных задержек, и как можно дольше ограничивается спецификациями текущей (переменной) системы, но не ограничивается вашим текущим языком.
Применяются стандартные лазейки .
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
источник
+1/
s просто образовала бы диагональную линию. Однако длина знаменателей изменяется линейно (вплоть до округления): количество цифр2^n
составляет околоn log(2)/log(10)
. Это линейное изменение приводит к линейному изменению относительного положения каждого+1/
относительно предыдущего, которое совпадает с квадратичным изменением абсолютного положения.Ответы:
05AB1E ,
109 байтовСохранено 1 байт благодаря Эрику Аутгольферу
Попробуйте онлайн!
объяснение
источник
[No?…+1/?
«
вместо,J
но это тоже работает.Python 2 , 30 байт
-5 спасибо Эрику Аутгольферу
Попробуйте онлайн!
источник
Желе , 12 байт
Попробуйте онлайн!
источник
Pyth , 10 байт
Попробуйте онлайн!
источник
APL (Dyalog Unicode) , 15 байтов
Больше удовольствия , если
⎕FR
( F loating-точка Р epresentation) является1287
(128 бит десятичное) и⎕PP
( Р ечать Р recision) 34.Попробуйте онлайн!
{
…}1
Примените следующую функцию к номеру 1:⎕←⍵'+1/'
распечатать аргумент и строку⊃
выбрать первый (то есть аргумент)2×
удвоить это∇
рекурсия хвостового вызова (оптимизирована, поэтому ее можно бесконечно повторять)источник
C (gcc) , 60 байтов
Поднимается 64-битный лимит без знака.
Попробуйте онлайн!
Этот продолжается вечно; (это так мало, как он собирается получить)
C (tcc) ,
312264255251233231208204195190188170 байтПопробуйте онлайн!
Вот не такая игра в гольф;
источник
Баш , 33 байта
Попробуйте онлайн!
Изменить
print
дляprintf
иecho
для,printf
чтобы избежать новой строкиисточник
printf 1
также избегает новой строки, нет?+1/inf
с 1024-го семестра и далее. :-(постоянный ток,
1918 байтобъяснение
Мы толкаем
1
и[rdp+[+1/]Prdx]
в стек. Затем мы дублируем и выполняем[rdp+[+1/]Prdx]
. Первое, что он делает, это вращает stack (r
) так, чтобы значение находилось сверху.dp+
печатает значение и добавляет себя (умножить на 2).[+1/]P
печатает инвариант+1/
, затем мы поворачиваем аргументы, чтобы определение сохраненного макроса находилось вверху, дублировали его и начинали заново.Заметки
GNU
dc
обычно оборачивается в 70 столбцов. Чтобы переопределить это и получить бесконечную строку, добавьтеDC_LINE_LENGTH=0
к своим переменным среды.Выход (частичный)
...
...
...
источник
dp
вместо того,ddn
чтобы сохранить байтdn
не вводить новую строку, но учелp
(за счет более уродливого вывода). На самом деле, если подумать, все не так страшно.GolfScript , 19 байт
Попробуйте онлайн!
источник
CJam , 14 байтов
Попробуйте онлайн!
источник
> <> , 14 байт
Попробуйте онлайн!
источник
Pyth, 10 байт
Z
начинается как ноль.~hyZ
post-присваивает значение2*Z+1
дляZ
. Таким образом,Z
становится0, 1, 3, 7, 15, ...
более последовательных итераций.h
затем выводит значение на единицу больше.#
запускает бесконечный цикл и"+1/
получает правильное форматирование.источник
JavaScript (ES6) ,
3634 байтаПопробуйте онлайн!
Вдохновленный ответом Джейка Тейлора .
Обратите внимание, что это ограничено языком, поскольку
a
является переменной с плавающей точкой, а не целым числом.-2 байта благодаря @Stefnotch .
источник
for(a=.5;;)console.log`${a*=2}+1/`
Хотя ваше решение ограничено языком, потому что это число с плавающей точкой, а не большое целое число. (Задача гласит, что это должно быть не ограничено языком, а скорее спецификациями системы.)for(a=1;;a*=2)console.log(a+"+1/")
Рубин ,
2725 байтПопробуйте онлайн!
источник
Java,
107102 байтаz=null
существует, чтобы сократитьo=java.math.BigInteger.ONE
вz=null,o=z.ONE
, экономя 12 байтов.z.ONE
не будет выбрасывать,NullPointerException
потому что мы обращаемся к статическому члену, а не к экземпляру.Использование
int
сокращает код, но не соответствует после 32 итераций.Сохраняет
n.compareTo(o)>0
превращеноn.max(o)==o
, благодаря идее @Shufflepantsисточник
int
и все другие примитивные типы ограничены на уровне языка. Кроме того, вBigInteger
документе прямо сказано, что ограничение является необязательным, а не обязательным (и что реализация JVM по умолчанию использует это ограничение).Vim,
22, 21 байт / нажатия клавишВо время тестирования вы можете столкнуться с проблемами с текущими значениями регистра. Чтобы это исправить, запустите
перед запуском этого или запустив vim с
источник
R,
3534 байтаИнтервал немного запутанный, но я понимаю, что все в порядке.
источник
repeat
вместоwhile(T)
:cat(i<-1);repeat cat("+1/",i<-i*2)
на 1 байт меньше.Befunge 93: 14 байт
источник
Powershell, 34 байта
Попробуйте онлайн!
источник
Ацето , 20 байт
Печатает последовательность без пробелов. При запуске вы не увидите ничего на некоторое время, из-за буферизации бегите,
-F
чтобы сразу увидеть все.источник
Go ,
102100 байтИдти может быть почти так же плохо, как Java, по-видимому.
Попробуйте онлайн! ( Было бы хорошей идеей, чтобы избежать запуска любого из них локально .: P)
источник
QBIC , 18 байт
Печатает каждый термин на новой строке.
Объяснение:
Мы можем сохранить байт с более либеральным форматом вывода:
источник
Mathematica, 25 байтов
источник
+
s и цифры?C #, ̶6̶8̶ 154 байта
Вот версия, не ограниченная int
источник
int.MaxValue
BigInteger b=1;
и сократив умножение доb*=2;
JavaScript (ES6),
454342 байтаСохранено 2 байта, спасибо @DanielM! Сохранено 1 байт, спасибо @ eush77 за указание на это.
= console.log; а = 1; (1), для (;;) _ (+1/${a*=2}
)= console.log; (а = 1), для (;;) _ (+1/${a*=2}
)Моя первая поездка в Codegolf, иди спокойно!
источник
a=1
Могут идти в первой части для,for(a=1;;)
экономя байты в дополнительной точке с запятой._(a=1)
, работа тоже по предложению DanielM+1/
, а не дробь.PHP, 32 байта
Онлайн версия
-6 байт, если
9.2233720368548E+18
допустимы такие значения, какПопробуйте онлайн!
источник
AWK ,
3732 байтаПопробуйте онлайн!
Могли удалить
BEGIN
и сохранить 5 байтов, если вход был разрешен. Использование показателей определенно дешевле побайтно, чем умножение. :)Надеюсь, 2 ^ 1023 достаточно близко к бесконечности (на моем рабочем компьютере). К сожалению, ссылка на TIO обрезается раньше (около 921). Но 17726622920963562283492833353875882150307419319860869157979152909707315649514250439943889552308992750523075148942386782770807567185698815677056677116184170553481231217950104164393978236130449019315710017470734562946173533283208371259654747728689409291887821024109648618981425152 кажется довольно близко к бесконечности. :)
источник
Haskell
-6662605149 символовЭто печатает строку, построенную путем печати строковых представлений степеней двух, начиная с 1, разделенных строкой
" + 1/"
.Сам код составляет 49 байтов, импорт и перевод строки увеличивают его до 66
Редактировать: (62)
Побрил 4 байта, вырезав импорт и определив интеркалат с гораздо более коротким именем
Изменить 2: (60)
Побрил еще 2 символа, поняв, что мне не нужно использовать соглашение о списке (x: xs):
Изменить 3: (51)
Переопределено определение f и карты как тела сгиба, чтобы сохранить еще 9 символов
Изменить 4: (49)
Как указал Лаокони, я могу удалить пробелы, чтобы сократить еще 2 байта от общего количества:
источник
Braingolf ,
4137 байтСохранено 4 байта, потому что я понял, что мне не нужны пробелы, всегда внимательно читайте спецификации, дети
Попробуйте онлайн!
Возможно, лучше играть в гольф, но это работает.
источник
Фурье, 20 байтов
Попробуйте онлайн!
Я думаю, что это может работать только на Try it Online из-за различий в том, как Python и Javascript обрабатывают большие числа.
Пояснение Psuedocode:
источник
Print i
в началоWhile
цикла?i
.