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.BIII
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 Edö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 Gbağı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 Vdaha 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 .QV
~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 . Abir mutlak değeri atomu, böylece de oluşturulan - (z + 1) = z + 1 . İlk geri dönüş değeri 0 ile , ~Ageri 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 wsağ 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 mbirleş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
Cbir tamamlayıcı atomu ve bağımsız değişken harita z için 1-z . Nolduğu negate atomu ve bağımsız değişken harita z için -z . Birlikte, CNharitalar z için - (1-Z) = Z-1 , on sekiz adet kapalı argüman edecek, böylece 0 içine -18 . Son Cverim 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 Jdö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 . JAtomu 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 Øaküçü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 isol argüman teşvik 0 için [0] , daha sonra sağ argüman endeksi bulmak 0 gr, bu dizide 1 .
Aralık atomu rondan 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 idizinini 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 ). ciç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 Ttruthy 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 Ubu 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 Pbu 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 Rdö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 Ftek bir ve 31 sıfır bir düz dizi, sonuçta bu dizi unnests. Son olarak, Lsonuç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 vsonra, 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 vve basitçe sonuçlanır [10] .
Kopya hızlı ©üzere ataşeler vkayı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 111111argümanı ve başlangıç dönüş değerini 111111 olarak ayarlar . Diğer çalıştırmalar 1aynı zamanda değişmezdir.
lbir 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 Kboş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 1111111ayrı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. Kdaha 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ı ,SSbir 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 Ænonbeşinci sayıdır ( 47) .