젤리 , 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 . 그렇게하므로 1을e
반환합니다 .
BI$⁼#
BI$
는 퀵 링크, 특히 이원자 원자 와 증분 원자를 퀵 $
그룹화 함으로써 형성된 모나 딕 사슬 이다 . 결합하여 정수를 밑이 2 인 자릿수의 배열로 변환 한 다음 결과 자릿수의 앞으로 차이를 계산합니다. 배열에 요소가 하나만 있으면 앞으로 차이가없고 빈 배열 (거짓)을 반환합니다. 두 자리 이상의 숫자 가 있으면 비어 있지 않은 배열 (truthy)을 반환합니다.B
I
I
I
quick #
은 이전 퀵 링크를 사용하고 일치하는 항목이 충분히 발견 될 때까지 0 , 1, 2,…에 적용합니다 . 필요한 금액은로 계산되어 ⁼
반환 값 / 인수 0 과 자체 를 비교 하여 1을 산출 합니다. 따라서 전체 프로그램은 [2]를 반환합니다 . 기본이 음수가 아닌 두 번째 정수는 밑이 2입니다.
⁾⁾⁾Ụ^/
⁾⁾⁾
문자열 리터럴, 특히 문자열 ⁾⁾ 입니다. 등급 업 원자는 Ụ
상응하는 값으로 그 인덱스를 정렬; 두 문자가 모두 같으므로 [1, 2]가 됩니다. 결과 배열은 비트 단위 XOR로 축소 ^/
되므로 전체 프로그램이 3을 반환합니다 .
ı***ıḞḞ
ı
인수와 반환 값을 허수 단위 i 로 초기화 합니다. *
는 IS 지수의 그 오른쪽 인자 메인 링크의 주장에 기본적으로 양자 관계는. 따라서 ***ı
계산해은 ((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
반환 한 인수의 모든 요소가 동일한 경우, 및 0 이 아니라면. 정수 인수 z 는 [z]로 승격 되므로 암시 적 인수 0에 대해 1 을 E
리턴합니다 .
이제 출력 아톰 Ȯ
은 1 을 STDOUT으로 인쇄합니다 . 그런 다음 less than atom을 사용하여 1 을 암시 적 인수 0 과 비교 합니다. 결과는 (1 <0) = 0 이며 프로그램이 끝나면 암시 적으로 인쇄됩니다.<
11 – 20
⁻GṘ
그리드 원자 G
인수에서 시각적으로 만족스러운 테이블을 만들려고합니다. 일반 정수 인수 (여기서는 0 )의 경우 단순히 배열로 래핑합니다. 평면 동일하지 원자 ⁻
내재적 인자 비교 0 (오른쪽 결과 [0] ) 산출 1 인자가 동일하지 않기 때문에. 표현 원자 Ṙ
인쇄 한 STDOUT에 그 결과를 리턴한다. 프로그램이 끝나면 최종 반환 값이 암시 적으로 인쇄되므로 결과는 11 입니다.
=`p`VV×`DQV
자체는 빠른 `
동일한 왼쪽과 오른쪽 인수를 호출하여 모나드로 다이 애드을집니다. 먼저 =`
암시 적 인수 0 을 자체와 비교 하여 1을 산출 합니다.
직교 제품 원자 p
인수로리스트를 예상하고, 그래서 정수 조장 한 범위로 [1, ..., 1] = [1] . [1] 과 그 자체 p`
의 데카르트 곱을 취하여 [[1, 1]]을 산출 합니다.
평가 원자는 V
다음 문자열로 (숫자와 문자를 포함한) 모든 평면 배열을 전환 무항 젤리 프로그램과 같은 결과 문자열을 평가합니다. [[1, 1]] 을 먼저 [“11”] 으로 바꾼 다음 V
현 을 회피하여 [11]을 산출 합니다. 한 번 더, V
이 배열을 "11" 로 바꾼 다음에 그것을 돌려 11 을 산출 합니다.
이제 11에 11 을 ×`
곱하면 121이 됩니다. 소수점 원자 변 (121) 에 [1, 2, 1] 의 고유 원자 제 파기 (1) 와 다시 한번, 그들을 연접 복귀 결과 정수로의 디지트들의리스트를 온 (12) .Q
V
~A~A~A~A~A~A~A~A~A~A~A~A~A
~
는 IS 비트 NOT 원자이다. 2의 보수 산술을 사용하면 인수 z 를 ~ z =-(z + 1)에 매핑합니다 . A
는 절대 값 원자이므로 -(z + 1) = z + 1을 매핑 합니다. 초기 반환 값 0 의 열세 사본 ~A
창 (13) .
⁷ṾṾṾw
상수 ⁷
는 개행 문자 '\ n'을 보유하고 인수 및 리턴 값을 초기화합니다.
uneval 원자는 Ṿ
그 인수의 스트링 표현 만들려고 Z 코드 이루어지는 젤리 프로그램 반환되도록 Z를 .
첫 번째 호출은 문자열 ""\ n "을 문자 그대로 리턴합니다 . 다음 호출은 한 쌍의 문자 리터럴 인 "" ","\ n "을 반환합니다 . 세 번째이자 마지막 호출 은 문자 리터럴의 quintuplet 인 "" "," ",",, "", "\ n"을 반환합니다 .
마지막으로, 윈도우 인덱스 원자는 w
오른쪽 인수 추진 '\ n을' 문자열을 'N \ " 로 시작하고 문자열의 첫 번째 인덱스 찾아 "\ n을 "을 . 14를 반환합니다 .
⁴ḟ€⁴Ṁ
⁴
상수 16 입니다. 퀵 링크 filterfalse 각각은 ( ḟ€
) 왼쪽 인수 16 을 [1,…, 16] 범위로 승격 한 다음 해당 요소를 반복합니다.
각 요소를 들어 Z , ḟ⁴
제 촉진 실행 Z를 으로 [Z] 다음의 발생 (존재하는 경우)을 모두 제거한다 (16) . 그러면 배열 [[1], [2],…, [14], [15], []]가 생성됩니다 . 여기서 마지막 배열은 16 이 포함되어 있으므로 비어 있습니다.
마지막으로 최대 원자 Ṁ
는 [15]를 선택합니다 .
mmmmċ
모듈 원자 m
- 인자로 호출 X (어레이) 및 Y (정수)마다 보통 얻어 | Y가 | x의 th 요소 . 첫 번째 y y> 0 으로 시작하고 마지막 if y <0으로 시작 합니다. 그러나 y = 0 이면 x 와 반대 방향으로 연결된 값을 반환합니다 .
왼쪽 정수 인수 0 은 먼저 [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] .
마지막으로 count atom ċ
은 암시 적 인수 0 이 결과 배열에 나타나는 횟수를 계산하여 16을 반환 합니다.
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
ṭ
는 IS 택 원자와 오른쪽 하나는 왼쪽 인자를 추가합니다. 때문에 ṭ
다음과 같은 ḍ
이항하고, 모든 호출을 ṭ
암시 인수 패스 0 에 대한 권리 인수로 ṭ
. 첫 번째 호출은 [0, 0] , 두 번째 [0, [0, 0] , 여덟 번째 및 마지막 [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .
ḍ
는 IS 가분성의 원자; 인수에 대해 X 및 Y , 그것을 반환 1 이고 , X는 로 나누어 Y , 0 이 아니라면. Ḅ
는 정수에 대한 no-op이므로 구성된 배열의 각 정수로 나눌 수 있는지 0 을 ḍḄ
테스트 합니다. 0 은 그 자체로 나눌 수 있으므로 [1, [1, [1, [1, [1, [1, [1, [1, 1] 1]]]]]]]]]을 얻습니다 .
이제 이항 원자 Ḅ
는 평평한 배열에서 작동합니다. [a, b] 쌍의 경우 단순히 2a + b 를 반환합니다 . 앞에서 언급했듯이 Ḅ
정수에 대한 no-op입니다. 정수 인수 c 는 [c]로 승격되고 , 어떤 기준 에서 [c] 는 단순히 c 입니다.
첫 번째 호출 Ḅ
은 [1, 1] 을 3 으로 줄여서 [1, [1, [1, [1, [1, [1, [1, 3]]]]]] 을 산출 합니다. 다음 호출은 9 번 이 17을 반환 할 때까지 [1, 3] 에서 5로 , 다음으로 [1, 5] 에서 7로 줄 입니다.Ḅ
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
Ṇ
는 IS 평면 논리 NOT 원자 암시 인수를 매핑 0 에 1 . +
는 더하기 아톰이므로 18 개의 각 복사본이 +Ṇ
이전 반환 값 (처음 0 ) 씩 증가합니다 . 전체 프로그램은 따라서 18 을 반환합니다 .
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
C
는 보완 원자이며 인수 z 를 1-z에 매핑합니다 . N
는 부정 원자이며 인수 z 를 -z에 매핑합니다 . 함께 z 를 -(1-z) = z-1로CN
매핑 하므로 18 개의 복사본이 암시 적 인수 0 을 -18 로 바꿉니다 . 수율 의 최종 적용 .C
1 - (-18) = 19
ĖḌĖḌ
열거 된 원자 Ė
인덱스 - 값 쌍을 생성하는 배열의 항목을 열거한다. 암시 적 인수 0 으로 촉진된다 [0] 다음, Ė
수득 [1,0] . undecimal 원자 수득베이스 (10)로부터 평면 어레이 정수로 변환 [10] 이 특정한 경우.
두 번째 통화 Ė
변환 [10] 으로는 [1, 10] , 두 번째는 Ḍ
최종적으로 변형 [20] .
21 – 30
ṫṣȦJṫȦ⁸ȦJ
꼬리 원자 ṫ
(a 다이 애드)에서 시작 인덱스는 왼쪽 인자의 포스트 픽스를 선택 좌측 정수 인수 촉진 오른쪽 인수에 지정 (1 기반 모듈러) X 에 [X]가 . 로 설정 두 인수로 호출하면 0 , ṫ
반환 [0] .
있는 모든 원자는 Ȧ
반환 1 인자가 truthy이며, 어떤 깊이에서 더 제로 포함되지 않는 경우는 0 , 그렇지 않으면. 여기서는 단순히 암시 적 인수 0 을 반환하는 ID 함수로 사용합니다 . atom 에서 의 split은 오른쪽 인수 0이 발생할 ṣ
때 왼쪽 인수 [0] 을 분할 하므로 여기에서 [[], []]를 리턴 합니다.
인덱스의 원자는 J
반환 값의 요소를 버리고 범위 산출의 인덱스로 대체 [2, 1] 이 특정한 경우. Ȧ
및 ṫ
모두는 이전 작업 때문에 감소 [1,2] 수득 마지막 인덱스에서 시작 접미사로 [2] .
닐라 딕 링크에서 상수 ⁸
는 []를 유지 합니다. 이것은 분석 할 수없는 nilad입니다. 즉, 어떤 식 으로든 체인에 맞지 않습니다. 결과적으로 이전 리턴 값 ( [2] )이 STDOUT에 인쇄 된 후 nilad의 값 ( [] )으로 대체됩니다 .
[] 가 거짓 이므로 0으로Ȧ
변환합니다 . 원자 촉진 0 에 [0] , 다음의 인덱스 (목록 반환 [1] 프로그램이 완료 될 때 내재적으로 인쇄된다).J
22
또 다른 리터럴. Repdigits는 사용하기 가장 좋은 장소 인 것 같습니다.
“@ṃ»
이것은 Jelly의 내장 문자열 압축을 사용합니다. Jelly의 코드 페이지에서 @ 및 ṃ 의 색인 은 64 와 220 이며 문자열 리터럴은 250 개의 다른 문자를 포함 할 수 있으므로 먼저 250 × 65 + 220 = 16470 의 정수를 계산합니다 .
16470 은 3으로 나눌 수 있으므로 몫 16470/3 = 5490 은 인쇄 가능한 ASCII 문자 또는 줄 바꿈을 인코딩합니다. 이들 중 96있다 = 96 × 57 + 18 5490 우리는 0 기반 인덱스에있는 인쇄 가능한 ASCII 문자를 해독 한 것을 의미하는 18 인, '2' .
우리는 남아있는 57 도로 나누어되는, 3 , 그래서 몫 3분의 57 = 19 = 96 × 0 + 19 0 기반 인덱스 인쇄 가능한 ASCII 문자 인코딩 (18) 이며, '3' .
이것은 0을 남긴다 ; 디코딩 프로세스가 중지됩니다. 생성 된 문자는 "23" 을 형성하기 위해 연결됩니다
!ḤḤ!
계승 원자 !
내재적 인자 온 0 으로 1 . 의 두 호출 unhalve 원자 Ḥ
회전 1 로 2 후 2 로 4 . 마지막으로 4를!
계산합니다 ! = 24 .
³HH
명령 행 인수가 없으면 상수 ³
는 100을 보유 합니다. H
턴을 두 번 호출하면 100 은 50으로 , 50 은 25 로 바뀝니다 .
ØaM
상수 Øa
는 소문자 알파벳을 보유합니다. 최대 원자는 M
최대의 모든 항목 인덱스를 산출하고, 이후 , Z가 가장 소문자 인 결과이다 [26] .
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
연결 원자 의 26 개 사본은 ;
초기 반환 값 0 과 기본 인수 0 의 26 개 인스턴스를 연결하여 27 개의 0으로 구성된 배열을 만듭니다.
¬
는 IS 논리 NOT 원자 그래서 ;¬
추가 1 제로의 배열. 다음 ¬
은 배열의 모든 요소를 무효화하여 27 개의 요소와 1의 배열을 남겨 둡니다.
ḅ
는 IS unbase 원자 및 정수형 오른쪽 인수로 지정된베이스로부터 왼쪽 인자의 숫자 어레이를 변환한다. ḅ¬
단항에서 정수로 변환하므로 간단히 합계를 수행합니다. 27 사람의 배열의 경우,이 반환 27 .
irið8c
atom 의 인덱스는i
왼쪽 인수 0 을 [0]으로 승격 한 다음 해당 배열에서 오른쪽 인수 0 의 인덱스를 찾아 1을 산출 합니다.
범위 원자 r
그것으로부터 오름차순 또는 내림차순 범위 오른쪽 하나 인수 남은 구성한다. 올바른 인수는 암시 적 인수 0 이므로 [1, 0]이 됩니다. 두 번째 호출은 [1, 0] 에서 i
인덱스 0 을 찾아 2를 산출 합니다.
ð
새로운 dyadic 체인을 시작합니다. 앞의 체인은 닐라 스틱이므로이 체인의 왼쪽과 오른쪽 인수는 첫 번째 체인의 반환 값 ( 2 )과 같습니다. c
의 조합의 원자이다. 왼쪽 인수 8 및 오른쪽 인수 2 를 사용하면 8 요소 세트의 고유하고 정렬되지 않은 2 조합을 모두 계산하여 8C2 = 8! / (6! 2!) = 28을 반환 합니다.
⁶ḲĠṂ°İṂĊ
상수 ⁶
는 공백 문자를 보유하고 인수 및 리턴 값을 ''로 설정 합니다. atom 이라는 단어Ḳ
는 문자 '' 를 단일 문자열 "" 로 승격하고 공백으로 분할하여 [[], []]를 생성 합니다.
기는 원자 Ġ
그룹 동등한 모든 요소 인덱스. 마지막 반환 값의 두 요소가 같으므로 여기서 [[1, 2]]를 반환 합니다. 최소 원자 배열이 최소한 (유일한) 요소 추출 얻었다 [1, 2] .
도 원자 °
수득 라디안 60 진수도에서 모두 정수 변환 1 ° × 2π / 360 = π / 180 과 ° × 2π / 360 = π / 90 2 . 역 원자 수득 곱셈 역수를 취 180 / π ≈ 57.3 및 90 / π ≈ 28.6 .
그런 다음 Ṃ
다시 한 번 더 최소값을 취하여 28.6을 생성 합니다. 마지막으로, ceil atom Ċ
은 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] .
팝 아톰 의 4 개 사본은 Ṗ
마지막 4 개의 요소를 제거하여 [6, 5]로 남겨 둡니다 . 마지막으로 곱 원자 P
는이 배열을 30 으로 변환합니다 .
31 – 40
ȷ½RṪ
ȷ
1 × 10 3 = 1000 의 줄임말입니다 . 제곱근 원자 ½
수득 31.6 1, 범위 원자 R
에 변환을 [1, ..., 31] . 마지막으로 꼬리 원자가 Ṫ
마지막 요소를 추출하여 31을 반환 합니다.
LµdddddµFL
길이 원자 L
내재적 인자 촉진 0 에 [0]을 수득 한 후 길이를 얻어 1 . µ
새로운 모나 딕 체인을 시작하고 결과 1 이 인수가됩니다.
인수를 들어 , X 및 Y 는 divmod의 원자 d
수율 [X / Y %의 Y를 X] . 각 호출은 y = 1 이므로 결과는 항상 [x, 0] 입니다.
첫 번째 호출은 x = 1로 시작 하여 [1, 0]을 생성 합니다. d
정수에서만 작동하므로 후속 호출에서 벡터화됩니다. 두 번째 호출은 [[1, 0], [0, 0]] , 세 번째 [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , 그리고 다섯 번째와 마지막 하나는 단일 0과 31 개의 0을 포함하는 깊이 5의 배열입니다.
µ
한 번 더 새로운 모나 딕 체인을 시작하고 이전의 배열이 인수가됩니다. 평면 원자 F
단일 한 31 제로의 평면 배열을 산출이 배열 unnests. 마지막으로 L
결과의 길이를 취하여 32를 반환 합니다.
33
다른 대표, 또 다른 리터럴.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
랩 원자 의 각 인스턴스는 인수 z 를 [z] 로 변환합니다 . 초기 반환 값 0 , 34 개 인스턴스 함께 수득 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . 마지막으로 깊이 원자 ŒḊ
는 결과 배열의 최대 깊이를 계산하여 34를 반환 합니다.
ẇɓæ«æ«æ«æ«æ«|æ«|
창이 존재 원자 ẇ
인수 (모두 기본적으로 모두 촉진 0 까지)을 [0] ** [0] **의 연속 서브 어레이 인 경우는 다음 시험 [0] . 그렇게하므로 1을ẇ
반환합니다 .
ɓ
새로운 dyadic 체인을 시작합니다. 앞의 체인은 닐라 스틱이므로이 체인의 왼쪽 및 오른쪽 인수는 첫 번째 체인의 반환 값 ( 1 )과 같습니다. 체인은 비트 시프트 왼쪽 ( æ«
)과 비트 OR ( |
) 의 두 개의 서로 다른 이원자 원자를 사용 합니다.
3 개 이상의 다이어 드로 시작하는 이차원 체인은 처음에 체인의 인수로 첫 번째 다이어 드를 호출합니다. 여기에 1 << 1 = 2가 부여 됩니다. 6 개의 후속 다이어 드는 쌍으로 그룹화되며 (소위 포크 ), 가장 오른쪽 다이어 드는 체인의 인수로 먼저 호출되고, 가장 왼쪽 다이어 드는 이전 리턴 값으로 양쪽에서 호출됩니다.
들면 æ«æ«
, 우리가 얻을 2 << (1 << 1) (2) << 2 = 8 = . 그리고, æ«æ«
계산 8 << (1 << 1) << 2 = 8 = 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 은 해석 할 수없는 nilad입니다. 즉, 어떤 식 으로든 체인에 맞지 않습니다. 결과적으로 이전 리턴 값 ( 3 )이 STDOUT에 인쇄 된 다음 nilad의 값 ( 0 )으로 대체됩니다 .
다음 7 개 사본은 ‘
이 0 을 7 로 바꾸고 프로그램이 완료되면 암시 적으로 인쇄됩니다.
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
감량 원자 ’
하여 인자를 감소 하나 , 그렇게 서른여덟 복사 초기 반환 값을 설정 0 으로 -38 . 차분 절대 원자 ạ
사이의 차이 계산 부호 -38 및 암시 적 인수 0 , 반환 38 .
-____---__________
-
-1 의 줄임말이며 링크의 인수와 반환 값을 -1로 설정 합니다. 각각 _
은 2 차원 빼기 원자 의 인스턴스이며, 오른쪽 인수가 없는 경우 기본값은 -1 입니다.
우선, -____-
계산 (-1) - - (-1) - (-1) - (-1) = 3 (-1) . 다음 -1 은 구문 분석 할 수없는 nilad이므로 이전 리턴 값 ( 3 )이 STDOUT에 인쇄 된 다음 nilad의 값 ( -1 )으로 대체됩니다 .
다음으로 (-1)-(-1) = 0을-_
계산합니다 . 여기서 리터럴 은의 왼쪽 인수를 설정 하고 반환 값을 오른쪽으로 사용합니다. 다음 9 개의 복사본은 반환 값에서 기본 인수 -1 을 빼고 9를 산출 하며, 프로그램이 끝나면 암시 적으로 인쇄됩니다.-
_
_
”(O
”(
문자 리터럴이고 서수 원자 O
는 유니 코드 코드 포인트를 조회하여 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]을 생성 합니다. 2 차원 헤드 아톰은 이제 결과에서 왼쪽 으로 길이 0 과 1 의 접두사를 가져 와서 [[], [1]]로 남겨 둡니다 . 인쇄시 1 만 표시됩니다.
⁽{ʂ%⁽{}
⁽
다음 두 문자는 숫자 리터럴을 구성합니다. 경우 J 와 K는 젤리의 코드 페이지와 자신의 코드 포인트입니다 (J, K) <(124, 250) , 우리는 정수를 얻을 1,001 + 부 (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을Ạ
반환 합니다.
원자가 있는 zipż
(다이어 드)은 인수 x 와 y를 취하고 [x, y] 쌍을 바꿉니다 . 정수 x 와 y의 경우 , 이것은 단순히 [[x, y]] 를 생성하므로 ż
인수 1 과 0 (암시 적 인수) 과 함께 호출 된 이 특정 은 [[1, 0]]을 반환합니다 . 2 진 eval atom v
은 왼쪽 인수의 모든 평면 배열 (숫자 및 문자 만 포함)을 문자열로 바꾸고 결과 문자열을 오른쪽 인수를 프로그램의 인수로하여 모나드 젤리 프로그램으로 평가합니다. [ "10"] 이후리터럴로만 구성된 경우, 이는 [10] 의 올바른 인수를 무시하고 v
결과를 가져 옵니다 .
사본은 빠른 ©
에 부착 v
레지스터에 그 결과를 복사합니다. 나중에 리콜 아톰 ®
(nilad)이 발생 하면 레지스터에서 [10] 을 가져옵니다 .
żv
이전과 같이 다음 세 개의 작업 사본이 [10] - [[10, 0] - [100] -…- [10000]으로 맵핑 됩니다. 순서 원자 ọ
의 왼쪽 인자 그래서 여기 오른쪽 하나 나누어 시험 횟수는 그것의 계산 순서 (10) (과 인출 ®
에) 10000 = 10 (4)를 산출한다 [4] .
다음 ®
은 구문 분석 할 수없는 nilad이므로 이전 반환 값 ( [4] )이 STDOUT에 인쇄 된 다음 nilad의 값 ( 10 )으로 바뀝니다 . Ạ
다음에 적용 하여 1을 산출 합니다. (이 시점에서 닐 라드 다음에 다이어 드가 파싱 될 수 있기 때문에 필요합니다.)
이전과 같이 żvżvżv
현재 반환 값에 3 개의 0을 추가하여 1 을 [1000] 으로 바꿉니다 . 마지막 ọ®
의 순서로 계산한다 (10) 에 1,000 = 10 (3) , 및 도 3은 프로그램이 완료 될 때 STDOUT에 출력된다.
44
또 다른 대표, 또 다른 리터럴.
111111l11&K1111111Kl11&
가장 먼저 리터럴 111111
은 인수 및 초기 리턴 값을 111111로 설정 합니다. 다른 행은 1
리터럴입니다.
l
는 IS 대수 올바른 지정된베이스의 왼쪽 인자의 로그를 계산 원자. 올바른 인수 11을 사용 하여 111111 에서 호출 하면 log 11 111111 ≈ 4.85가 표시 됩니다.
atom 이라는 단어K
는 숫자 / 문자 z 를 [z]로 승격 한 후 공백에서 목록 인수를 결합합니다 . 여기서는 단순히 링크의 인수 111111 을 [111111] 로 바꾸는 데 사용합니다 . (여기서는 배열이 필요하지 않지만 동일 원자가 부족합니다.) 비트 AND 원자 &
는 반환 값을 양쪽으로 가져오고 필요한 경우 정수로 변환하고 비트 AND를 계산합니다. 이 특정 경우에는 [4.85 & 111111] = [4 & 111111] = [4]를 반환합니다 .
다음 1111111
은 구문 분석 할 수없는 nilad이므로 이전 반환 값 ( [4] )이 STDOUT에 인쇄 된 다음 nilad의 값 ( 1111111 )으로 바뀝니다 . K
그런 다음이 정수를 [1111111] 로 바꿉니다 . (이것은 다시 한 번 요구되지는 않지만,이 시점에서 닐 라드 다음에 다이어 드를 파싱 할 수 있습니다.)
이전과 같이 로그 11 1111111 ≈ 5.81을l11
계산 한 다음 [5.81 & 111111] = [5 & 111111] = [5] 를 반환합니다 .&
,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ
여러 사용자 정의 링크로 구성된 유일한 프로그램입니다. 마지막 링크는 기본 링크이며 프로그램이 시작될 때 실행되며 나머지 링크는 도우미 링크입니다. quick은 Ç
항상 현재 링크 위의 링크를 참조하고이를 모나드 방식으로 실행합니다. 마찬가지로, quick은 Ñ
항상 현재 링크 아래 의 링크 (래핑)를 나타내며 모나 디식으로 실행합니다.
상단 링크는 페어 원자 ( ,
인수 x 와 y 를 [x, y] 로 바꾸는 다이아 드) 와 합계 아톰 ( S
정수 인수 z 를 [z] 로 승격시키고 배열 인수를 더하는 모나드)로 구성 됩니다. 링크가되면 ,SS
정수 인자로 호출 N , 그것은 계산 Σ [N, Σn = Σ [N, N] = 2N를 .
중간 링크는 위의 원자, 위에서 언급 한 quick Ç
및 무의미한 원자로 구성 됩니다. -1 ≤ z ≤ 1 인 숫자 인수 z의 경우 1 을 Ị
생성 하지만 다른 모든 경우 0 입니다. 정수 인수 n에 두 번 적용하면 첫 번째 ( 두 번째 입력) 의 출력 이 항상 중요하지 않으므로 본질적으로 1로 대체합니다 . 그런 다음이 결과는 인수 n으로 호출 된 반환 값과 쌍을 이루고 결과 쌍은로 줄어 듭니다 . 전체적으로 우리는 계산Ị
Ị
Ç
S
Σ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 입니다.
이 두 헬퍼 링크가 있으면 기본 링크는 이제 2 진 숫자를보고 음수가 아닌 정수를 구성 할 수 있습니다. 초기 반환 값이 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 인 경우 , 15 번의 호출은 Æn
15 번째 소수 ( 47) 를 계산합니다 .