ゼリー、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
すべての行は個別の完全なプログラムです。
オンラインでお試しください!(テストスイートと交差点チェッカーを含む)
使い方
コマンドライン引数を持たないすべての完全なプログラムは、メインリンク(最後の行で定義されている)をniladically、つまり入力なしで実行します。チェーン内の最初のリンクがniladである場合、それは消費され、呼び出され、メインリンクの引数と戻り値の両方が結果に設定されます。チェーン内の最初のリンクはモナドかダイアドであれば、それがされていない消費と暗黙の引数と戻り値0が代わりに使用されます。どちらの場合も、チェーンの残りの部分は単項で実行されます。
Jellyは、いくつかのケースで出力を破壊します。特に、シングルトン配列は周囲の括弧なしで印刷されるため、42と[42]であり、印刷後に区別できません。これは何度か使用します。
1 – 10
e
存在している戻り値場合は原子テストを0には、引数に属し0。そうなので、1をe
返します。
BI$⁼#
BI$
は、クイックリンク、具体的には$
、バイナリアトムB
とインクリメントアトムのクイックグループ化によって形成される単項連鎖I
です。組み合わせて、整数を基数2の数字の配列に変換し、結果の数字の前方差分を計算します。配列に要素が1つしかない場合、前方差分はなくI
、空の配列(偽)を返します。少なくとも2桁ある場合、I
空でない配列(真)を返します。
迅速には#
、以前のクイックリンクを消費し、それを適用する0、...、1、2、十分な一致が発見されるまで、マッチの配列を返します。必要な量はによって計算され⁼
、戻り値/引数0をそれ自体と比較して1を生成します。したがって、プログラム全体は、基数2の2桁の最初の非負整数である[2]を返します。
⁾⁾⁾Ụ^/
⁾⁾⁾
文字列リテラル、具体的には文字列isです。グレードアップ原子は、Ụ
それに対応する値によって、そのインデックスをソートします。両方の文字が等しいため、これにより[1、2]が生成されます。結果の配列はビット単位のXOR ^/
で縮小されるため、プログラム全体は3を返します。
ı***ıḞḞ
ı
引数と戻り値を虚数単位iに初期化します。*
は累乗ダイアドであり、その正しい引数はデフォルトでメインリンクの引数になります。従って、***ı
計算するには、((I I)I)iが 4.81 + 0I≈、Ḟ
原子(床実引数のための実部の複雑なもののための)実部(演算4.81に)、次いでḞ
得フロア、4。
5
6
7
これらの3つのプログラムは単一のリテラルで構成されており、まさに期待どおりに動作します。
.::::
リテラル.
は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]] 。
評価原子はV
次いでniladicゼリープログラムとして得られた文字列を評価し、文字列に(数字や文字のみを含む)すべてのフラットアレイをオン。[[1、1]]は最初に[“ 11”]にV
変換され、次に文字列を評価して[11]を生成します。もう一度、V
この配列を"11"に変換し、評価して11を生成します。
ここで、11をそれ自体で×`
乗算し、121を生成します。小数原子ターン121に[2、1、1] 、独特の原子は第二の廃棄1を、そして再び戻り、それらを連結から生じる整数に数字のリストをオン12。Q
V
~A~A~A~A~A~A~A~A~A~A~A~A~A
~
あるビットごとのNOT原子。2の補数演算により、引数zを〜z =-(z + 1)にマッピングします。A
は絶対値アトムであるため、-(z + 1)= z + 1をマッピングします。初期戻り値が0の場合、13個のコピーが13を~A
返します。
⁷ṾṾṾw
定数⁷
は改行文字「\ n」を保持し、引数と戻り値を初期化します。
uneval原子はṾ
、その引数の文字列表現を作成しようとZのコードからなるジェリープログラムが戻ってくるようなZを。
最初の呼び出しは、文字リテラルである文字列"” \ n"を忠実に返します。次の呼び出しは、「”」、「\ n」 –文字リテラルのペアを返します。3番目の最後の呼び出しは、"" "、" "、" ,, ""、 "\ n"(文字リテラルの5組)を返します。
最後に、ウィンドウインデックス原子は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、場合は、最初から始まるY> 0であれば最後で、0 <Y 。ただし、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を返します。
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
ṭ
はタックアトムであり、その左の引数をその右の引数に追加します。のでṭ
、次のḍ
二項あり、すべては呼び出しṭ
暗黙の引数渡し0に右引数としてṭ
。最初の呼び出しは[0、0]、2番目の[0、[0、0]、および8番目と最後の[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]]]]]]]を取得します。
現在、unbinaryアトムḄ
はフラット配列で動作します。ペア[a、b]の場合、単に2a + bを返します。前述のように、Ḅ
整数の何もしません:整数引数Cはに促進され、[C] 、および[C]で任意の塩基単にC。
への最初の呼び出しḄ
は[1、1]を3に減らし、したがって[1、[1、[1、[1、[1、[1、[1、3]]]]]]を生成します。次の呼び出しは[ 9] が戻る17まで[ 1、3]を5に、次の呼び出しは[ 1、5 ]を7に、というように減らしḄ
ます。
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
Ṇ
はフラットな論理NOTアトムであり、暗黙的な引数0を1にマップします。+
は加算アトムであるため、18個のコピーのそれぞれが+Ṇ
前の戻り値(最初は0)をインクリメントします。したがって、プログラム全体は18を返します。
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
C
は補数アトムであり、引数zを1-zにマッピングします。N
は否定アトムであり、引数zを-zにマッピングします。一緒に、zを-(1-z)= z-1にCN
マッピングします。そのため、18個のコピーが暗黙の引数0を-18に変えます。yieldsの最終アプリケーション。C
1 - (-18) = 19
ĖḌĖḌ
列挙原子はĖ
指標値のペアを作成し、アレイ内の項目を列挙します。暗黙の引数0に促進される[0] 、次いでĖ
得られる[1,0] 。undecimal原子得、ベース10からフラットアレイが整数に変換する[10]この特定のケースでは。
2番目の呼び出しĖ
の変換[10]に[1、10]第二は、Ḍ
最終的に変換する[20] 。
21 – 30
ṫṣȦJṫȦ⁸ȦJ
テール原子ṫ
(ダイアド)左の整数の引数を促進し、その右側の引数で指定されたインデックス(1ベースおよびモジュラー)で始まり、その左引数の後置選択xのに[X]を。両方の引数を0に設定して呼び出した場合、[0]をṫ
返します。
任意およびすべての原子Ȧ
を返す1引数はtruthyであり、任意の深さ、で何のゼロが含まれていない場合は0そう。ここでは、暗黙の引数0を返すための恒等関数として単純に使用します。時分割原子はṣ
その左引数を分割[0]の右引数の発生時に0、それは返す[[]、[]]ここに。
指数原子は、J
戻り値の要素を破棄し、そのインデックスに置き換えられ、範囲の降伏[1、2]この特定の場合には。Ȧ
そして、ṫ
の両方が以前のように動作するので、それらは削減[1、2]得、最後のインデックスから始まるポストフィックスに[2] 。
ニラディックリンクでは、定数⁸
は[]を保持します。これは解析不可能なniladです。つまり、チェーンにはまったく適合しません。その結果、前の戻り値([2])がSTDOUTに出力され、niladの値([])に置き換えられます。
以来[] falsyある、Ȧ
に変換する0。J
原子が促進0に[0]は、そのインデックス(のリストを返し、[1]プログラムが終了したときに暗黙的に印刷されています)。
22
別のリテラル。Repdigitsは、それらを使用するのに最適な場所のようです。
“@ṃ»
これは、Jellyの組み込みの文字列圧縮を使用します。インデックス@とMゼリーのコード・ページでは、64と220と文字列リテラルは、250個の異なる文字を含むことができるので、この最初のは、整数計算250×65 + 220 = 16470を。
16470は3で割り切れるので、商16470/3 = 5490は印刷可能なASCII文字または改行をエンコードします。これらの96個と5490 = 96×57 + 18があります。これは、0ベースのインデックス18で印刷可能なASCII文字をデコードしたことを意味します。これは'2'です。
57が残っていますが、これも3で割り切れるので、商57/3 = 19 = 96×0 + 19は、0から始まるインデックス18で印刷可能なASCII文字をエンコードします。これは'3'です。
これにより0が残ります。デコード処理が停止します。生成された文字は連結されて「23」を形成します
!ḤḤ!
階乗原子は、!
暗黙の引数になります0へ1。二つの呼び出しunhalve原子Ḥ
ターン1に2次に、2に4。最後に、4を!
計算します!= 24。
³HH
コマンドライン引数がない場合、定数³
は100を保持します。H
ターン100を50に、次に50を25に 2回呼び出します。
ØaM
定数Øa
は小文字のアルファベットを保持します。最大の原子はM
、最大の項目のすべてのインデックスを生成し、以降zは最大小文字であり、結果は[26] 。
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
連結アトムの26コピーは、;
初期戻り値0とデフォルト引数0の 26インスタンスを連結し、27個のゼロの配列を構築します。
¬
は論理NOTアトムであるため、ゼロの配列に1を;¬
追加します。次は、配列内のすべての要素を否定し、27個の1と1個の0の配列を残します。¬
ḅ
は、unbaseアトムであり、右の引数で指定されたベースの左の引数から整数に数字配列を変換します。ḅ¬
単項から整数に変換するため、単純に合計を実行します。27個の配列の場合、これは27を返します。
irið8c
atom のインデックスはi
、左引数0を[0]に昇格させ、その配列で右引数0のインデックスを見つけて1を生成します。
範囲の原子はr
、それから、昇順または降順の範囲は、その右のいずれかの引数が残って構築します。正しい引数は暗黙的な引数0であるため、これにより[1、0]が生成されます。の2回目の呼び出しは、[1、0]i
で0のインデックスを見つけ、2を生成します。
ð
新しい二項チェーンを開始します。前のチェーンはniladicであったため、このチェーンの左右の引数はどちらも最初のチェーンの戻り値(2)と等しくなります。組み合わせの原子です。左引数8と右引数2の場合、8個の要素のセットのすべての一意で順序付けられていない2つの組み合わせをカウントし、8C2 = 8!/(6!2!)= 28を返します。c
⁶ḲĠṂ°İṂĊ
定数⁶
はスペース文字を保持し、引数と戻り値を''に設定します。言葉の原子はḲ
文字促進「」シングルトン文字列にする「」と降伏、スペースでそれを分割します[]、[]] 。
グループ原子Ġ
基等しいすべての要素のインデックス。最後の戻り値の両方の要素が等しいため、ここでは[[1、2]]を返します。最小原子得、この配列の最小(のみ)要素を抽出[1、2] 。
度原子が°
得ラジアンに60進度の両方から整数に変換1°×2π/ 360°=π/ 180と°×2π/ 360°=π/ 90 2。逆原子が得逆数を取る180 /πを≈57.3および90 /π≈28.6。
その後、Ṃ
もう一度最小値を取り、28.6を生成します。最後に、ceilアトムĊ
は28.6を29に変換します。
œṡ¹ẆẆTUṖṖṖṖP
アイデンティティ原子が¹
返す0を暗黙の引数に0。周りの分割原子がœṡ
(両方の引数の両方を促進0)に[0] 、次に分割[0]に等しい隣接サブアレイの周り[0] 。これにより[[]、[]]が生成されます。
スライディングウィンドウ原子は、Ẇ
その引数のすべての連続したサブアレイを構築します。最初のインスタンスは[[]、[]]を[[[]]、[[]]、[[]、[]]]に変換し、2番目のインスタンスは[[[]]、[[]]、[[] 、[]]]を
[[[[]]]、[[[]]]、[[[]、[]]]、[[[]]、[[]]]、[[[]]、[ []、[]]]、[[]、[]、[]、[]]]] 。
真実の原子はT
truthyのすべての要素のインデックスを示しています。最初のレベルの配列はどれも空ではないため、これにより[ 1、2、3、4、5、6 ]が生成されます。upendの原子U
得、この配列を逆転[6、5、4、3、2、1] 。
popアトムの4つのコピーはṖ
最後の4つの要素を削除し、[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が引数になります。
引数xおよびyの場合、divmodアトムd
は[x / y、x%y]を生成します。各呼び出しにはy = 1があるため、結果は常に[x、0]になります。
最初のコールが始まるx = 1から得た、[1,0] 。d
整数でのみ動作するため、後続の呼び出しでベクトル化します。2番目の呼び出しは[[1、0]、[0、0]]を生成し、3番目の[[[1、0]、[0、0]]、[[0、0]、[0、0]]]を生成します5番目と最後の1つは、単一の1と31個のゼロを含む深さ5の配列です。
µ
もう一度新しいモナド連鎖を開始し、以前の配列が引数になります。フラット原子がF
単一のものと31ゼロの平坦なアレイを得、この配列をネストしません。最後L
に、結果の長さを取り、32を返します。
33
別のrepdigit、別のリテラル。
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
ラップアトムの各インスタンスは、引数zを[z]に変換します。初期戻り値が0の場合、34個のインスタンスすべてが一緒に[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 。最後に、深度アトムŒḊ
は結果の配列の最大深度を計算し、34を返します。
ẇɓæ«æ«æ«æ«æ«|æ«|
ウィンドウが存在する原子はẇ
、その引数(両方ともデフォルトの両方促進0にする)[0]、** [0] **の連続サブアレイとして発生した場合、その後のテスト[0] 。そうなので、1をẇ
返します。
ɓ
新しい二項チェーンを開始します。前のチェーンはniladicであったため、このチェーンの左右の引数はどちらも最初のチェーンの戻り値(1)と等しくなります。チェーンは、2つの異なるダイアディックアトム(左ビットシフト(æ«
)およびビット単位OR(|
))を使用します。
3つ以上のダイアドで始まるダイアディックチェーンは、チェーンの引数で最初のダイアドを最初に呼び出します。ここで、これは1 << 1 = 2を与えます。後続の6個のダイアドはペア(いわゆるfork)にグループ化され、右端のダイアドが最初にチェーンの引数で呼び出され、次に左端のものが前の戻り値で両側に呼び出されます。
のためにæ«æ«
、2 <<(1 << 1)= 2 << 2 = 8を取得します。次に、8 <<(1 << 1)= 8 << 2 = 32をæ«æ«
計算します。今、私たちを取得する| 32 (1 << 1)= 32 | 2 = 34。|æ«
最後に、末尾|
はフックのように機能し、前の戻り値を左引数として、チェーンの右引数を右引数として呼び出されます。これは34を返します| 1 = 35。
⁹ṚḢ²
2番目の引数がない場合、定数⁹
は256を保持します。リバース原子が促進256をアレイに[2、5、6] 、それが生成する逆転[6,5、2] 。次に、先頭の原子Ḣ
が最初の要素を抽出し、正方形の原子²
が**6²= 36 *を返します。
‘‘‘0‘‘‘‘‘‘‘
増分原子‘
によってその引数をインクリメント1、そう‘‘‘
初期戻り値ターン0に3。次の0は解析不能なniladです。つまり、チェーンにはまったく適合しません。その結果、前の戻り値(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を-_
計算します。ここで、リテラル-
は左引数を設定_
し、戻り値を右引数として使用します。次の9つのコピーは、戻り値から_
デフォルト引数-1を減算し、9を生成します。これは、プログラムの終了時に暗黙的に出力されます。
”(O
”(
は文字リテラルであり、順序アトムO
はUnicodeコードポイントを検索し、40を生成します。
41 – 47
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
3番目のコマンドライン引数がない場合、定数⁵
は10を保持します。unlength原子がḶ
特に0ベースの範囲を作成し、[0、...、9]引数の10の両側に、場所に繰り返し原子x
。後者は、その左の引数の要素をその右の引数の繰り返しと一致させ、各要素を対応する回数繰り返します。[0、...、9]の両方の左と右の引数として、我々はこのようになど、ゼロ、ゼロ、1 1、2つの補数を取得
アトムへのインデックスị
は、左の引数で指定されたインデックスで右の引数の要素を取得します。左引数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のみが表示されたままになります。Ṣ
⁽{ʂ%⁽{}
⁽
そして、それに続く2つの文字は数値リテラルを構成します。場合JとKは、ゼリーのコード・ページとで自分のコードポイントである(j、k)は<(124、250) 、我々は整数取得1001 + 250J + kは。コードのポイント'{' 、'}' 、及び'ʂ'がある123、125、及び167、そうにリテラル評価さを残し1001 + 250×123 + 167(= 31918)右一つに評価しながら、1001 + 250×123 + 125(= 31876)。
左の整数は右の整数の2倍よりも小さいため、結果は(…+ 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の場合、これは単に[[x、y]]を生成するためż
、引数1および0(暗黙的な引数)で呼び出されたこの特定は[[1、0]]を返します。二項のeval原子はv
、私は、文字列に左引数(数字と文字のみを含む)すべての平らな配列を回す、その後のプログラムの引数としてその右引数とモナドゼリープログラムなどの結果の文字列を評価します。["10"]以降リテラルのみで構成され、これはの正しい引数を無視し、v
単に[10]になります。
コピーは迅速©
に接続するv
レジスタにその結果をコピー。後でリコールアトム®
(nilad)が発生すると、レジスタから[10]がフェッチされます。
次の3つのżv
作業は、以前と同様に、[10]を[[10、0]に[100]に…… [10000]にマッピングします。オーダー原子ọ
その左引数がので、ここで、その右のいずれかで割り切れる何回試験は、それが順算出10(とフェッチ®
で)10000 = 10 4を得た、[4] 。
以下®
は解析不能なniladであるため、前の戻り値([4])がSTDOUTに出力され、niladの値(10)に置き換えられます。Ạ
次に適用して、1を生成します。(この時点で、niladの後にdyadが解析可能になるため、これが必要です。)
前と同様に、żvżvżv
現在の戻り値に3つのゼロを追加し、1を[1000]に変えます。最後に、ọ®
順計算10で1000年= 10 3、及び3は、プログラムが終了したときSTDOUTに出力されます。
44
さらに別の数字、さらに別のリテラル。
111111l11&K1111111Kl11&
何よりもまず、リテラル111111
は引数と初期戻り値を111111に設定します。の他の実行1
もリテラルです。
l
は対数 atomで、右の引数で指定された底に対する左の引数の対数を計算します。正しい引数11で111111を呼び出すと、ログ11 111111≈4.85が得られます。
言葉の原子はK
、数値/文字促進した後、スペースのリストを引数に参加し、Zをする[Z] 。ここでは、単にリンクの引数111111を[111111]に変換するために使用します。(ここでは配列は必要ありませんが、アイデンティティアトムが不足しています。)ビット単位のANDアトム&
は戻り値を両側に受け取り、必要に応じて整数にキャストし、ビット単位のANDを計算します。この特定のケースでは、[4.85&111111] = [4&111111] = [4]を返します。
以下1111111
は解析不可能なniladであるため、前の戻り値([4])がSTDOUTに出力され、niladの値(1111111)に置き換えられます。K
次に、この整数を[1111111]に変換します。(これは本当に必須ではありませんが、この時点でniladの後にdyadが解析可能になります。)
前と同様に、log 11 1111111≈5.81をl11
計算し、[5.81&111111] = [5&111111] = [5]を返します。&
,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ
これは、複数のユーザー定義リンクで構成される唯一のプログラムです。最後のリンクはメインリンクであり、プログラムの起動時に実行されます。残りのリンクはヘルパーリンクです。クイックはÇ
常に現在のリンクより上のリンクを参照し、単項で実行します。同様に、クイックはÑ
常に現在のリンクの下にあるリンクを参照し(ラップアラウンド)、それを単項的に実行します。
トップリンクから成る一対の原子,
-引数ターンダイアドのxとyとに[X、Y]と- 和原子S
-整数の引数促進モナドZに[Z]を加算することによって配列引数を低減します。リンク,SS
が整数引数nで呼び出されると、Σ[n、Σn] =Σ[n、n] = 2nを計算します。
中央のリンクは上記の原子、前述の迅速で構成さÇ
れ、重要でない原子Ị
生み出すモナド- 1の数値引数のためのzと1≤-1≤Zが、0他のすべてのために。最初の出力(2番目の入力)は常に重要ではないỊ
ため、整数引数nに 2回適用すると、基本的に1に置き換えられます。次に、この結果は(引数nで呼び出される)の戻り値とペアになり、結果のペアはで削減されます。合計で、計算しますỊ
Ç
S
Σ[(| n |≤1)≤1、2n] =Σ[1、2n] = 2n + 1。
これらの2つのヘルパーリンクを配置すると、メインリンクはその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が計算されます。