Jelly , 47 tam sayılar, 519 bayt
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
Her satır ayrı, dolu bir programdır.
Çevrimiçi deneyin! (test paketi ve kesişme denetleyicisini içerir)
Nasıl çalışır
Komut satırı argümanları olmayan her tam program ana linkini (son satırda tanımlanır) niladik olarak, yani giriş yapmadan yürütür. Zincirdeki ilk bağlantı bir nilad ise, tüketilir, çağrılır ve hem ana bağlantının argümanı hem de dönüş değeri sonuç olarak ayarlanır; zincirinin ilk halkası, bir monad ya bir gayenin ise, bu olup değil tüketilen ve örtük fikir ve dönüş değeri 0 yerine kullanılır. Her iki durumda da, zincirin geri kalanı monadik olarak gerçekleştirilir.
Jelly birkaç durumda çıktısını düzenler. Özellikle, bir singleton dizisi etrafındaki parantezler olmadan yazdırılır, yani 42 ve [42] ve yazdırdıktan sonra ayırt edilemez. Bunu birkaç kez kullanacağız.
1 - 10
e
Mevcut dönüş değeri ise atomu testleri 0 argüman ait 0 . Öyle, 1e
döndürür .
BI$⁼#
BI$
bir hızlı bağlantıdır, özellikle ikili atomu ve artış atomunu hızlı $
gruplandırarak oluşturulan monadik bir zincirdir . Birleştirildiğinde, bir tamsayıyı taban 2'deki basamak dizisine dönüştürür, ardından elde edilen basamakların ileri farklarını hesaplar. Dizinin yalnızca bir öğesi varsa, ileriye dönük fark yoktur ve boş bir dizi döndürür (falsy); en az iki rakam varsa, boş olmayan bir dizi (truthy) döndürür.B
I
I
I
Hızlı #
önceki hızlı bağlantıyı tüketir ve yeterli eşleşme bulunana kadar eşleşme dizisini döndürene kadar bunu 0 , 1, 2,… öğesine uygular . Hesaplanır gerekli miktarda ⁼
dönüş değeri / argüman karşılaştırır, 0 gr, kendisine 1 . Böylece, programın tamamı , taban 2'de iki basamaklı ilk negatif olmayan tam sayı olan [2] döndürür .
⁾⁾⁾Ụ^/
⁾⁾⁾
bir dize değişmezi, özellikle de ⁾⁾ dizesidir . Not up atom Ụ
, endekslerini karşılık gelen değerlerine göre sıralar; Her iki karakter de eşit olduğundan, bu [1, 2] sonuç verir . Elde edilen dizi bit ^/
yönünde XOR ile azaltılır , bu nedenle tüm program 3 döndürür .
ı***ıḞḞ
ı
argümanı başlatır ve hayali birime geri döndüren değer i . *
olan üs alma kimin doğru argüman ana bağlantının argüman varsayılan dyad. Bu nedenle, ***ı
değerlerini hesaplar ((i i ) i ) i 4.81 + 0i ≈ , Ḟ
atomu ( kat gerçek bağımsız değişkenler için, gerçek kısmı kompleks olanlar için), gerçek parçanın (hesaplar 4.81 ), daha sonra Ḟ
elde zeminler, 4 .
5
6
7
Bu üç program tek bir hazır bilgi içeriyor ve tam olarak ne istersen onu yapıyor.
.::::
Değişmez 0.5.
için bir kısa yoldur ve argüman ve dönüş değerini başlatır. Tam sayı bölümü DYAD'ın en ( ana bağlantılar argüman) doğru bağımsız değişken varsayılan, bu hesaplar 0.5 / 0.5 / 0.5 / 0.5 / 0.5 gr, 8 .:
::::
9
Başka bir değişmez.
EȮ<
Hepsi eşit atomu E
döner 1 argüman olarak tüm elemanlar aynı olup olmadığını ve 0 değilse. Bir tamsayı argümanı z [z] ye yükseltilir , bu nedenle örtük argüman 0 için 1E
değerini döndürür .
Şimdi, çıkış atomu 1'den STDOUT'a Ȯ
yazdırır . Daha sonra 1'i atomdan küçük olan 0 kullanarak örtük argüman 0 ile karşılaştırırız . Sonuç (1 <0) = 0'dır ve program bittiğinde dolaylı olarak yazdırılır.<
11 - 20
⁻GṘ
Izgara atomu G
bağımsız değişken ile ilgili görsel olarak hoş bir tablo oluşturmak için çalışır. Düz tamsayı argümanı için (burada: 0 ), onu yalnızca bir diziye sarar. Düz eşit değildir atomu ⁻
örtülü argüman karşılaştırır 0 (sağa sonucu [0] ) elde edildi, 1 bağımsız değişkenleri eşit değildir çünkü. Temsil atomu Ṙ
baskılar 1 STDOUT ve sonucu verir. Programın sonunda, son getirinin değeri örtük bir şekilde basılıyor, bu yüzden 11'lik bir çıktı veriyoruz .
=`p`VV×`DQV
Kendi kendine hızlı olan `
, bir dyad'ı aynı sol ve sağ argümanlarla çağırarak monata dönüştürür. İlk olarak, 0=`
argümanını kendisiyle karşılaştırarak 1'i verir .
Kartezyen ürün atomu p
, bağımsız değişkenler olarak listelerini bekler, bu nedenle tam sayı teşvik 1 aralığı [1, ..., 1] = [1] . [1] 'p`
in Kartezyen ürününü ve kendisini alır [[1, 1]] .
Eval atomu V
daha sonra, dizeleri (sadece sayı ve harf içeren) tüm düz diziler döner giriş parametresiz jöle programları elde edilen dizeleri değerlendirir. [[1, 1]] önce [“11”] 'e dönüştürülür , daha sonra [11]' iV
veren dizgeyi değiştirir . Bir kez daha, bu diziyi "11" e çevirir , sonra 11 verimini verir .V
Şimdi, 11'i kendisiyle ×`
çarparak 121'i veriyor . Ondalık atomu döner 121 içine [1, 2, 1] , benzersiz bir atomu ikinci atar 1 ve bir kez daha, onları birleştirerek geri sonuçlanan tamsayı basamaklı bir listesini döner 12 .Q
V
~A~A~A~A~A~A~A~A~A~A~A~A~A
~
bir bit-bazında değil atomudur. İkinin tamamlayıcı aritmetiğiyle, z argümanını z ile ~ z = - (z + 1) arasında eşleştirir . A
bir mutlak değeri atomu, böylece de oluşturulan - (z + 1) = z + 1 . İlk geri dönüş değeri 0 ile , ~A
geri dönüş 13'ün 13 kopyası .
⁷ṾṾṾw
Sabit ⁷
, '\ n' newline karakterini tutar ve argüman ve return değerini başlatır.
Uneval atomu Ṿ
argümanı bir dizge gösterimini oluşturmak için çalışır z bu kodun oluşan bir jöle programı döneceğini böyle z .
İlk çağrı ustalıkla bir karakter değişmezliği olan "" \ n " dizesini döndürür . Bir sonraki çağrı "" "," \ n " - bir karakter değişmezi döndürür . Üçüncü ve son çağrı "" "," "," ,, "", "\ n" - karakter değişmezlerinin bir özetidir.
Son olarak, pencere endeksi atomu w
sağ argüman teşvik '\ n' dizesine "n \" ile başlayan bir alt dize ilk indeksi bulmak "\ n" . Bu 14 döndürür .
⁴ḟ€⁴Ṁ
⁴
16 sabittir . Quicklink filter her false ( ḟ€
), sol argümanını ( 16) [1,…, 16] aralığına yükseltir , ardından öğeleri üzerinde yinelenir.
Her öğe için z , ḟ⁴
önce z'yi [z] ' ye terfi ettirir , sonra 16'nın (varsa) tüm oluşumlarını kaldırır . Bu, [[1], [2],…, [14], [15], []] dizilerini verir, burada son dizi boş olduğundan 16 içerdi .
Son olarak, maksimum atom Ṁ
seçer [15] .
mmmmċ
Modüler atomu m
- argümanlar ile adı x (dizi) ve y (tamsayı), genellikle her alır | y | inci elemanı x , ilk başlayarak 0> y , son birlikte, y <0 . Ancak, y = 0 olduğunda , tersi ile birleştirilmiş x değerini döndürür .
Sol tamsayı argümanı 0 ilk önce [0] a yükseltilir . İlk kopya m
birleştirir [0] kendisi ile, elde edildi : [0, 0] . Kalan kopyalar bu sonucu [0, 0, 0, 0] , sonra [0, 0, 0, 0, 0, 0, 0, 0] ve son olarak [0, 0, 0, 0, 0, 0'a dönüştürür. , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .
Sonunda, sayım atomu ċ
örtük argüman 0'ın sonuç dizisinde göründüğü sayıyı sayarak 16 döndürür .
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
ṭ
olduğunu tack atomu ve sağ birine sol argüman ekler. Yana ṭ
ve aşağıdaki ḍ
diyadik olan tüm çağrıları ṭ
örtülü argüman geçmesine 0 doğru argüman olarak ṭ
. İlk arama [0, 0] , ikinci [0, [0, 0] ve sekizinci ve son [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .
ḍ
olduğu bölünebilme atomu; argümanlar için x ve y , bu döner 1 olduğu X bölünemeyen bir y , 0 değilse. Ḅ
tam sayılar için bir işlem yapılmadığından , oluşturulan dizideki her tam sayı tarafından bölünebilirlik için 0ḍḄ
test eder. 0 kendiliğinden bölünebilir, bu yüzden [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]] elde ederiz .
Şimdi, birleşik atom Ḅ
düz diziler üzerinde çalışır. Bir çift [a, b] için basitçe 2a + b döndürür . Daha önce belirtildiği gibi, Ḅ
tamsayılar no-op: bir tamsayıdır bağımsız değişken c yükseltildikten [c] ve [c] içinde bir baz basitçe c .
İlk arama için Ḅ
azaltmaktadır [1, 1] için 3 , bu şekilde elde [1, [1, [1, [1, [1, [1, [1, 3]]]]]]] . Bir sonraki çağrı azaltır [1, 3] ile 5 , bir sonraki [1, 5] için 7 dokuzuncu kadar benzeri ve Ḅ
geri dönüş 17 .
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
Ṇ
olan düz mantıksal NOT atomu ve kapalı bir argüman haritalar 0 ile 1 . +
ekleme atomudur, bu nedenle on sekiz kopyanın her biri +Ṇ
önceki geri dönüş değerini (başlangıçta 0 ) arttırır . Böylece tüm program 18 döndürür .
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
C
bir tamamlayıcı atomu ve bağımsız değişken harita z için 1-z . N
olduğu negate atomu ve bağımsız değişken harita z için -z . Birlikte, CN
haritalar z için - (1-Z) = Z-1 , on sekiz adet kapalı argüman edecek, böylece 0 içine -18 . Son C
verim uygulaması 1 - (-18) = 19
.
ĖḌĖḌ
Numaralandırmak atomu Ė
göstergesi değer çiftlerini oluşturmak, bir dizideki numaralanmaktadır. Örtük fikir 0 yükseltildikten [0] , daha sonra Ė
elde edilir : [[1, 0]] . Undecimal atomu, sonuçta, 10 tabanında bir düz dizi tamsayı dönüştürür [10] , bu özel durumda.
İkinci çağrı Ė
dönüşümleri [10] içerisine [[1, 10]] , ikincisi Ḍ
son dönüşür [20] .
21 - 30
ṫṣȦJṫȦ⁸ȦJ
Kuyruk atomu ṫ
(bir iki atomlu) dizin başlar sol argüman ekine seçmek sol tamsayı değeri teşvik, sağ bileşen olarak belirtilen (1 tabanlı ve modüler) x için [x] ' . Her iki bağımsız değişken 0 olarak ayarlandığında çağrıldığında , [0]ṫ
döndürür .
Her türlü atom Ȧ
döner 1 argümanı truthy ve herhangi bir derinlikte, hiç sıfır içeriyorsa 0 , aksi. Burada, örtük argümanı 0 döndürmek için onu bir kimlik işlevi olarak kullanırız . En bölünmüş atom ṣ
sol argüman bölmeler [0] onun sağ Tartışmanın oluşumda 0 , bu nedenle döner [[], []] burada.
Endeksleri atomu J
dönüş değeri etkisiz bırakır ve aralık, sonuçta indisleriyle ile değiştirir [1, 2] Bu özel durumda. Ȧ
ve ṫ
her ikisi de eskisi gibi çalışır, bu nedenle [1, 2] son dizinde başlayan posta sırasına indirgenerek [2] olur .
Niladik bağlantılarda, sabit [] değerini ⁸
tutar . Bu, parçalanamayan bir niladdır, yani herhangi bir şekilde zincire uymaz. Sonuç olarak, önceki dönüş değeri ( [2] ) STDOUT'a yazdırılır, ardından niladın değeriyle ( [] ) değiştirilir.
Yana [] falsy olup, Ȧ
dönüştürür 0 . J
Atomu teşvik 0 için [0] , daha sonra indeksi (listesini verir [1] programı tamamlandığında örtülü basılır).
22
Başka bir değişmez. Repdigitler onları kullanmak için en iyi yer gibi görünüyor.
“@ṃ»
Bu Jelly'in dahili string sıkıştırmasını kullanır. Endeksleri @ ve M Jelly kod sayfasında olan 64 ve 220 ve dize hazır 250 farklı karakter içerebilir, bu nedenle bu ilk tamsayı hesaplar 250 × 65 + 220 = 16470 .
16470 , 3 ile bölünebilir, bu nedenle bölüm 16470/3 = 5490 , yazdırılabilir bir ASCII karakterini veya bir satır beslemeyi kodlar. Bunların 96'sı ve 5490 = 96 × 57 + 18'dir , yani yazdırılabilir ASCII karakterini '2' olan 0-temelli indeks 18'de çözdük .
57 ile ayrıldık , bu da 3 ile bölünebiliyor , yani 57/3 = 19 = 96 × 0 + 19 bölümü , 0 tabanlı indeks 18'de '3' olan yazdırılabilir ASCII karakterini kodluyor .
Bu 0 bırakır ; kod çözme işlemi durur. Üretilen karakterler "23" oluşturmak için birleştirilir
!ḤḤ!
Faktöriyel atomu !
örtülü bağımsız değişken döner 0 içine 1 . İki çağrıları unhalve atomu Ḥ
edecek 1 içine 2 , daha sonra 2 içine 4 . Sonunda, 4!
hesaplar ! = 24 .
³HH
Komut satırı argümanlarının yokluğunda sabit 100³
tutar . İki çağrıları döner 100 içine 50 , daha sonra 50 içine 25 .H
ØaM
Sabit Øa
küçük harfli alfabe tutar. En büyük atom , en büyük M
öğelerin tüm indekslerini verir ve z , en büyük küçük harf olduğundan, sonuç [26] .
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
Birleştirilmiş atomun yirmi altı kopyası ;
, ilk sıfır değerini 0 ve varsayılan argümanın 0 yirmi altı örneğini birleştirerek 27 sıfır dizisini oluşturur.
¬
bir mantıksal NOT atomu, yani ;¬
bir ekler 1 sıfır dizisine. Bir sonraki ¬
, dizideki tüm elemanları etkisiz hale getirip, bizi 27 ve 1 sıfır dizisiyle bırakıyor.
ḅ
olduğu unbase atomu tamsayı sağ bileşen olarak belirtilen tabanından sol argümanı arasında bir rakam dizisi dönüştürür. ḅ¬
unary'den tamsayıya dönüşür, bu nedenle sadece bir toplam yapar. 27'den oluşan bir dizi için bu, 27 döndürür .
irið8c
Dizin atomu i
sol argüman teşvik 0 için [0] , daha sonra sağ argüman endeksi bulmak 0 gr, bu dizide 1 .
Aralık atomu r
ondan bir artan veya azalan aralığı sağ birine argüman bıraktı oluşturur. Doğru argüman örtük argüman 0'dır , yani bu [1, 0] verir . İkinci bir çağırma i
dizinini bulur 0 içinde , [1, 0] , sonuçta 2 .
ð
yeni, ikili bir zincir başlıyor. Yukarıdaki zincir niladik olduğu için, bu zincirin hem sol hem de sağ argümanı, ilk zincirin dönüş değerine eşit olacaktır ( 2 ). c
içinde kombinasyonları atomu. Sol argüman 8 ve sağ argüman 2 ile , 8C2 = 8! / (6! 2!) = 28 döndüren , 8 elemanın tüm benzersiz, sırasız 2 kombinasyonlarını sayar .
⁶ḲĠṂ°İṂĊ
Sabit ⁶
bir boşluk karakteri tutar ve argüman ve dönüş değerini '' olarak ayarlar . Kelime atomu Ḳ
karakteri teşvik ' tekil dizeye "" ve sonuçta, boşluklar it at böler [[], []] .
Grup atomu Ġ
grupları aynı elemanların tüm indisleri. Son dönüş değerinin her iki elementi eşit olduğundan, burada [[1, 2]] değerini döndürür . Minimum atomu bu dizinin en az bir (yalnızca) elemanı, elde özler [1, 2] .
Derece atomu °
, sonuçta radyan altmış tabanlı derece iki tamsayılar dönüştürür 1 ° x 2π / 360 ° = π / 180 ve ° × 2π / 360 ° = π / 90 2 . Ters atomu, sonuçta çarpımsal Tersi alır 180 / π ≈ 57.3 ve 90 / π ≈ 28.6 .
Ardından, bir Ṃ
kez daha minimum değer alır, 28.6 . Son olarak, ceil atomu Ċ
dönüştüren 28.6 içine 29 .
œṡ¹ẆẆTUṖṖṖṖP
Kimlik atomu ¹
döner 0 örtülü değişken için 0 . Çevresinde bölme atomu œṡ
bağımsız değişkenler (her ikisi de her iki teşvik 0 için) [0] , ardından böler [0] eşit bitişik altdizilimlerden çevresinde [0] . Bu , [[], []] ürününü verir .
Kayan pencere atomu Ẇ
bağımsız değişken tüm bitişik Altdizilim oluşturur. Birinci derece dönüştüren [[], []] içine [[]], [[], [[]], [[]]] , ikinci örnek dönüştürür [[], [[]], [[[]] []]] olarak
[[[[]]], [[[]]], [[[], []]], [[[]], [[]]], [[[]], [ [], []]], [[[]], [[]], [[], []]]] .
Gerçek atomu T
truthy elemanların tüm indisleri listeler. İlk seviyedeki dizilerin hiçbiri boş değil, bu nedenle bu [1, 2, 3, 4, 5, 6] sonuç veriyor . Yukarı çıkan atom U
bu diziyi tersine çevirerek [6, 5, 4, 3, 2, 1] değerini verir .
Pop atomunun dört kopyası Ṗ
son dört elementi kaldırarak bizi [6, 5] ile bıraktı . Son olarak, ürün atomu P
bu diziyi 30'a dönüştürür .
31 - 40
ȷ½RṪ
ȷ
1 × 10 3 = 1000 için bir kestirme yoldur . Karekök atomu ½
verir 31.6 , aralık atomu R
dönüşür [1, ..., 31] . Son olarak, kuyruk atomu 31Ṫ
döndüren son elemanı çıkartır .
LµdddddµFL
Uzunluk atomu L
örtülü argüman teşvik 0 için [0] vermek üzere, daha sonra uzunluğu alır 1 . µ
monadik yeni bir zincir başlatır ve sonuç 1 argümanı olur.
X ve y argümanları için , divmod atomu [x / y, x% y] değerinid
verir . Her aramada y = 1 olacaktır , dolayısıyla sonuç daima [x, 0] olacaktır .
İlk çağrı , [1, 0] veren x = 1 ile başlar . sadece tam sayılarda çalışır, bu nedenle sonraki çağrılarda vektörleşir. İkinci çağrı [[1, 0], [0, 0]] , üçüncü [[[[1, 0], [0, 0]], [[0, 0], [0, 0]]] verir , ve beşinci ve sonuncusu, bir tane ve 31 sıfır içeren bir dizi derinlik 5'tir.d
µ
bir kez daha yeni, monadik bir zincir başlar ve öncekinden gelen dizi kendi argümanı olur. Düz atomu F
tek bir ve 31 sıfır bir düz dizi, sonuçta bu dizi unnests. Son olarak, L
sonuçta 32 , dönen uzunluğunu alır .
33
Başka bir repdigit, başka bir değişmez.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
Sarma atomunun her örneği , argümanını z'yi [z] 'e dönüştürür . 0 başlangıç değeri ile birlikte, 34 örneğin tümü birlikte [[[[[[[[[[[[[[[[[[[[[[[[[[0]]])] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Son olarak, derinlik atomu ŒḊ
, 34 döndüren, elde edilen dizinin maksimum derinliğini hesaplar .
ẇɓæ«æ«æ«æ«æ«|æ«|
Pencere olsa atomu ẇ
bağımsız değişkenler (her ikisi de varsayılan için her ikisi de teşvik 0 kadar) [0] , ** [0] ** bitişik bir alt dizisinde maddesi olması durumunda o zaman testler [0] . Öyle, 1ẇ
döndürür .
ɓ
yeni, ikili bir zincir başlıyor. Yukarıdaki zincir niladik olduğu için, bu zincirin hem sol hem de sağ argümanı, ilk zincirin dönüş değerine eşit olacaktır ( 1 ). Zincir iki farklı, iki atomlu atomdan yararlanır: bitshift left ( æ«
) ve bitwise OR ( |
).
Üç ya da daha fazla sayıda ipucu ile başlayan bir ikili zincir, ilk önce zincirin argümanları ile ilk perdesi çağırır. İşte, bu 1 << 1 = 2 verir . Takip eden altı dyad, en sağ dyadın ilk önce zincirin argümanları ile çağrıldığı, daha sonra en sola birinin her iki tarafa önceki geri dönüş değerleri ile çağrıldığı çiftler ( çatallar ) olarak gruplanır .
İçin æ«æ«
, aldığımız 2 << (1 << 1) 2 << 2 = 8 = . Ardından, 8 << (1 << 1) = 8 << 2 = 32 olarakæ«æ«
hesaplar . Şimdi, bizi 32 alır | (1 << 1) = 32 | 2 = 34 .|æ«
Son olarak, iz, |
bir kanca gibi davranır ve bir önceki dönüş değeri ile sol argümanı ve zincirin sağ argümanı olarak adlandırılır. Bu 34 döndürür | 1 = 35 .
⁹ṚḢ²
İkinci bir argüman olmadığında, sabit 256⁹
tutar . Ters atomu teşvik 256 diziye [2, 5, 6] ve elde etmek için ters [6, 5, 2] . Daha sonra, kafa atomu birinci elemanı çıkartır ve kare atomu ** 6² = 36 * döndürür.Ḣ
²
‘‘‘0‘‘‘‘‘‘‘
Arttırma atomu ‘
tarafından argüman artırır 1 , bu nedenle ‘‘‘
, ilk dönüş değeri edecek 0 halinde 3 . Aşağıdaki 0 , ayrılmaz bir niladdır, yani herhangi bir şekilde zincire uymaz. Sonuç olarak, önceki dönüş değeri ( 3 ) STDOUT'a yazdırılır, ardından niladın değeri ( 0 ) ile değiştirilir.
Aşağıdaki 7 kopyaları ‘
sırayla bu 0 içine 7 programı tamamlandığında örtülü yazdırılır.
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
Eksiltme atomu ’
tarafından argüman azaltır 1 , bu otuz sekiz adet, ilk geri Değeri 0 içine -38 . Mutlak fark atomu ạ
arasındaki işaretsiz bir farkını hesaplar -38 ve kapalı argüman 0 , dönen 38 .
-____---__________
-
-1 için kısa yoldur ve bağlantının argümanını ve dönüş değerini -1 olarak ayarlar . Her biri _
, eğer sağ argümanı varsayılan olarak -1 ise varsayılan olan dyadik çıkarma atomunun bir örneğidir .
İlk önce (-1) - (-1) - (-1) - (-1) - (-1) = 3-____-
değerini hesaplar . Aşağıdaki -1 ayrılmaz bir niladdır, bu nedenle önceki dönüş değeri ( 3 ) STDOUT'a basılır, sonra niladın değeri ( -1 ) ile değiştirilir.
Daha sonra, (-1) - (-1) = 0 değerini -_
hesaplar ; burada hazır bilgi sol argümanı ayarlar ve dönüş değerini sağa olarak kullanır. Aşağıdaki dokuz kopya , varsayılan argümanı -1 , geri dönme değerinden çıkarır ve 9 biter ve program sona erdiğinde dolaylı olarak yazdırılır.-
_
_
”(O
”(
hazır bir karakterdir ve sıralı atom O
, Unicode kod noktasına bakar, 40'ı verir .
41 - 47
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
Üçüncü bir komut satırı bağımsız yokluğunda sabit ⁵
tutan 10 . Unlength atomu Ḷ
özellikle 0 tabanlı dizi oluşturur [0, ..., 9] değişkeni için 10 her iki tarafına da, yer tekrar atomu x
. Sonuncusu, sol argümanının öğelerini sağ olanın tekrarlarıyla eşleştirir ve her bir öğeyi karşılık gelen sayıda tekrarlar. İle [0, ..., 9] hem sol ve sağ argüman olarak, biz böylece vb sıfır sıfır, tek tek, iki ikişer ikişer, olsun
Atomun içindeki dizinị
, sağ argümanının elemanını solunda belirtilen dizine getirir. Sol argüman 10 ( ⁵
solda) ve sağ argümanla [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (önceki sonuç), bu 4 verir .
Bu noktaya kadar olan zinciri parçalanamayan bir nilad izler ⁵
, bu nedenle önceki geri dönüş değeri ( 4 ) STDOUT'a basılır , geri dönüş değeri 10 olarak ayarlanır ve zincirin geri kalanı her zamanki gibi ayrıştırılır.
Daha önce olduğu gibi ⁵ḶxḶ
, diziyi [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] verecek . Bu kez, çağrı sıralanmış atomu Ṣ
bağımsız değişken ile 10 teşvik 10 için , [1, 0] , o zaman elde etmek üzere sıralar [0, 1] . Diyadik kafa atomu hemen uzunlukları önekleri getirir 0 ve 1 bize bırakarak sola sonucundan [[1], []] . Yazdırıldığında, 1 dışında hiçbir şey görünmeyecektir.
⁽{ʂ%⁽{}
⁽
ve onun iki takip eden karakteri sayısal bir değişmezdir. Eğer j ve k Jelly'in kod sayfasındaki kod noktaları ve (j, k) <(124, 250) ise , 1001 + 250j + k tamsayısını alırız . Kod noktaları '{' , '}' , ve 'ʂ' olan 123 , 125 ve 167 , bu yüzden hazır bilgi değerlendirir sol 1001 + 250 x 123 + 167 (= 31918) doğru bir değerlendirir ise, 1001 + 250 x 123 + 125 (= 31876) .
Sol tamsayı sağdakinin iki katından daha küçük olduğundan, sonuç (… + 167)% (… + 125) = (… + 167) - (… + 125) = 167-121 = 42'dir .
ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®
Karışık atomu Ẋ
olan argüman elemanları sırasını rasgele; z sayısal bir argüman önceden [1,…, z] aralığına yükseltilir . Örtük argüman 0 için , bu aralık boştur ve [] değerini Ẋ
verir . Tüm atomu döner 1 kendi argüman tüm unsurları, truthy ise 0 değilse. Boş bir dizi sahte öğeler içermediğinden, buraya 1 döndürür .Ạ
Ạ
Zip atomu ż
(bir iki atomlu) argümanlar alır x ve y ve çift aktarır [x, y] . X ve y tamsayıları için , bu basitçe [[x, y]] değerini verir, bu nedenle ż
, 1 ve 0 argümanlarıyla (örtük argüman) adlandırılan bu belirli , [[1, 0]] döndürür . Diyadik eval atomu v
sonra, tüm düz diziler (içeren tek sayılar ve karakter) i dizeleri içine sol argüman döner programların argümanlar olarak sağ argümanla monadic Jöle programları gibi çıkan dizeleri değerlendirir. ["10"] tarihinden beriyalnızca değişmezlerden oluşur, bu doğru argümanı görmezden gelir v
ve basitçe sonuçlanır [10] .
Kopya hızlı ©
üzere ataşeler v
kayıt içine sonuç ve kopyaları. Daha sonra geri çağırma atomunun ®
(bir nilad) meydana gelmesi , kayıt defterinden [10] alacaktır .
Bundan sonraki üç żv
çalışma kopyası [10] - [[10, 0] - [100] ila [10000] ile eşleştirilmiştir . Sipariş atomu ọ
sol argüman, bu nedenle burada da doğru bir bölünemeyen bir kaç kez yapılan testler, bu sırasını hesaplar , 10 ile (getirilen ®
olarak) 10000 = 10 4 , sonuçta [4] .
Aşağıdaki ®
ayrılmaz bir niladdır, bu nedenle önceki dönüş değeri ( [4] ) STDOUT'a basılır, sonra niladın değeri ( 10 ) ile değiştirilir. Daha Ạ
sonra 1 vererek başvuru yaparız . (Bu bir nilad olarak gereklidir ve bunu takiben bir dyad bu noktada ayrılabilir olacaktır.)
Daha önce olduğu gibi żvżvżv
, geçerli dönüş değerine üç sıfır ekleyerek 1 değerini [1000] değerine getirir . Son olarak, ọ®
sırasını hesaplar 10 içinde 1000 = 10 3 ve 3 programı tamamlandığında bekletilmektedir edilir.
44
Yine başka bir repdigit, başka bir değişmez.
111111l11&K1111111Kl11&
Birincisi ve en önemlisi, hazır bilgi 111111
argümanı ve başlangıç dönüş değerini 111111 olarak ayarlar . Diğer çalıştırmalar 1
aynı zamanda değişmezdir.
l
bir logaritma doğru bir belirtilen tabanına sol argüman logaritmasını hesaplar atomu. Üzerinde çağrıldığında 111111 doğru argüman ile 11 , biz olsun log 11 111111 ≈ 4,85 .
Kelime atomu K
boşluk bir liste bağımsız değişken katılır, bir sayısal / karakter teşvik sonra z için [z] . Burada, biz sadece bağlantının argümanını açmak için kullanabilirsiniz 111111 içine [111111] . (Burada bir dizi gerektirmiyoruz, ancak kimlik atomları tükendi.) Bitsel AND atomu &
, dönüş değerlerini her iki tarafa da götürür, gerektiğinde tamsayıya çevirir ve bitsel olarak hesaplar. Bu özel durumda, [4.85 & 111111] = [4 & 111111] = [4] değerini döndürür .
Aşağıdaki 1111111
ayrılmaz bir niladdır, bu nedenle önceki dönüş değeri ( [4] ) STDOUT'a basılır, sonra niladın değeriyle ( 1111111 ) değiştirilir. K
daha sonra bu tam sayıyı [1111111] 'e çevirir . (Bu bir kez daha gerekli değildir, ancak bir dyadın izlediği bir nilad bu noktada ayrılabilir olacaktır.)
Daha önce olduğu gibi, log 11 1111111 ≈ 5.81l11
hesaplar , ardından [5.81 & 111111] = [5 & 111111] = [5] değerini döndürür .&
,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ
Birden fazla kullanıcı tanımlı bağlantılardan oluşan tek program budur. Son bağlantı ana bağlantıdır ve program başladığında yürütülür, geri kalanlar yardımcı bağlantılardır. Hızlı, Ç
her zaman geçerli olanın üzerindeki bağlantıya atıfta bulunur ve bunu monadik olarak gerçekleştirir. Aynı şekilde, hızlı olan Ñ
her zaman geçerli olanın altındaki bağlantıyı da ifade eder (etrafını saran) ve aynı zamanda tek taraflı olarak da yürütür.
Üst bağlantı oluşur çift atomu ,
argümanlar döner ikilisinin - x ve y içine [x, y] - ve toplam atomu S
- bir tamsayıdır argüman teşvik eden bir monadın z için [z] ilave edilerek ve azaltan bir dizi bağımsız değişkeni. Bağlantı ,SS
bir n tamsayı argümanı ile çağrıldığında , Σ [n, Σn] = Σ [n, n] = 2n değerini hesaplar .
Orta Yukarıdaki bağlantı atomu, yukarıda sözü edilen, hızlı oluşur Ç
ve önemsiz atomu Ị
veren bir monadın - 1 sayısal bağımsız değişkenler için z ile 1 ≤ -1 ≤ z , ama 0 diğerleri için. Ị
Bir tamsayı argümanına iki kere uygulamak n, esas olarak 1 ile yer değiştirir , çünkü birincinin çıktısı Ị
( ikincinin girişi ) her zaman önemsizdir. Bu sonuç daha sonra Ç
( n argümanı ile çağrılan) dönüş değeri ile eşleştirilir ve sonuçta ortaya çıkan çift azalır S
. Toplamda hesaplıyoruzΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .
Bu iki yardımcı bağlantı yerindeyken, ana bağlantı artık ikili basamağa bakarak negatif olmayan herhangi bir tam sayı oluşturabilir. 0 başlangıç değeri olan zincir ÇÑÇÇÇÑ
, nihai sonucu hesaplar ((((((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
Bir sonraki ana atom, argümanından kesinlikle daha büyük olan en küçük pozitif asal sayıyı bulur. İlk geri dönüş değeri 0 olduğunda , onbeş çalıştırma Æn
onbeşinci sayıdır ( 47) .