Желе , 47 целых чисел, 519 байт
e
BI$⁼#
⁾⁾⁾Ụ^/
ı***ıḞḞ
5
6
7
.::::
9
EȮ<
⁻GṘ
=`p`VV×`DQV
~A~A~A~A~A~A~A~A~A~A~A~A~A
⁷ṾṾṾw
⁴ḟ€⁴Ṁ
mmmmċ
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
ĖḌĖḌ
ṫṣȦJṫȦ⁸ȦJ
22
“@ṃ»
!ḤḤ!
³HH
ØaM
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
irið8c
⁶ḲĠṂ°İṂĊ
œṡ¹ẆẆTUṖṖṖṖP
ȷ½RṪ
LµdddddµFL
33
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
ẇɓæ«æ«æ«æ«æ«|æ«|
⁹ṚḢ²
‘‘‘0‘‘‘‘‘‘‘
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
-____---__________
”(O
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
⁽{ʂ%⁽{}
ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®
44
111111l11&K1111111Kl11&
,SS¶ỊỊ,ÇS¶ÇÑÇÇÇÑ
ÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆn
Каждая строка - это отдельная, полная программа.
Попробуйте онлайн! (включает набор тестов и проверку пересечения)
Как это устроено
Каждая полная программа без аргументов командной строки выполняет свою основную ссылку (определенную в последней строке) неформально, то есть без ввода. Если первая ссылка в цепочке является nilad, она используется, вызывается, и в качестве аргумента и возвращаемого значения основной ссылки устанавливаются результат; Если первое звено в цепочке является монадой или диадой, оно не используется и вместо него используется неявный аргумент и возвращаемое значение 0 . В обоих случаях остаток цепочки выполняется монадически.
Желе калечит свою продукцию в нескольких случаях. Примечательно, что одноэлементный массив печатается без окружающих скобок, поэтому 42 и [42] и неразличимы после печати. Мы будем использовать это несколько раз.
1 - 10
e
Существует тесты атома , если возвращаемое значение 0 принадлежит к аргументу 0 . Это так, поэтому eвозвращает 1 .
BI$⁼#
BI$является быстрой связью, в частности, монадической цепью, образованной быстрой $группировкой двоичного атома Bи атома приращенийI . В совокупности они преобразуют целое число в массив его цифр в базе 2, а затем вычисляют прямую разницу получаемых цифр. Если в массиве есть только один элемент, то нет прямых различий, и он Iвозвращает пустой массив (ложь); если есть хотя бы две цифры, Iвозвращает непустой массив (правда).
Быстрый #использует предыдущую быструю ссылку и применяет ее к 0 , 1, 2,… до тех пор, пока не будет найдено достаточно совпадений, и не возвращает массив совпадений. Требуемая сумма рассчитывается с помощью ⁼, которая сравнивает возвращаемое значение / аргумент 0 с собой, получая 1 . Таким образом, вся программа возвращает [2] , первое неотрицательное целое число с двумя цифрами в базе 2.
⁾⁾⁾Ụ^/
⁾⁾⁾строковый литерал, в частности, строка ⁾⁾ . Сравняться атом Ụсортирует свои показатели их соответствующих значения; так как оба символа равны, это приводит к [1, 2] . Полученный массив уменьшается с помощью битового XOR ^/, поэтому вся программа возвращает 3 .
ı***ıḞḞ
ıинициализирует аргумент и возвращает значение мнимой единице i . *является диадой возведения в степень , правый аргумент которой по умолчанию соответствует аргументу главной ссылки. Таким образом, ***ıвычисляет ((i i ) i ) i ≈ 4.81 + 0i , Ḟатом ( пол для вещественных аргументов, действительная часть для сложных) вычисляет действительную часть ( 4.81 ), а затем Ḟэтажи, получая 4 .
5
6
7
Эти три программы состоят из одного литерала и делают именно то, что вы ожидаете.
.::::
Литерал .является сокращением для 0.5 и инициализирует аргумент и возвращаемое значение. В целочисленное деление диады ( в :) правый аргумент по умолчанию основных звеньев аргумента, так ::::вычисляет 0,5 / 0,5 / 0,5 / 0,5 / 0,5 , получая 8 .
9
Еще один буквальный.
EȮ<
Полностью равный атом Eвозвращает 1, если все элементы в его аргументе равны, и 0, если нет. Целочисленный аргумент z повышен до [z] , поэтому Eон возвращает 1 для неявного аргумента 0 .
Теперь выходной атом Ȯвыводит 1 в STDOUT. Затем мы сравниваем 1 с неявным аргументом 0, используя атом меньше< . Результат (1 <0) = 0 , и он печатается неявно, когда программа заканчивается.
11 - 20
⁻GṘ
Сетка атом Gпытается сделать визуально приятную таблицу из своего аргумента. Для простого целочисленного аргумента (здесь: 0 ) он просто оборачивает его в массив. Плоский не равно атом ⁻сравнивает неявный аргумент 0 в результате вправо ( [0] ), что дает 1 , поскольку ее аргументы не равны. В представительских атом Ṙпечатает 1 к STDOUT и возвращает его результат. В конце программы, окончательное возвращаемое значение печатается неявно, так что в итоге мы получим 11 .
=`p`VV×`DQV
Сам быстро `превращается диада в монады, вызвав его с одинаковыми левыми и правыми аргументами. Сначала =`сравнивается неявный аргумент 0 с самим собой, давая 1 .
Декартово произведение атом pожидает списки в качестве аргументов, так что способствует целому числу 1 в диапазоне [1, ..., 1] = [1] . p`берет декартово произведение [1] и себя, получая [[1, 1]] .
Eval атом Vпревращает все плоские массивы (содержащие только цифры и символы) в строки, а затем оценивает результирующие строки как niladic программ желе. [[1, 1]] сначала превращается в [«11»] , затем Vудаляет строку, давая [11] . Еще раз, Vпревращает этот массив в «11» , а затем обнуляет его, чтобы получить 11 .
Теперь ×`умножает 11 на себя, получая 121 . Десятичного атом превращается 121 в [1, 2, 1] , то уникальный атом Qотбрасывает второй 1 , и Vеще раз получается список цифр в целое число , которое является результатом конкатенации их возвращения 12 .
~A~A~A~A~A~A~A~A~A~A~A~A~A
~это побитовый атом НЕ . С арифметикой дополнения до двух он отображает аргумент z в ~ z = - (z + 1) . Aявляется атомом абсолютного значения , поэтому он отображает - (z + 1) = z + 1 . При начальном возвращаемом значении 0 тринадцать ~Aвозвращают 13 .
⁷ṾṾṾw
Константа ⁷содержит символ новой строки '\ n' и инициализирует аргумент и возвращаемое значение.
Uneval атом Ṿпытается создать строковое представление его аргумент г такого , что программа Jelly , состоящая из этого кода будет возвращать г .
Первый вызов покорно возвращает строку «» \ n » , которая является символьным литералом. Следующий вызов возвращает «» »,« \ n » - пару символьных литералов. Третий и последний вызов возвращает "” ”,” ”,” ,, ””, ”\ n" - пятерку символьных литералов.
Наконец, атом индекса окнаw переводит свой правый аргумент '\ n' в строку "\ n" и находит первый индекс подстроки, начинающейся с "\ n" . Это возвращает 14 .
⁴ḟ€⁴Ṁ
⁴константа 16 . Quicklink filterfalse each ( ḟ€) переводит свой левый аргумент 16 в диапазон [1,…, 16] , затем перебирает его элементы.
Для каждого элемента г , ḟ⁴выполняется, сначала продвижение г в [г] , то удаление всех (если таковые имеются) вхождения 16 . Это дает массив [[1], [2],…, [14], [15], []] , где последний массив пуст, потому что он содержал 16 .
Наконец, максимальный атом Ṁвыбирает [15] .
mmmmċ
Модульное атом m- вызывается с аргументами х (массив) и у (целое число) , как правило , принимает все | у | th-й элемент x , начиная с первого, если y> 0 , с последним, если y <0 . Однако, когда y = 0 , он возвращает x, соединенный с его обратным.
Левый целочисленный аргумент 0 сначала переводится в [0] . Первая копия mобъединяет [0] с собой, давая [0, 0] . Оставшиеся копии превращают этот результат в [0, 0, 0, 0] , затем [0, 0, 0, 0, 0, 0, 0, 0] и, наконец, [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .
Наконец, счетчик атом ċподсчитывает количество раз неявного аргумента 0 появляется в результирующем массиве, возвращающиеся 16 .
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
ṭявляется липкость атома и присоединяет его левый аргумент в его правом. Поскольку ṭи следующие ḍявляются двоичными, все вызовы для ṭпередачи неявного аргумента 0 в качестве правильного аргумента ṭ. Первый вызов возвращает [0, 0] , второй [0, [0, 0] , а восьмой и последний [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .
ḍявляется атомом делимости ; для аргументов x и y возвращается 1 , если x делится на y , 0 если нет. Ḅне используется для целых чисел, поэтому ḍḄпроверяет 0 на делимость на каждое целое число в построенном массиве. 0 делится само по себе, поэтому мы получаем [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]]] .
Теперь небинарный атом Ḅработает на плоских массивах. Для пары [a, b] он просто возвращает 2a + b . Как упомянуто ранее, Ḅэто неоперативный для целых чисел: целочисленный аргумент c повышен до [c] , а [c] в любой базе просто c .
Первый вызов Ḅуменьшает [1, 1] до 3 , что приводит к [1, [1, [1, [1, [1, [1, [1, 3]]]]]]]] . Следующий вызов уменьшает [1, 3] до 5 , следующий [1, 5] до 7 и так далее, пока девятый не Ḅвернет 17 .
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
Ṇявляется плоским логическим атомом NOT и отображает неявный аргумент от 0 до 1 . +является атомом сложения, поэтому каждая из восемнадцати копий +Ṇувеличивает предыдущее возвращаемое значение (изначально 0 ). Вся программа, таким образом, возвращает 18 .
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
Cявляется атомом дополнения и отображает его аргумент z в 1-z . Nявляется атомом отрицания и отображает его аргумент z в -z . Вместе они CNсопоставляют z с - (1-z) = z-1 , поэтому восемнадцать копий превращают неявный аргумент 0 в -18 . Окончательное применение Cурожайности 1 - (-18) = 19.
ĖḌĖḌ
Перечисление атом Ėперечисляет элементы в массиве, создавая пар индекс-значение. Неявный аргумент 0 переводится в [0] , а затем Ėприводит к [[1, 0]] . Undecimal атом преобразует плоский массив от основания 10 к целому числу, получ [10] , в данном конкретном случае.
Второй вызов Ėпреобразует [10] в [[1, 10]] , а второй Ḍокончательно преобразует в [20] .
21 - 30
ṫṣȦJṫȦ⁸ȦJ
Хвост атом ṫ(диада) выберите постфикс его левый аргумент , который начинается с индексом ( на основе 1 и модульный) , указанная в его правом аргументе, продвигая левый целочисленный аргумент х к [х] . При вызове с обоими аргументами, установленными в 0 , ṫвозвращает [0] .
Любой и все атом Ȧвозвращает 1 , если ее аргумент truthy и не содержит нулей на любой глубине, 0 в противном случае. Здесь мы просто используем его как функцию тождественности для возврата неявного аргумента 0 . Раскол в атоме ṣразделяет его левый аргумент [0] при появлениях его правого аргумента 0 , поэтому она возвращает [[], []] здесь.
Индексы атом Jотбрасывает элементы возвращаемого значения и заменяет их с индексами, получая диапазон [1, 2] , в этом конкретном случае. Ȧи ṫоба работают как прежде, поэтому они уменьшают [1, 2] до постфикса, который начинается с последнего индекса, приводя к [2] .
В ниладических ссылках константа ⁸имеет место [] . Это неразборчивая нилада, то есть она никак не вписывается в цепочку. В результате предыдущее возвращаемое значение ( [2] ) печатается в STDOUT, а затем заменяется значением nilad ( [] ).
Поскольку [] ложно, Ȧпреобразует его в 0 . JАтом способствует 0 до [0] , а затем возвращает список своих индексов ( [1] ), который печатается неявно , когда программа заканчивается.
22
Еще один буквальный. Repdigits, кажется, лучшее место, чтобы использовать их.
“@ṃ»
Это использует встроенное сжатие строки Jelly. Индексы @ и ṃ в кодовой странице Jelly равны 64 и 220, а строковые литералы могут содержать 250 различных символов, поэтому сначала вычисляется целое число 250 × 65 + 220 = 16470 .
16470 делится на 3, поэтому частное 16470/3 = 5490 кодирует печатный символ ASCII или перевод строки. Их 96, и 5490 = 96 × 57 + 18 , что означает, что мы декодировали печатный символ ASCII с индексом 18 на основе 0 , который равен «2» .
Нам осталось 57 , что также делится на 3 , поэтому частное 57/3 = 19 = 96 × 0 + 19 кодирует печатаемый символ ASCII с индексом 18 на основе 0 , который равен «3» .
Это оставляет 0 ; процесс декодирования останавливается. Сгенерированные символы объединяются в форму "23"
!ḤḤ!
Факторный атом !превращает неявный аргумент 0 в 1 . Два вызова unhalve атома Ḥпревращают 1 в 2 , затем 2 в 4 . Наконец, !вычисляет 4! = 24 .
³HH
В отсутствие аргументов командной строки константа ³содержит 100 . Два вызова Hпревращают 100 в 50 , затем 50 в 25 .
ØaM
Константа Øaсодержит строчный алфавит. Максимальный атом Mдает все индексы максимальных элементов, а так как г является крупнейшей строчной буквой, результат [26] .
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
Двадцать шесть копий объединенного атома ;объединяют начальное возвращаемое значение 0 и двадцать шесть экземпляров аргумента по умолчанию 0 , создавая массив из 27 нулей.
¬является логическим атомом НЕ , поэтому ;¬добавляет 1 к массиву нулей. Следующий ¬отменяет все элементы в массиве, оставляя нам массив из 27 единиц и 1 ноль.
ḅявляется необоснованным атомом и преобразует массив цифр из его левого аргумента из базы, указанной в его правом аргументе, в целое число. ḅ¬преобразует из одинарного в целое число, поэтому он просто выполняет сумму. Для массива из 27 это возвращает 27 .
irið8c
Индекс атома iспособствует его левый аргументу 0 до [0] , а затем найти индекс его правого аргумента 0 в этом массиве, получая 1 .
Диапазон атом rсоздает восходящий или нисходящий диапазон от него остался аргумент его правого. Правильный аргумент - это неявный аргумент 0 , так что это приводит к [1, 0] . Второй вызов iнаходит индекс 0 в [1, 0] , давая 2 .
ðначинается новая, диадическая цепь. Поскольку предыдущая цепочка была niladic, левый и правый аргументы этой цепочки будут равны возвращаемому значению первой цепочки ( 2 ). cв комбинации атом. С левым аргументом 8 и правым аргументом 2 он считает все уникальные неупорядоченные 2-комбинации набора из 8 элементов, возвращая 8C2 = 8! / (6! 2!) = 28 .
⁶ḲĠṂ°İṂĊ
Константа ⁶содержит пробел и устанавливает аргумент и возвращаемое значение в '' . Слова атом Ḳспособствует характер «» к одноплодной строке «» и делит его на пространствах, уступая [[], []] .
Группа атомов Ġгруппы все показатели равных элементов. Поскольку оба элемента последнего возвращаемого значения равны, он возвращает [[1, 2]] здесь. Минимальное атом извлекает минимальный (единственный) элемент этого массива, получая [1, 2] .
Степени атом °преобразует оба целые числа от шестидесятеричных градусов в радианы, получая 1 ° × 2π / 360 ° = p / 180 и 2 ° × 2π / 360 ° = π / 90 . Обратное атом принимает мультипликативные инверсии, получая 180 / л ≈ 57,3 и 90 / П ≈ 28,6 .
Затем Ṃеще раз берет минимум, уступая 28,6 . Наконец, атом ceilĊ превращает 28.6 в 29 .
œṡ¹ẆẆTUṖṖṖṖP
Идентичность атом ¹возвращает 0 для неявного аргумента 0 . Раскол вокруг атома œṡспособствует обоих аргументов (как 0 ) до [0] , а затем расщепляется [0] вокруг смежных подрешетки , равным [0] . Это дает [[], []] .
Раздвижное окно атом Ẇстроит весь смежный подмассив своего аргумента. Первый экземпляр преобразует [[], []] в [[[]], [[]], [[], []]] , второй экземпляр преобразует [[[]], [[]], [[] , []]] в
[[[[]]], [[[]]], [[[], []]], [[[]], [[]]], [[[]], [ [], []]], [[[]], [[]], [[], []]]] .
Правда атом Tперечисляет все показатели truthy элементов. Ни один из массивов на первом уровне не является пустым, поэтому это приводит к [1, 2, 3, 4, 5, 6] . Вверх ногами атом Uизменяет этот массив, получая [6, 5, 4, 3, 2, 1] .
Четыре копии атома popṖ удаляют последние четыре элемента, оставляя нас с [6, 5] . Наконец, атом продуктаP превращает этот массив в 30 .
31 - 40
ȷ½RṪ
ȷявляется сокращением для 1 × 10 3 = 1000 . Квадратный корень атом ½дает 31.6 , которой диапазон атом Rпреобразует в [1, ..., 31] . Наконец, хвостовой атом Ṫизвлекает последний элемент, возвращая 31 .
LµdddddµFL
Длина атома Lспособствует неявный аргумент 0 до [0] , а затем принимает длину с получением 1 . µзапускает новую монадическую цепочку, а результат 1 становится ее аргументом.
Для аргументов х и у , то divmod атом dвыходов [х / у, х% г] . Каждый вызов будет иметь y = 1 , поэтому результат всегда будет [x, 0] .
Первый вызов начинается с x = 1 , что приводит к [1, 0] . dработает только с целыми числами, поэтому он векторизуется при последующих вызовах. Второй вызов дает [[1, 0], [0, 0]] , третий [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , и пятый и последний массив глубины 5, который содержит один и 31 ноль.
µеще раз запускает новую, монадическую цепочку, а массив до этого становится ее аргументом. Плоский атом Funnests этого массива, получая плоский массив одного одного и 31 нулей. Наконец, Lберет длину полученного результата, возвращая 32 .
33
Еще один repdigit, еще один буквальный.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
Каждый экземпляр атома переноса преобразует свой аргумент z в [z] . При начальном возвращаемом значении 0 все 34 экземпляра вместе дают [[[[[[[[[[[[[[[[[[[[[[[[[[[[0]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Наконец, атом глубиныŒḊ вычисляет максимальную глубину результирующего массива, возвращая 34 .
ẇɓæ«æ«æ«æ«æ«|æ«|
Окно существует атом ẇспособствует обоих аргументов (как по умолчанию до 0 ) на [0] , затем проверяет, ** [0] ** происходит как непрерывный подмассива [0] . Это так, поэтому ẇвозвращает 1 .
ɓначинается новая, диадическая цепь. Поскольку предыдущая цепочка была niladic, левый и правый аргументы этой цепочки будут равны возвращаемому значению первой цепочки ( 1 ). Цепочка использует два разных диадических атома: битовое смещение влево ( æ«) и побитовое ИЛИ ( |).
Диадическая цепочка, которая начинается с трех или более диад, первоначально вызывает первую диаду с аргументами цепочки. Здесь это дает 1 << 1 = 2 . Шесть последующих диад сгруппированы в пары (так называемые вилки ), где самая правая диада вызывается сначала с аргументами цепочки, затем самая левая вызывается с предыдущими возвращаемыми значениями в обе стороны.
Для æ«æ«, мы получаем 2 << (1 << 1) = 2 << 2 = 8 . Затем æ«æ«вычисляет 8 << (1 << 1) = 8 << 2 = 32 . Теперь |æ«получает нас 32 | (1 << 1) = 32 | 2 = 34 .
Наконец, трейлинг |действует как ловушка и вызывается с предыдущим возвращаемым значением в качестве левого аргумента и правым аргументом цепочки в качестве правого. Это возвращает 34 | 1 = 35 .
⁹ṚḢ²
При отсутствии второго аргумента константа ⁹содержит 256 . Обратный атом способствует 256 в массив [2, 5, 6] и переворачивает ее с получением [6, 5, 2] . Затем атом головыḢ извлекает первый элемент, а квадратный атом ²возвращает ** 6² = 36 *.
‘‘‘0‘‘‘‘‘‘‘
Приращение атом ‘увеличивает свой аргумент на 1 , так что ‘‘‘повернуть начальное значение , возвращаемых 0 в 3 . Следующий 0 - это неразборчивая нилада, то есть он никак не вписывается в цепочку. В результате предыдущее возвращаемое значение ( 3 ) печатается в STDOUT, а затем заменяется значением nilad ( 0 ).
Следующие 7 копий ‘превращают этот 0 в 7 , который неявно печатается после завершения программы.
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
Декремент атом ’декрементирует свой аргумент на 1 , так что тридцать восемь экземпляров провернуть начальное возвращаемое значение 0 в -38 . Абсолютная разница атом ạвычисляет без знака разности между -38 и неявным аргументом 0 , возвращающимися 38 .
-____---__________
-является сокращением для -1 и устанавливает аргумент ссылки и возвращаемое значение равным -1 . Каждый из _них является экземпляром двоичного атома вычитания , правый аргумент которого по умолчанию будет равен -1, если отсутствует.
Сначала -____-вычисляется (-1) - (-1) - (-1) - (-1) - (-1) = 3 . Нижеследующее -1 - это неразборчивая нилада, поэтому предыдущее возвращаемое значение ( 3 ) печатается в STDOUT, а затем заменяется значением нилида ( -1 ).
Затем -_вычисляет (-1) - (-1) = 0 , где литерал -устанавливает левый аргумент _и использует возвращаемое значение в качестве правого. Следующие девять копий _вычитают аргумент по умолчанию -1 из возвращаемого значения, получая 9 , которое выводится неявно по окончании программы.
”(O
”(является символьным литералом, и порядковый атом Oищет свою кодовую точку Unicode, получая 40 .
41 - 47
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
В отсутствие третьего аргумента командной строки константа ⁵имеет значение 10 . Unlength атом Ḷсоздает диапазон 0 на основе, в частности [0, ..., 9] для аргумента 10 , с обеих сторон повторе в месте атома x. Последний сопоставляет элементы своего левого аргумента с повторениями своего правого аргумента и повторяет каждый из элементов соответствующее количество раз. Используя [0,…, 9] в качестве левого и правого аргумента, мы получаем ноль нулей, один, два, два и т. Д.
Индекс в атоме ịизвлекает элемент его правого аргумента по индексу , указанному в его левом. С левым аргументом 10 ( ⁵слева) и правым аргументом [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (предыдущий результат) это дает 4 .
За цепочкой до этой точки следует непарсируемая нилада ⁵, поэтому предыдущее возвращаемое значение ( 4 ) печатается в STDOUT, возвращаемое значение устанавливается равным 10 , а остальная часть цепочки анализируется как обычно.
Как и прежде, ⁵ḶxḶбудет давать массив [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] . На этот раз мы вызываем отсортированный атом Ṣв аргументе 10 , который переводит 10 в [1, 0] , а затем сортирует его для получения [0, 1] . Диадическая головка атом Теперь извлекает префиксы длины 0 и 1 из результата влево, оставляя нас с [[], [1]] . При печати ничего кроме 1 не останется видимым.
⁽{ʂ%⁽{}
⁽и его два следующих символа составляют числовой литерал. Если j и k являются их кодовыми точками в кодовой странице Jelly и (j, k) <(124, 250) , мы получаем целое число 1001 + 250j + k . Кодовые точки '{' , '}' и 'ʂ' - 123 , 125 и 167 , поэтому левый литерал оценивается в 1001 + 250 × 123 + 167 (= 31918) , а правый - в 1001 + 250 × 123 + 125 (= 31876) .
Поскольку левое целое число менее чем в два раза больше правого, результат составляет (… + 167)% (… + 125) = (… + 167) - (… + 125) = 167–125 = 42 .
ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®
Перетасовка атом Ẋрандомизирует порядок элементов своего аргумента; числовой аргумент z заранее повышается до диапазона [1,…, z] . Для неявного аргумента 0 этот диапазон пуст и Ẋприводит к [] . Все атом Ạвозвращает 1 , если все элементы ее аргумента являются truthy, 0 , если нет. Поскольку пустой массив не содержит ложных элементов, здесь Ạвозвращается 1 .
Индекс с атомом ż(диада) принимает аргументы x и y и транспонирует пару [x, y] . Для целых чисел x и y это просто возвращает [[ x, y]] , поэтому этот конкретный объект ż, вызываемый с аргументами 1 и 0 (неявный аргумент), возвращает [[1, 0]] . Диадический Eval атом vпревращает все плоские массивы (содержащие только цифру и символы) Я левый аргумент в строки, а затем оценивает результирующие строки как монадическая программа Желе с правым аргументом в качестве аргументов программ. С ["10"]состоит только из литералов, это игнорирует правильный аргумент vи просто приводит к [10] .
Копия быстро ©присоединяет к vи копирует его результат в регистр. Более поздние вхождения атома отзыва® (nilad) будут извлекать [10] из регистра.
Следующие три экземпляра żvработы, как и прежде, отображают [10] в [[10, 0] в [100] в… в [10000] . На заказ атомных ọиспытаний , сколько раз его левый аргумент делится на его правой, так вот, он вычисляет порядок 10 (сгружен с ®) в 10000 = 10 4 , получая [4] .
Ниже ®приведена неразборчивая nilad, поэтому предыдущее возвращаемое значение ( [4] ) печатается в STDOUT, а затем заменяется значением nilad ( 10 ). Применяем Ạдалее, получая 1 . (Это необходимо, так как на этом этапе будет разбираться нилада, за которым следует диада.)
Как и прежде, żvżvżvдобавляет три нуля к текущему возвращаемому значению, превращая 1 в [1000] . И, наконец, ọ®вычисляет порядок 10 в 1000 = 10 3 , и 3 выводится на STDOUT , когда программа заканчивается.
44
Еще один репигит, еще один буквальный.
111111l11&K1111111Kl11&
Прежде всего, литерал 111111устанавливает аргумент и начальное возвращаемое значение равным 111111 . Другие серии 1также являются литералами.
lявляется логарифмическим атомом, который вычисляет логарифм левого аргумента с основанием, указанным в правом. При вызове 111111 с правильным аргументом 11 мы получаем журнал 11 111111 ≈ 4.85 .
Слова атом Kприсоединяется список аргументов в пространствах, после продвижения числового / символа г в [г] . Здесь мы просто используем его, чтобы превратить аргумент ссылки 111111 в [111111] . (Здесь нам не требуется массив, но у нас закончились атомы идентичности.) Побитовый атом AND& принимает возвращаемые значения в обе стороны, при необходимости возвращает их к целому числу и вычисляет их побитовое AND. В этом конкретном случае он возвращает [4.85 & 111111] = [4 & 111111] = [4] .
Ниже 1111111приведена неразборчивая nilad, поэтому предыдущее возвращаемое значение ( [4] ) печатается в STDOUT, а затем заменяется значением nilad ( 1111111 ). Kзатем превращает это целое число в [1111111] . (Это опять-таки не обязательно, но на этом этапе можно разобрать ниладу, за которой следует диада.)
Как и прежде, l11вычисляет log 11 1111111 ≈ 5.81 , затем &возвращает [5.81 & 111111] = [5 & 111111] = [5] .
,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ
Это единственная программа, которая состоит из нескольких пользовательских ссылок. Последняя ссылка является основной и выполняется при запуске программы, остальные - вспомогательные. Быстрый Çвсегда ссылается на ссылку выше текущей и выполняет ее монадически. Аналогично, быстрое Ñвсегда ссылается на ссылку под текущей (обтекание), а также выполняет ее монадически.
Верхняя ссылка состоит из парного атома ,- диады, которая превращает аргументы x и y в [x, y] - и атома суммыS - монады, которая переводит целочисленный аргумент z в [z] и уменьшает аргумент массива путем сложения. Когда ссылка ,SSвызывается с целочисленным аргументом n , она вычисляет Σ [n, Σn] = Σ [n, n] = 2n .
Средняя связь состоит из вышеуказанных атомов, вышеупомянутого быстрого Çи незначительного атома Ị- монады, которая дает 1 для числовых аргументов z с -1 ≤ z ≤ 1 , но 0 для всех остальных. Применение Ịдважды к целочисленному аргументу n по существу заменяет его на 1 , так как вывод первого Ị( ввод второго) всегда незначителен. Этот результат затем соединяется с возвращаемым значением Ç( вызывается с аргументом n ), и результирующая пара уменьшается на S. В общей сложности мы вычисляемΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .
С этими двумя вспомогательными ссылками основная ссылка теперь может создавать любое неотрицательное целое число, просматривая его двоичные цифры. При начальном возвращаемом значении 0 цепочка ÇÑÇÇÇÑвычисляет конечный результат ((((((× × 2 + 1) × 2) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = ((5 × 2 + 1) × 2 + 1) × 2 = 46 .
ÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆn
Следующий простой атом находит наименьшее положительное простое число, которое строго больше , чем ее аргумент. С начальным возвращаемым значением 0 пятнадцать вызовов Ænвычисляют пятнадцатое простое число, которое равно 47 .