Желе , 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$
є QuickLink, в зокрема монадичної ланцюга утворена швидка $
угрупованню довічного атома B
і збільшення атома I
. У поєднанні вони перетворюють ціле число в масив його цифр у базі 2, потім обчислюють прямі різниці отриманих цифр. Якщо масив містить лише один елемент, немає передових різниць і I
повертає порожній масив (хибний); якщо є щонайменше дві цифри, I
повертає не порожній масив (truthy).
Швидкий #
споживає попереднє швидке посилання та застосовує його до 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 . Кожен фільтр швидкої посилання ( ḟ€
) просуває його лівий аргумент 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] .
Нарешті, атом countċ
підраховує кількість разів, коли неявний аргумент 0 з'являється в отриманому масиві, повертаючи 16 .
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
ṭ
є атомом tack і додає лівий аргумент до правого. Оскільки ṭ
і далі ḍ
є діадичними, всі виклики ṭ
передавати неявний аргумент 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
Ще один буквальний. Репдигіти здаються найкращим місцем для їх використання.
“@ṃ»
Для цього використовується вбудована струмова стискання 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 . Два виклики атома неживогоḤ
перетворюють 1 на 2 , потім 2 в 4 . Нарешті, !
обчислює 4! = 24 .
³HH
За відсутності аргументів командного рядка константа ³
утримує 100 . Два виклики H
витків 100 на 50 , потім 50 на 25 .
ØaM
Постійна Øa
утримує малий алфавіт. Максимальний атом M
дає всі індекси максимальних елементів, а так як г є найбільшою рядкової буквою, результат [26] .
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
Двадцять шість примірників конканатного атома ;
об'єднують початкове значення повернення 0 і двадцять шість екземплярів аргументу за замовчуванням 0 , будуючи масив з 27 нулів.
¬
є логічним атомом NOT , тому ;¬
додає 1 до масиву нулів. Наступний ¬
заперечує всі елементи масиву, залишаючи нам масив з 27 одиниць і 1 нуль.
ḅ
є атомом unbase і перетворює цифровий масив з його лівого аргументу з бази, зазначеної в його правому аргументі, в ціле число. ḅ¬
перетворюється з унарного в ціле число, тому воно просто виконує суму. Для масиву 27 одиниць це повертає 27 .
irið8c
Індекс атома i
сприяє його лівий аргументу 0 до [0] , а потім знайти індекс його правого аргументу 0 в цьому масиві, отримуючи 1 .
Діапазон атом r
створює висхідний або спадний діапазон від нього залишився аргумент його правого. Правильним аргументом є неявний аргумент 0 , тому це дає [1, 0] . Другий виклик i
знаходить індекс 0 в [1, 0] , даючи 2 .
ð
починається новий, діадичний ланцюг. Оскільки попередній ланцюг був ніладичним, і лівий, і правий аргумент цього ланцюга буде рівним зворотній величині першого ланцюга ( 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 . Нарешті, атом стельĊ
перетворює 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] .
Чотири копії поп- атома Ṗ
видаляють останні чотири елементи, залишаючи нас [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 нуль.
µ
знову запускає новий, монадичний ланцюг, і масив з раніше стає його аргументом. Плоский атом F
unnests цього масиву, отримуючи плоский масив одного одного і 31 нулів. Нарешті, L
приймає довжину отриманого, повертаючи 32 .
33
Ще один репгігіт, ще один буквальний.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
Кожен екземпляр атома обертання перетворює свій аргумент z в [z] . З початковим значенням повернення 0 , усі 34 екземпляри разом дають [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Нарешті, атом глибиниŒḊ
обчислює максимальну глибину отриманого масиву, повертаючи 34 .
ẇɓæ«æ«æ«æ«æ«|æ«|
Вікно існує атом ẇ
сприяє обох аргументів (як по замовчуванням до 0 ) на [0] , потім перевіряє, ** [0] ** відбувається як безперервний подмассіва [0] . Це так, тому ẇ
повертає 1 .
ɓ
починається новий, діадичний ланцюг. Оскільки попередній ланцюг був ніладичним, і лівий, і правий аргумент цього ланцюга буде рівним зворотній величині першого ланцюга ( 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 - нерозбірливий nilad, тому попереднє повернене значення ( 3 ) друкується в STDOUT, а потім замінюється значенням nilad ( -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 .
По ланцюгу до цієї точки супроводжується нерозбірливий nilad ⁵
, тому за попереднім значенням повернення ( 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 - їхні кодові точки на кодовій сторінці Джеллі і (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]] , тому цей конкретний ż
, викликаний аргументами 1 і 0 (неявний аргумент), повертає [[1, 0]] . Диадического Eval атом v
перетворює все плоскі масиви (містять тільки цифру і символи) Я лівий аргумент в рядки, а потім оцінює результуючі рядки як Монадический програма Желе з правим аргументом в якості аргументів програм. Оскільки ["10"]складається виключно з буквалів, це ігнорує правильний аргумент v
і просто призводить до [10] .
Копія швидко ©
приєднує до v
і копіює його результат в регістр. Пізніші входження атома відкликання®
(nilad) вийдуть [10] з реєстру.
Наступні три екземпляри żv
роботи, як і раніше, відображають [10] до [[10, 0] до [100] до… до [10000] . На замовлення атомних ọ
випробувань , скільки разів його лівий аргумент ділиться на його правій, так ось, він обчислює порядок 10 (сгружен з ®
) в 10000 = 10 4 , отримуючи [4] .
Далі ®
йде нерозбірлива рідина, тому попереднє повернене значення ( [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] . (Тут нам не потрібен масив, але у нас закінчилися атоми тотожності.) Побітовий І атом &
приймає повернені значення в обидві сторони, при необхідності підкидає їх до цілого числа і обчислює їх побітові І. У цьому конкретному випадку він повертає [4.85 & 111111] = [4 & 111111] = [4] .
Далі 1111111
йде нерозбірливий nilad, тому попереднє значення повернення ( [4] ) друкується в STDOUT, потім замінюється значенням nilad ( 1111111 ). K
потім перетворює це ціле число в [1111111] . (Це знову-таки не дуже потрібно, але внизування, за яким слідує діада, буде симпатичним для цього.)
Як і раніше, l11
обчислює журнал 11 1111111 ≈ 5,81 , потім &
повертає [5.81 & 111111] = [5 & 111111] = [5] .
,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ
Це єдина програма, яка складається з декількох визначених користувачем посилань. Останнє посилання є основним посиланням і виконується при запуску програми, решта - помічники. Швидкий Ç
завжди посилається на посилання вище поточного та виконує його монадно. Аналогічно, швидкий Ñ
завжди посилається на посилання нижче поточного (обгортання), а також виконує його монадно.
Верхня ланка складається з парного атома ,
- діади, яка перетворює аргументи х і у в [х, у] - і атома суми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 ланцюг ÇÑÇÇÇÑ
обчислює кінцевий результат (((((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 .