Jelly , 47 số nguyên, 519 byte
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
Mỗi dòng là một chương trình riêng biệt, đầy đủ.
Hãy thử trực tuyến! (bao gồm bộ kiểm tra và kiểm tra giao lộ)
Làm thế nào nó hoạt động
Mỗi chương trình đầy đủ không có đối số dòng lệnh sẽ thực thi liên kết chính của nó (được xác định trên dòng cuối cùng), tức là không có đầu vào. Nếu liên kết đầu tiên trong chuỗi là một nilad, nó sẽ được sử dụng, được gọi và cả giá trị trả về và giá trị trả về của liên kết chính được đặt thành kết quả; nếu liên kết đầu tiên trong chuỗi là một đơn nguyên hoặc một dyad, nó không được sử dụng và đối số ngầm định và giá trị trả về 0 được sử dụng thay thế. Trong cả hai trường hợp, phần còn lại của chuỗi được thực hiện một cách đơn điệu.
Jelly mangles sản lượng của nó trong một số trường hợp. Đáng chú ý, một mảng singleton được in mà không có dấu ngoặc xung quanh, vì vậy 42 và [42] và không thể phân biệt sau khi in. Chúng tôi sẽ sử dụng điều này trong nhiều dịp.
1 - 10
e
Nguyên tử tồn tại kiểm tra nếu giá trị trả về 0 thuộc về đối số 0 . Nó làm, vì vậy e
trả về 1 .
BI$⁼#
BI$
là một liên kết nhanh, cụ thể là một chuỗi đơn nguyên được hình thành bằng cách $
nhóm nhanh nguyên tử nhị phânB
và nguyên tử gia tăngI
. Kết hợp lại, họ chuyển đổi một số nguyên thành mảng các chữ số của nó trong cơ sở 2, sau đó tính toán sự khác biệt về phía trước của các chữ số kết quả. Nếu mảng chỉ có một phần tử, không có sự khác biệt về phía trước và I
trả về một mảng trống (giả); nếu có ít nhất hai chữ số, I
trả về một mảng không trống (trung thực).
Nhanh chóng #
tiêu thụ liên kết nhanh trước đó và áp dụng nó cho 0 , 1, 2, Thẻ cho đến khi tìm thấy đủ các kết quả trùng khớp trả về mảng khớp. Số lượng cần thiết được tính theo ⁼
, so sánh giá trị trả về / đối số 0 với chính nó, mang lại 1 . Do đó, toàn bộ chương trình trả về [2] , số nguyên không âm đầu tiên có hai chữ số trong cơ sở 2.
⁾⁾⁾Ụ^/
⁾⁾⁾
là một chuỗi ký tự, cụ thể là chuỗi ⁾⁾ . Nguyên tử lên lớpỤ
sắp xếp các chỉ số của nó theo các giá trị tương ứng của chúng; vì cả hai ký tự đều bằng nhau, điều này mang lại [1, 2] . Mảng kết quả được giảm với XOR bitwise ^/
, vì vậy toàn bộ chương trình trả về 3 .
ı***ıḞḞ
ı
khởi tạo đối số và trả về giá trị cho đơn vị tưởng tượng i . *
là dyad lũy thừa , có đối số đúng mặc định cho đối số của liên kết chính. Do đó, ***ı
tính toán ((i i ) i ) i ≈ 4,81 + 0i , Ḟ
nguyên tử ( sàn cho các đối số thực , phần thực cho các số phức) tính phần thực ( 4,81 ), sau đó là các Ḟ
tầng, cho năng suất 4 .
5
6
7
Ba chương trình này bao gồm một nghĩa đen duy nhất và làm chính xác những gì bạn mong đợi.
.::::
Nghĩa đen .
là một tốc ký cho 0,5 và khởi tạo đối số và giá trị trả về. Đối số đúng của số nguyên dyad ( :
) mặc định cho đối số liên kết chính, do đó, ::::
tính 0,5 / 0,5 / 0,5 / 0,5 / 0,5 , mang lại 8 .
9
Một nghĩa đen khác.
EȮ<
Tất cả các nguyên tử bằng nhauE
trả về 1 nếu tất cả các phần tử trong đối số của nó bằng nhau và 0 nếu không. Một đối số nguyên z được thăng cấp thành [z] , do đó E
sẽ trả về 1 cho đối số ngầm 0 .
Bây giờ, nguyên tử đầu raȮ
in 1 đến STDOUT. Sau đó, chúng ta so sánh 1 với đối số ngầm 0 bằng cách sử dụng ít hơn nguyên tử <
. Kết quả là (1 <0) = 0 và nó được in ngầm khi chương trình kết thúc.
11 - 20
⁻GṘ
Nguyên tử lướiG
cố gắng tạo một bảng dễ chịu trực quan từ đối số của nó. Đối với một đối số nguyên đơn giản (ở đây: 0 ), nó chỉ đơn giản là bọc nó trong một mảng. Nguyên tử không bằng phẳng⁻
so sánh đối số ngầm 0 với kết quả ở bên phải ( [0] ), mang lại 1 vì các đối số của nó không bằng nhau. Nguyên tử đại diệnṘ
in 1 đến STDOUT và trả về kết quả của nó. Vào cuối chương trình, giá trị trả về cuối cùng được in ngầm, vì vậy chúng tôi kết thúc với đầu ra là 11 .
=`p`VV×`DQV
Bản thân nhanh chóng `
biến một con đê thành một đơn nguyên bằng cách gọi nó với các đối số trái và phải giống hệt nhau. Đầu tiên, =`
so sánh đối số ngầm 0 với chính nó, mang lại 1 .
Nguyên tử sản phẩm của Cartesianp
mong muốn các danh sách là đối số của nó, vì vậy nó thúc đẩy số nguyên 1 vào phạm vi [1, Vượt, 1] = [1] . p`
lấy sản phẩm của Cartesian [1] và chính nó, mang lại [[1, 1]] .
Nguyên tử evalV
biến tất cả các mảng phẳng (chỉ chứa số và ký tự) thành các chuỗi, sau đó đánh giá các chuỗi kết quả là các chương trình Jelly niladic. [[1, 1]] lần đầu tiên được chuyển thành [R11 11] , sau đó V
tránh chuỗi, mang lại [11] . Một lần nữa, V
biến mảng này thành "11" , sau đó đánh dấu nó để mang lại 11 .
Bây giờ, ×`
nhân 11 với chính nó, mang lại 121 . Nguyên tử thập phân biến 121 thành [1, 2, 1] , nguyên tử duy nhấtQ
loại bỏ số 1 thứ hai và V
một lần nữa biến danh sách các chữ số thành số nguyên kết quả từ việc ghép chúng, trả về 12 .
~A~A~A~A~A~A~A~A~A~A~A~A~A
~
là nguyên tử bitwise KHÔNG . Với số học bổ sung của hai, nó ánh xạ một đối số z thành ~ z = - (z + 1) . A
là nguyên tử giá trị tuyệt đối , do đó, nó ánh xạ - (z + 1) = z + 1 . Với giá trị trả về ban đầu 0 , mười ba bản sao của ~A
lợi nhuận 13 .
⁷ṾṾṾw
Hằng số ⁷
giữ ký tự dòng mới '\ n' và khởi tạo đối số và giá trị trả về.
Các uneval nguyên tử Ṿ
cố gắng để tạo ra một chuỗi đại diện của đối số của nó z như vậy mà một chương trình Jelly bao gồm mã này sẽ quay trở lại z .
Cuộc gọi đầu tiên trả về chuỗi " Nghi \ n" , đó là một ký tự. Cuộc gọi tiếp theo trả về " Liêu, hôn \ n" - một cặp ký tự. Cuộc gọi thứ ba và cuộc gọi cuối cùng trả về "phạm vi, phạm lỗi, phạm lỗi, phạm lỗi, phạm lỗi, phạm lỗi, phạm lỗi" - một nhóm các nhân vật.
Cuối cùng, nguyên tử chỉ mục cửa sổw
thúc đẩy đối số đúng của nó '\ n' cho chuỗi "\ n" và tìm chỉ mục đầu tiên của chuỗi con bắt đầu bằng "\ n" . Điều này trả về 14 .
⁴ḟ€⁴Ṁ
⁴
là hằng số 16 . Bộ lọc liên kết nhanh quickfalse mỗi ( ḟ€
) thúc đẩy đối số bên trái của nó 16 đến phạm vi [1, Rò , 16] , sau đó lặp lại các phần tử của nó.
Đối với mỗi phần tử z , ḟ⁴
được thực thi, trước tiên, quảng bá z thành [z] , sau đó loại bỏ tất cả (nếu có) các lần xuất hiện của 16 . Điều này mang lại mảng [[1], [2], Mạnh, [14], [15], []] , trong đó mảng cuối cùng trống vì nó chứa 16 .
Cuối cùng, nguyên tử tối đaṀ
chọn [15] .
mmmmċ
Nguyên tử mô-đunm
- được gọi với các đối số x (mảng) và y (số nguyên) thường lấy mọi | y | phần tử thứ của x , bắt đầu bằng phần đầu tiên nếu y> 0 , phần tử cuối cùng nếu y <0 . Tuy nhiên, khi y = 0 , nó trả về x được nối với ngược lại.
Đối số nguyên trái 0 trước tiên được thăng cấp thành [0] . Bản sao đầu tiên của m
concatenate [0] với chính nó, mang lại [0, 0] . Các bản sao còn lại biến kết quả này thành [0, 0, 0, 0] , sau đó [0, 0, 0, 0, 0, 0, 0, 0] , và cuối cùng [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .
Cuối cùng, các số nguyên tử ċ
đếm số lần tranh luận ngầm 0 xuất hiện trong mảng kết quả, trở về 16 .
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
ṭ
là nguyên tử tack và nối đối số bên trái của nó với bên phải của nó. Vì ṭ
và sau đây ḍ
là dyadic, tất cả các lệnh gọi để ṭ
vượt qua đối số ngầm 0 là đối số đúng ṭ
. Cuộc gọi đầu tiên trả về [0, 0] , lần thứ hai [0, [0, 0] và lần thứ tám và cuối cùng [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .
ḍ
là nguyên tử chia hết ; đối với x và y , nó trả về 1 là x chia hết cho y , 0 nếu không. Ḅ
là không có số nguyên cho các số nguyên, do đó ḍḄ
kiểm tra 0 về tính chia hết cho từng số nguyên trong mảng được xây dựng. 0 là chia hết cho chính nó, vì vậy chúng tôi nhận được [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]] .
Bây giờ, unbinary nguyên tử Ḅ
hoạt động trên các mảng phẳng. Đối với một cặp [a, b] , nó chỉ trả về 2a + b . Như đã đề cập trước đó, Ḅ
là một no-op cho các số nguyên: một đối số nguyên c được thăng cấp thành [c] và [c] trong bất kỳ cơ sở nào chỉ đơn giản là c .
Cuộc gọi đầu tiên để Ḅ
giảm [1, 1] xuống 3 , do đó mang lại [1, [1, [1, [1, [1, [1, [1, 3]]]]]]] . Cuộc gọi tiếp theo giảm [1, 3] xuống còn 5 , cuộc gọi tiếp theo [1, 5] xuống còn 7 , và cứ thế cho đến khi số chín Ḅ
trả về 17 .
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
Ṇ
là nguyên tử KHÔNG logic logic và ánh xạ đối số ngầm 0 thành 1 . +
là nguyên tử bổ sung, do đó, mỗi trong số mười tám bản sao của +Ṇ
giá trị trả về trước đó (ban đầu là 0 ). Toàn bộ chương trình trả về 18 .
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
C
là nguyên tử bổ sung và ánh xạ đối số z thành 1-z . N
là nguyên tử phủ định và ánh xạ đối số z thành -z . Cùng nhau, CN
ánh xạ z đến - (1-z) = z-1 , do đó mười tám bản sao biến đối số ngầm 0 thành -18 . Một ứng dụng cuối cùng của C
sản lượng 1 - (-18) = 19
.
ĖḌĖḌ
Các enumerate nguyên tử Ė
liệt kê các mục trong một mảng, tạo cặp chỉ số giá trị. Đối số ngầm 0 được thăng cấp thành [0] , sau đó Ė
mang lại [[1, 0]] . Nguyên tử không tối ưu chuyển đổi một mảng phẳng từ cơ sở 10 thành số nguyên, mang lại [10] trong trường hợp cụ thể này.
Cuộc gọi thứ hai để Ė
biến đổi [10] thành [[1, 10]] , cuộc gọi thứ hai Ḍ
cuối cùng biến thành [20] .
21 - 30
ṫṣȦJṫȦ⁸ȦJ
Nguyên tử đuôiṫ
(dyad) chọn hậu tố của đối số bên trái bắt đầu từ chỉ mục (dựa trên 1 và mô-đun) được chỉ định trong đối số bên phải của nó, thúc đẩy đối số nguyên trái x thành [x] . Khi được gọi với cả hai đối số được đặt thành 0 , ṫ
trả về [0] .
Các bất kỳ và tất cả các nguyên tử Ȧ
trả về 1 nếu đối số của nó là truthy và không chứa zero tại bất kỳ chiều sâu, 0 khác. Ở đây, chúng ta chỉ cần sử dụng nó như một hàm nhận dạng để trả về đối số ngầm 0 . Sự phân chia tại nguyên tử ṣ
phân vùng đối số bên trái của nó [0] tại các lần xuất hiện của đối số bên phải 0 , do đó, nó trả về [[], []] tại đây.
Các nguyên tử chỉ sốJ
loại bỏ các phần tử của giá trị trả về và thay thế chúng bằng các chỉ số của chúng, mang lại phạm vi [1, 2] trong trường hợp cụ thể này. Ȧ
và ṫ
cả hai đều hoạt động như trước, vì vậy chúng giảm [1, 2] về hậu tố bắt đầu ở chỉ mục cuối cùng, mang lại [2] .
Trong các liên kết niladic, hằng số ⁸
giữ [] . Đây là một nilad không thể nhìn thấy, tức là, nó không phù hợp với chuỗi theo bất kỳ cách nào. Do đó, giá trị trả về trước đó ( [2] ) được in thành STDOUT, sau đó được thay thế bằng giá trị của nilad ( [] ).
Vì [] là giả, Ȧ
biến nó thành 0 . Nguyên J
tử khuyến khích 0 đến [0] , sau đó trả về danh sách các chỉ số của nó ( [1] ), được in ngầm khi chương trình kết thúc.
22
Một nghĩa đen khác. Repdigits dường như là nơi tốt nhất để sử dụng chúng.
“@ṃ»
Điều này sử dụng nén chuỗi sẵn có của Jelly. Các chỉ số của @ và M trong trang mã Jelly của là 64 và 220 và xâu có thể chứa 250 nhân vật khác nhau, vì vậy đây đầu tiên tính toán số nguyên 250 × 65 + 220 = 16.470 .
16470 chia hết cho 3, vì vậy thương số 16470/3 = 5490 mã hóa ký tự ASCII có thể in hoặc nguồn cấp dữ liệu. Có 96 trong số này và 5490 = 96 × 57 + 18 , có nghĩa là chúng tôi đã giải mã các ký tự ASCII in tại 0 dựa trên chỉ số 18 , đó là '2' .
Chúng tôi còn lại với 57 , cũng chia hết cho 3 , vì vậy thương số 57/3 = 19 = 96 × 0 + 19 mã hóa ký tự ASCII có thể in ở chỉ số 18 dựa trên 0 , là '3' .
Điều này để lại 0 ; quá trình giải mã dừng lại. Các ký tự được tạo được ghép nối để tạo thành "23"
!ḤḤ!
Nguyên tử giai thừa!
biến đối số ngầm 0 thành 1 . Hai lời gọi của unhalve nguyên tử Ḥ
lần lượt 1 thành 2 , sau đó 2 thành 4 . Cuối cùng, !
tính 4! = 24 .
³HH
Trong trường hợp không có đối số dòng lệnh, hằng số ³
giữ 100 . Hai lần gọi 100H
biến thành 50 , rồi 50 thành 25 .
ØaM
Các hằng số Øa
giữ bảng chữ cái chữ thường. Nguyên tử tối đaM
mang lại tất cả các chỉ số của các mục tối đa và vì z là chữ cái viết thường lớn nhất, kết quả là [26] .
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
Hai mươi sáu bản sao của concatenate nguyên tử ;
nối giá trị trả về ban đầu 0 và hai mươi sáu trường hợp của đối số mặc định 0 , xây dựng một mảng của 27 zero.
¬
là nguyên tử KHÔNG logic , vì vậy ;¬
nối thêm 1 vào mảng số không. Phần tiếp theo ¬
phủ định tất cả các phần tử trong mảng, để lại cho chúng ta một mảng gồm 27 phần tử và 1 số không.
ḅ
là nguyên tử unbase và chuyển đổi một mảng chữ số từ đối số bên trái của nó từ cơ sở được chỉ định trong đối số bên phải thành số nguyên. ḅ¬
chuyển đổi từ unary sang số nguyên, vì vậy nó chỉ đơn giản thực hiện một tổng. Đối với một mảng gồm 27 cái, cái này trả về 27 .
irið8c
Các chỉ số của nguyên tử i
khuyến khích tranh luận trái của nó 0 đến [0] , sau đó tìm các chỉ số của các đối số quyền của mình 0 trong mảng đó, năng suất 1 .
Nguyên tử phạm vir
xây dựng một phạm vi tăng dần hoặc giảm dần từ đối số bên trái sang đối số bên phải của nó. Đối số đúng là đối số ngầm 0 , do đó, điều này mang lại [1, 0] . Lệnh thứ hai i
tìm thấy chỉ số 0 trong [1, 0] , mang lại 2 .
ð
bắt đầu một chuỗi mới, dyadic. Vì chuỗi trước là niladic, cả đối số trái và phải của chuỗi này sẽ bằng giá trị trả về của chuỗi đầu tiên ( 2 ). c
trong các nguyên tử kết hợp . Với đối số trái 8 và đối số phải 2 , nó đếm tất cả các kết hợp 2 duy nhất, không có thứ tự của một bộ 8 phần tử, trả về 8C2 = 8! / (6! 2!) = 28 .
⁶ḲĠṂ°İṂĊ
Hằng số ⁶
giữ một ký tự khoảng trắng và đặt đối số và trả về giá trị thành '' . Các từ nguyên tử Ḳ
quảng bá ký tự '' cho chuỗi singleton "" và phân tách nó tại các khoảng trắng, mang lại [[], []] .
Các nhóm nguyên tử Ġ
nhóm tất cả các chỉ số của các yếu tố bằng nhau. Vì cả hai yếu tố của giá trị trả về cuối cùng đều bằng nhau, nó trả về [[1, 2]] tại đây. Nguyên tử tối thiểu trích xuất một phần tử tối thiểu (duy nhất) của mảng này, mang lại [1, 2] .
Nguyên tử độ°
chuyển đổi cả hai số nguyên từ độ hấp dẫn sang radian, mang lại 1 ° × 2π / 360 ° = π / 180 và 2 ° × 2π / 360 ° = π / 90 . Nguyên tử nghịch đảo lấy các phép nghịch đảo nhân, cho năng suất 180 / π 57.3 và 90 / π 28.6 .
Sau đó, Ṃ
một lần nữa mất tối thiểu, mang lại 28,6 . Cuối cùng, nguyên tử trầnĊ
biến đổi 28,6 thành 29 .
œṡ¹ẆẆTUṖṖṖṖP
Nguyên tử nhận dạng¹
trả về 0 cho đối số ngầm 0 . Sự phân chia xung quanh nguyên tử œṡ
thúc đẩy cả hai đối số của nó (cả 0 ) thành [0] , sau đó phân tách [0] xung quanh các chuỗi con liền kề bằng [0] . Điều này mang lại [[], []] .
Nguyên tử cửa sổ trượtẆ
xây dựng tất cả các phân đoạn tiếp giáp của đối số của nó. Trường hợp thứ nhất biến đổi [[], []] thành [[[]], [[]], [[], []]] , phiên bản thứ hai biến đổi [[[]], [[]], [[] , []]] thành
[[[[]]], [[[]]], [[[], []]], [[[]], [[]]], [[[]], [ [], []]], [[[]], [[]], [[], []]]] .
Nguyên tử sự thậtT
liệt kê tất cả các chỉ số của các yếu tố trung thực. Không có mảng nào ở cấp độ đầu tiên là trống, do đó, điều này mang lại [1, 2, 3, 4, 5, 6] . Nguyên tử upendU
đảo ngược mảng này, mang lại [6, 5, 4, 3, 2, 1] .
Bốn bản sao của nguyên tử nhạc popṖ
loại bỏ bốn yếu tố cuối cùng, để lại cho chúng tôi [6, 5] . Cuối cùng, nguyên tử sản phẩmP
biến đổi mảng này thành 30 .
31 - 40
ȷ½RṪ
ȷ
là một tốc ký cho 1 × 10 3 = 1000 . Nguyên tử căn bậc hai½
mang lại 31,6 , mà nguyên tử phạm viR
biến đổi thành [1, Lôi, 31] . Cuối cùng, nguyên tử đuôiṪ
trích xuất phần tử cuối cùng, trả về 31 .
LµdddddµFL
Nguyên tử độ dàiL
thúc đẩy đối số ngầm 0 đến [0] , sau đó lấy độ dài để mang lại 1 . µ
bắt đầu một chuỗi mới, đơn âm và kết quả 1 trở thành đối số của nó.
Đối với các đối số x và y , nguyên tử divmodd
mang lại [x / y, x% y] . Mỗi cuộc gọi sẽ có y = 1 , vì vậy kết quả sẽ luôn là [x, 0] .
Cuộc gọi đầu tiên bắt đầu bằng x = 1 , mang lại [1, 0] . d
chỉ hoạt động trên các số nguyên, vì vậy nó vectơ trong các cuộc gọi tiếp theo. Cuộc gọi thứ hai mang lại [[1, 0], [0, 0]] , cuộc gọi thứ ba [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , và thứ năm và cuối cùng một mảng có độ sâu 5 chứa một số duy nhất và 31 số không.
µ
một lần nữa bắt đầu một chuỗi mới, đơn âm và mảng từ trước trở thành đối số của nó. Nguyên tử phẳng khôngF
chấp nhận mảng này, thu được một mảng phẳng gồm một và 31 số không. Cuối cùng, L
lấy độ dài của kết quả, trả về 32 .
33
Một repdigit, một nghĩa đen khác.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
Mỗi trường hợp của nguyên tử bọc biến đổi đối số z của nó thành [z] . Với giá trị trả về ban đầu là 0 , tất cả 34 trường hợp cùng nhau mang lại [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[] [ ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Cuối cùng, nguyên tử độ sâuŒḊ
tính toán độ sâu tối đa của mảng kết quả, trả về 34 .
ẇɓæ«æ«æ«æ«æ«|æ«|
Các cửa sổ tồn tại nguyên tử ẇ
thúc đẩy cả hai đối số của nó (cả mặc định để 0 ) để [0] , sau đó kiểm tra nếu ** [0] ** xảy ra như một mảng con giáp của [0] . Nó làm, vì vậy ẇ
trả về 1 .
ɓ
bắt đầu một chuỗi mới, dyadic. Vì chuỗi trước là niladic, cả đối số bên trái và bên phải của chuỗi này sẽ bằng giá trị trả về của chuỗi đầu tiên ( 1 ). Chuỗi sử dụng hai nguyên tử dyadic khác nhau: bitshift left ( æ«
) và bitwise OR ( |
).
Một chuỗi dyadic bắt đầu bằng ba hoặc nhiều dyads ban đầu gọi dyad đầu tiên với các đối số của chuỗi. Ở đây, điều này cho 1 << 1 = 2 . Sáu dyads tiếp theo được nhóm thành các cặp (được gọi là dĩa ), trong đó dyad ngoài cùng bên phải được gọi đầu tiên với các đối số của chuỗi, sau đó một bên trái được gọi với các giá trị trả về trước đó cho cả hai bên.
Đối với æ«æ«
, chúng tôi nhận được 2 << (1 << 1) = 2 << 2 = 8 . Sau đó, æ«æ«
tính 8 << (1 << 1) = 8 << 2 = 32 . Bây giờ, |æ«
có được chúng tôi 32 | (1 << 1) = 32 | 2 = 34 .
Cuối cùng, dấu vết |
hoạt động giống như một cái móc và được gọi với giá trị trả về trước đó là đối số bên trái của nó và đối số bên phải của chuỗi là đối số bên phải của nó. Điều này trả về 34 | 1 = 35 .
⁹ṚḢ²
Trong trường hợp không có đối số thứ hai, hằng số ⁹
giữ 256 . Nguyên tử ngược thúc đẩy 256 vào mảng [2, 5, 6] và đảo ngược nó để mang lại [6, 5, 2] . Sau đó, nguyên tử đầuḢ
trích xuất phần tử đầu tiên và nguyên tử vuông²
trả về ** 6² = 36 *.
‘‘‘0‘‘‘‘‘‘‘
Các increment nguyên tử ‘
increments đối số của nó bằng 1 , vì vậy ‘‘‘
biến giá trị trả về ban đầu 0 thành 3 . 0 sau đây là một nilad không thể nhìn thấy, nghĩa là, nó không phù hợp với chuỗi theo bất kỳ cách nào. Do đó, giá trị trả về trước đó ( 3 ) được in thành STDOUT, sau đó được thay thế bằng giá trị của nilad ( 0 ).
7 bản sao sau đây ‘
biến 0 này thành 7 , được in ngầm khi chương trình kết thúc.
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
Các sụt lần nguyên tử ’
decrements đối số của nó bằng 1 , vì vậy ba mươi tám bản sao biến các giá trị trả về ban đầu 0 thành -38 . Nguyên tử khác biệt tuyệt đốiạ
tính toán sự khác biệt không dấu giữa -38 và đối số ngầm 0 , trả về 38 .
-____---__________
-
là một tốc ký cho -1 và đặt giá trị và giá trị trả về của liên kết thành -1 . Mỗi cái _
là một thể hiện của nguyên tử trừ dyadic , có đối số đúng sẽ mặc định là -1 nếu bị thiếu.
Đầu tiên, -____-
tính (-1) - (-1) - (-1) - (-1) - (-1) = 3 . -1 sau đây là một nilad không thể thay đổi, do đó, giá trị trả về trước đó ( 3 ) được in thành STDOUT, sau đó được thay thế bằng giá trị của nilad ( -1 ).
Tiếp theo, -_
tính toán (-1) - (-1) = 0 , trong đó nghĩa đen -
đặt đối số bên trái của _
và sử dụng giá trị trả về làm giá trị bên phải. Chín bản sao sau đây _
trừ đi đối số mặc định -1 từ giá trị trả về, thu được 9 , được in ngầm khi chương trình kết thúc.
”(O
”(
là một ký tự theo nghĩa đen và nguyên tử thứ tựO
tìm kiếm điểm mã Unicode của nó, mang lại 40 .
41 - 47
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
Trong trường hợp không có đối số dòng lệnh thứ ba, hằng số ⁵
giữ 10 . Nguyên tử unlengthḶ
tạo ra một phạm vi dựa trên 0, cụ thể là [0, Sọ , 9] cho đối số 10 , cho cả hai phía của nguyên tử lặp lại tại chỗx
. Cái sau khớp với các phần tử của đối số bên trái của nó với sự lặp lại của phần bên phải của nó và lặp lại mỗi phần tử với số lần tương ứng. Với [0, Hoài, 9] là cả hai đối số trái và phải, do đó, chúng tôi nhận được các số 0, một, hai, v.v.
Các chỉ số thành nguyên tử ị
fetches các yếu tố của các đối số quyền của mình ở chỉ số quy định tại một trái của nó. Với đối số bên trái 10 ( ⁵
bên trái) và đối số bên phải [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, Câu, 9] (kết quả trước đó), điều này mang lại cho 4 .
Chuỗi cho đến thời điểm này được theo sau bởi một nilad không thể nhìn thấy được ⁵
, do đó, giá trị trả về trước đó ( 4 ) được in thành STDOUT, giá trị trả về được đặt thành 10 và phần còn lại của chuỗi được phân tích cú pháp như bình thường.
Như trước, ⁵ḶxḶ
sẽ mang lại mảng [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, Cuộc , 9] . Lần này, chúng ta gọi nguyên tử được sắp xếp theoṢ
đối số 10 , nó thúc đẩy 10 đến [1, 0] , sau đó sắp xếp nó để mang lại [0, 1] . Nguyên tử đầu dyadic bây giờ lấy các tiền tố có độ dài 0 và 1 từ kết quả sang trái, để lại cho chúng ta [[], [1]] . Khi được in, không có gì ngoài 1 sẽ vẫn hiển thị.
⁽{ʂ%⁽{}
⁽
và hai ký tự sau của nó tạo thành một chữ số. Nếu j và k là các điểm mã của chúng trong trang mã của Jelly và (j, k) <(124, 250) , chúng ta sẽ nhận được số nguyên 1001 + 250j + k . Các điểm mã của '{' , '}' và 'ʂ' là 123 , 125 và 167 , do đó, nghĩa đen bên trái ước tính là 1001 + 250 × 123 + 167 (= 31918) , trong khi bên phải đánh giá là 1001 + 250 × 123 + 125 (= 31876) .
Do số nguyên bên trái lớn hơn hai lần so với số nguyên bên phải, nên kết quả là (Khác + 167)% (Tiết + 125) = (Tiết + 167) - (Tiết + 125) = 167- 125 = 42 .
ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®
Nguyên tử xáo trộnẊ
ngẫu nhiên hóa thứ tự các phần tử của đối số; một đối số số z được thăng cấp lên phạm vi [1, Mạnh, z] trước đó. Đối với đối số ngầm 0 , phạm vi này trống và Ẋ
mang lại [] . Tất cả nguyên tử Ạ
trả về 1 nếu tất cả các phần tử của đối số của nó là trung thực, 0 nếu không. Vì một mảng trống không chứa các phần tử giả, Ạ
trả về 1 ở đây.
Các zip với nguyên tử ż
(một dyad) lấy các đối số x và y và hoán đổi cặp [x, y] . Đối với số nguyên x và y , điều này chỉ đơn giản mang lại [[x, y]] , do đó ż
, đặc biệt này , được gọi với các đối số 1 và 0 (đối số ngầm), trả về [[1, 0]] . Các eval cặp đôi nguyên tử v
hóa tất cả các mảng phẳng (chỉ chứa số và ký tự) i lập luận trái thành chuỗi, sau đó đánh giá chuỗi kết quả như các chương trình Jelly monadic với lập luận của mình đúng như lập luận của các chương trình. Vì ["10"]chỉ bao gồm các chữ, điều này bỏ qua các đối số đúng v
và chỉ đơn giản là kết quả trong [10] .
Bản sao nhanh chóng ©
đính kèm v
và sao chép kết quả của nó vào sổ đăng ký. Sự xuất hiện sau đó của nguyên tử thu hồi®
(một nilad) sẽ lấy [10] từ thanh ghi.
Ba bản sao tiếp theo của żv
công việc như trước đây, ánh xạ [10] thành [[10, 0] thành [100] thành Chiêu thành [10000] . Nguyên tử thứ tựọ
kiểm tra bao nhiêu lần đối số bên trái của nó chia hết cho bên phải của nó, vì vậy ở đây, nó tính thứ tự 10 (tìm nạp với ®
) trong 10000 = 10 4 , cho ra [4] .
Dưới đây ®
là một nilad không thể chỉnh sửa, do đó, giá trị trả về trước đó ( [4] ) được in thành STDOUT, sau đó được thay thế bằng giá trị của nilad ( 10 ). Chúng tôi áp dụng Ạ
tiếp theo, đạt 1 . (Điều này là bắt buộc vì một con số không theo sau bởi một con đê sẽ được phân tích cú pháp tại thời điểm này.)
Như trước, żvżvżv
nối thêm ba số 0 vào giá trị trả về hiện tại, biến 1 thành [1000] . Cuối cùng, ọ®
tính thứ tự 10 trong 1000 = 10 3 và 3 được in thành STDOUT khi chương trình kết thúc.
44
Một chữ số khác, nhưng một chữ khác.
111111l11&K1111111Kl11&
Đầu tiên và quan trọng nhất, nghĩa đen 111111
đặt đối số và giá trị trả về ban đầu là 111111 . Các hoạt động khác 1
cũng là nghĩa đen.
l
là nguyên tử logarit , tính toán logarit của đối số bên trái của nó với cơ sở được chỉ định ở bên phải. Khi được gọi vào 111111 với đối số đúng 11 , chúng ta nhận được nhật ký 11 111111 4,85 .
Các nguyên tử từK
tham gia một đối số danh sách tại các khoảng trắng, sau khi quảng bá một số / ký tự z thành [z] . Ở đây, chúng tôi chỉ cần sử dụng nó để biến đối số 111111 của liên kết thành [111111] . (Chúng tôi không yêu cầu một mảng ở đây, nhưng chúng tôi đã hết các nguyên tử nhận dạng.) Nguyên tử bitwise AND&
đưa các giá trị trả về cho cả hai bên, biến chúng thành số nguyên nếu được yêu cầu và tính toán theo bit của chúng. Trong trường hợp cụ thể này, nó trả về [4,85 & 111111] = [4 & 111111] = [4] .
Dưới đây 1111111
là một nilad không thể chỉnh sửa, do đó, giá trị trả về trước đó ( [4] ) được in thành STDOUT, sau đó được thay thế bằng giá trị của nilad ( 1111111 ). K
sau đó biến số nguyên này thành [1111111] . (Điều này một lần nữa không thực sự cần thiết, nhưng một con số không theo sau bởi một con đê sẽ được phân tích cú pháp vào thời điểm này.)
Như trước, l11
tính toán nhật ký 11 111111 5,81 , sau đó &
trả về [5,81 & 111111] = [5 & 111111] = [5] .
,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ
Đây là chương trình duy nhất bao gồm nhiều liên kết do người dùng xác định. Liên kết cuối cùng là liên kết chính và thực thi khi chương trình bắt đầu, các liên kết còn lại là liên kết trợ giúp. Nhanh chóng Ç
luôn đề cập đến liên kết trên liên kết hiện tại và thực hiện nó một cách đơn điệu. Tương tự như vậy, nhanh chóng Ñ
luôn đề cập đến liên kết bên dưới liên kết hiện tại (bao quanh) và cũng thực hiện nó một cách đơn điệu.
Liên kết trên cùng bao gồm nguyên tử cặp,
- một dyad biến các đối số x và y thành [x, y] - và nguyên tử tổngS
- một đơn vị thúc đẩy một đối số nguyên z thành [z] và giảm đối số mảng bằng cách thêm vào. Khi liên kết ,SS
được gọi với một đối số nguyên n , nó sẽ tính Σ [n, n] = Σ [n, n] = 2n .
Liên kết giữa bao gồm các nguyên tử trên, nhanh chóng đã nói ở trên Ç
và nguyên tử không đáng kểỊ
- một đơn vị mang lại 1 cho các đối số số z với -1 z ≤ 1 , nhưng 0 cho tất cả các nguyên tử khác. Áp dụng Ị
hai lần cho một đối số nguyên n về cơ bản thay thế nó bằng 1 , vì đầu ra của cái thứ nhất Ị
( đầu vào của cái thứ hai) luôn không đáng kể. Kết quả này sau đó được ghép với giá trị trả về của Ç
(được gọi với đối số n ) và cặp kết quả được giảm đi S
. Tổng cộng, chúng tôi tính toánΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .
Với hai liên kết trợ giúp này, liên kết chính hiện có thể xây dựng bất kỳ số nguyên không âm nào bằng cách xem xét các chữ số nhị phân của nó. Với giá trị trả về ban đầu là 0 , chuỗi ÇÑÇÇÇÑ
tính kết quả cuối cùng (((((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
Nguyên tử nguyên tố tiếp theo tìm thấy số nguyên tố dương nhỏ nhất lớn hơn nhiều so với đối số của nó. Với giá trị trả về ban đầu là 0 , mười lăm lệnh Æn
tính số nguyên tố thứ mười lăm, là 47 .