Takewhileを実装する


30

紹介とクレジット

今日は派手なプレリュードなし:を実装してくださいtakewhile

これのバリエーション(非自明なデータ構造)は、大学の関数型プログラミングコースでの課題でした。この課題は現在閉鎖されており、クラスで議論されており、ここに投稿する教授の許可があります(明示的に尋ねました)。

仕様

入力

入力は、正の整数のリスト(または言語の同等の概念)になります。

出力

出力は、正の整数のリスト(または言語の同等の概念)である必要があります。

何をすべきか?

あなたのタスクは、takewhile考慮中の数が偶数であるという述語を使用して実装することです(言語組み込みが許可されます)(テイクタイムに焦点を合わせるため)。

したがって、リストを最初から最後まで反復し、条件が(偶数)である間に出力リストにコピーし、条件を満たさない要素にヒットするとすぐに、操作と出力を中止します。 (ステップバイステップの例を以下に示します)。この高次機能は、takeWhile(takewhile)とも呼ばれます。

潜在的なコーナーケース

入力リストに比べて出力リストの順序は、例えば、変更することはできません[14,42,2]になってないかもしれません[42,14]

空のリストは有効な入出力です。

誰が勝ちますか?

これはコードゴルフなので、バイト単位の最短回答が勝ちです!

もちろん、標準ルールが適用されます。

テストベクター

[14, 42, 2324, 97090, 4080622, 171480372] -> [14, 42, 2324, 97090, 4080622, 171480372]
[42, 14, 42, 2324] -> [42, 14, 42, 2324]
[7,14,42] -> []
[] -> []
[171480372, 13, 14, 42] -> [171480372]
[42, 14, 42, 43, 41, 4080622, 171480372] -> [42, 14, 42]

段階的な例

Example Input: [42, 14, 42, 43, 41, 4080622, 171480372]

Consider first element: 42
42 is even (21*2)
Put 42 into output list, output list is now [42]

Consider second element: 14
14 is even (7*2)
Put 14 into output list, output list is now [42,14]

Consider third element: 42
42 is even (21*2)
Put 42 into output list, output list is now [42,14,42]

Consider fourth element: 43
43 is not even (2*21+1)
Drop 43 and return the current output list

return [42,14,42]

2
リストではなくイテレータを返しても大丈夫ですか?
DJMcMayhem

2
@DrGreenEg​​gsandIronMan私はあなたの関数が入力として出力を受け取らなければならないことを推測しています、それらが同じ形式であることを保証します。
mbomb007

@DrGreenEg​​gsandIronMan、サブリストを返すことは、出力形式でここで悪用されるべきではないと思います。(ただし、コードでこれを悪用するかどうかはあなた次第です)。Mbombの基準は、現在の課題に最も適切で互換性があるように見えるため、「少なくとも出力は有効な入力でなければなりません」。
SEJPM

回答:


28

Mathematica、18バイト

#~TakeWhile~EvenQ&

組み込みのないゴルフ言語によって3倍にbeatられているもう1つの素晴らしい組み込み...


3
Mathematicaにはいくつのビルトインがありますか?それはほとんど何のためのものを持っているかのようです。
エミグナ

35
@Emigna私は数えませんでしたが、インターネットのルール#110は、「存在する場合、Mathematicaが組み込まれています。」
マーティンエンダー

3
@MartinEnderインターネットのルール#110.5が残念です。「何らかの方法で文字列が含まれる場合、ルール#110の目的のために存在するとは見なされません。」
LegionMammal978

@ LegionMammal978回避策は、文字列を式の先頭にすることです:)
LLlAMnYP

26

Haskell、13バイト

fst.span even

span入力リストを、述語(-> even)がfalse である最初の要素の直前のリストのペアに分割します。fstペアの最初の要素を取ります。

代替バージョン、13バイト:

fst.break odd

breakはの反対ですspan。つまり、述語が真である最初の要素でリストを分割します。

もちろんあります

takeWhile even

しかし、それは14バイトです。


23

MATL、6バイト

toYs~)

オンラインでお試しください!

説明

t    % Input array implicitly. Duplicate
o    % Parity of each entry. Gives 0 for even entries, 1 for odd
Ys   % Cumulative sum
~    % Logical negate. Gives true for the first run of even entries, and then false
)    % Use this as logical index into the original array. Implicitly display

22
これは正常ですか、コードは笑顔で「おもちゃ」と言っていますか?
SEJPM

3
@SEJPM to~Y<)も動作しますが、私はこの方が好きです:
ルイスメンドー

13

六角形、19

2.}<@>%?<{>$"/\M!8;

読みやすい:

  2 . }
 < @ > %
? < { > $
 " / \ M
  ! 8 ;

オンラインでお試しください!

これはおそらく1〜2バイトでゴルフすることができますが、それはいくつかの真に独創的なレイアウトを必要とする可能性があります。

高レベルの説明

プログラムは主にこの擬似コードに従います。

while (read number is not zero) 
{
    if (number is even) 
        print number;
} 

STDINが空(ゼロを返す)になったときに、Hexagonyが数値を読み取ろうとする方法が悪用されます。このアプローチを考え出すのを手伝ってくれたMartinに感謝します。

完全な説明

Timwiの素晴らしい難解なIDEを手に入れるために、私はまだMonoをいじっていません実行することはしていないので、Martinに頼って役に立つ写真を提供してくれました!

最初に、Hexagonyの基本的な制御フローに関する小さな入門書。このプログラムで使用される唯一の命令である最初の命令ポインター(IP)は、六角形のソースコードの左上から始まり、右に向かって動き始めます。IPが六角形の端を出るたびに、六角形side_length - 1の中央に向かって行を移動します。このプログラムは辺の長さ3の六角形を使用しているため、これが発生するとIPは常に2行移動します。唯一の例外は、現在のメモリエッジの値に応じて、六角形の上部または下部に条件付きで移動する中央の行から移動する場合です。

条件について少し説明します。制御フローに関するHexagonyの条件は><及び六角形の中間エッジ。これらはすべて一定の規則に従います。現在のメモリエッジの値がゼロまたは負の制御フローが左に移動し、正の場合、制御は右に移動します。大括弧と小括弧はIPを60度の角度でリダイレクトし、六角形のエッジはIPがジャンプする行を制御します。

Hexagonyには、すべてのデータが無限の六角形グリッドの端に保存される特別なメモリモデルもあります。このプログラムは3つのエッジのみを使用します。1つは2を格納するため、もう1つは現在読み取られている数値用、2つを法とする数値用です。次のようになります。

Mod  \ / Input
      |
      2

プログラムの説明の各段階で、メモリのどこにいるのかを慎重に説明するつもりはありませんので、メモリの場所に混乱が生じた場合は、ここに戻ってください。

これらすべてが邪魔にならないので、実際の説明を始めることができます。まず、メモリの「2」エッジに2を入力し、次にノーオペレーションを実行して、メモリポインタを右に移動します(2.})。

次に、メインプログラムループを開始します。STDINから最初の数値を読み取り、条件付き(?<)にヒットします。STDINに数字が残っていない場合、これは現在のメモリエッジにゼロを読み込むため、左に曲がり@、プログラムを終了します。それ以外の場合は、ミラーで跳ね返り、メモリポインターを左後方に移動し、六角形の周りをラップして入力を2で割った余りを計算してから、別の条件(/"%>)を押します。

Odd Path

残りが1であった場合(つまり、数が奇数だった場合)、no-opを再度実行して、上の青いパスをたどって右に曲がり、六角形の下部に回り込んで、現在のエッジに10を掛けてから追加します8、2つのミラーで跳ね返り、同じ乗算と加算を再度行い、現在のエッジで188を取得し、六角形の最上部に折り返し、再びノーオペレーションを実行し、最後にプログラムを終了します(.8/\8.@)。この複雑な結果は幸運な事故でした。私はもともとはるかに単純なロジックを書いていましたが、ノーオペレーションを支持してそれを削除できることに気付きました。

Even Path

残りがゼロの場合、代わりに、上の赤い道をたどって左に曲がります。これにより、メモリポインターを左に移動し、そこに値(入力値)を数値として出力します。私たちが遭遇するミラーは、私たちが移動している方向のために無操作として機能します(77は正であるため、六角形の下部に向かって右に移動します。トランポリンがあるため、最初の命令をスキップします()。次に、現在のメモリエッジに10を乗算し、8を加算して778を取得します。次に、この値mod 256(10)をASCII文字として出力します。これはたまたま改行です。最後に、六角形を終了し、次の入力値で778をオーバーライドする最初に戻ります。{/!ます(次に、前からの入力値が既に正であるとテストされているため、1つの結果のみの条件付きで動作する六角形のエッジにヒットします。したがって、常に右に移動します(IPの方向を向いている場合) 。次に、入力を10倍して2を追加します。方向を変更し、大文字Mのascii値77で新しい値を折り返し、上書きします。次に、いくつかのミラーをヒットし、中央の端から出ます。トランポリン付きの六角形(2<M\>$!?


8
読みやすいそうです
タイラン

10

Pyth、13 9 7バイト

uPWs%R2

2(非常にトリッキー)バイトの@FryAmTheEggmanのクレジット!

説明:

u       Q    keep applying to input until invariant:
 PW          drop last element if...
   s%R2G     ...any one is odd, G is the argument originally given the value of input

ここでテストしてください


1
これは、変数の導入に関する正しい説明ではありません。G条件用s%R2Gと関数への引数用の2つが導入されるはずPです。
isaacg


8

パイソン2、43の 42バイト

def f(x):
 while"1'"in`map(bin,x)`:x.pop()

この関数は、引数を適切に変更します

本当に賢い方法で1バイトをゴルフしてくれた@xnorに感謝します!

Ideoneでテストします。


4
これはクレイジーですが"1'"in`map(bin,x)` 、Python 2のように奇妙な要素をチェックできると思います。
xnor16年

そりゃ素晴らしい。ありがとう!
デニス

8

エド、13

/[13579]$/,$d

実際のプログラマ標準テキストエディタを使用しているためです。

入力を各行で1つの整数として受け取ります。同じ形式で出力します。

これは、最初の奇数(奇数で終わる番号)を見つけ、その行からファイルの最後まで削除します。


ええと。それがそのプログラムの目的です。


6

Python、45 44バイト

f=lambda x:x and~x[0]%2*x and x[:1]+f(x[1:])

Ideoneでテストします。


awwは男...そして、私は万が一そこに行くと思った私が持っていた懸賞金を獲得
DJMcMayhem

1
2015年7月22日までに投稿された、制限のない純粋なコードゴルフの質問のみが対象です。
デニス

@DrGreenEg​​gsandIronMan 鉱山はずっとあなたのものよりも短いです。私は最初に私のものを投稿しました。:P
mbomb007

2
デニス、アウトゴルフ、と思っていただろう:)
shooqie

@ mbomb007それについて確かですか?
DJMcMayhem


5

05AB1E、8 7バイト

[DÉO_#¨

説明

[        # infinite loop start
 DÉO     # count odd numbers
    _    # push negative bool (turning 0->1, X->0)
     #   # if true (no odd numbers exist), break out of loop and implicitly print
      ¨  # else, remove last element from list

オンラインで試す

以前の8バイトソリューション

vyÈiyˆëq

説明

v         # for each y in input
 yÈi      # if y is even
    yˆ    # push y to global array
      ëq  # else terminate program
          # implicitly print global array

オンラインで試す


5

Brainf ***、263バイト

ここから少し抜粋しました

>>>>>>,[>>>>>>,]>++++[<++++++++>-]>>>>>+>>>>>>>++++[<++++++++>-]<<<<<<<[<<<<<<]>>>>>>[[>>>>>>>++++[<-------->-]<]<<<<<<[->>>+<<<]>>>[-<+<<+>>>]<>>+>+<<<[-[->]<]+>>>[>]<[-<]<[-]<-[<[<<<<<<]>>>>>>.>>>>>>[>[-]++++[<++++++++>-]<.>>>>>>]>++++[-<++++++++>]<.[-]]>>>>>>]

私は説明をしますが、これがどのように機能するのか、私にもわかりません。

スペースで区切られた数値(例2 432 1)として入力を期待します


BF ._。+1
TuxCrafting

おそらく、いくつかのロジック+>使用してチェーンをゴルフできますか?
Rɪᴋᴇʀ

チェーンの@EᴀsᴛᴇʀʟʏIʀᴋかなりの数はすでに(それ以外の場合はS「+」32の行の多くが存在することになる)golfedされている、と私はおそらくいくつかの作ることができる>のは、より効率的なが、私は今、十分にそれを理解していない
anOKsquirrel

そのため、メモ帳でコードを作成するときにコードをコメントする必要があります。:P
mbomb007


4

ラケット、22バイト

(λ(n)(takef n even?))

λ文字は2バイトとしてカウントされます。

私が見たコードゴルフの解答でラケットが使われるのを見たことがないので、少なくとも一度はしなければなりませんでした!


2
私はラケットでゴルフをしていました。

4

ラビリンス、14バイト

?:
"`#
"@%
\!;

入力と出力は、改行で区切られたリストです(原則として、入力では数字以外の区切り文字を使用できます)。

オンラインでお試しください!

これはおそらく、これまでに書いた中で最もコンパクトなラビリンスプログラムです。

興味深いことに、takewhile(odd)はるかに簡単です:

?:#
" %
\!/

説明

通常のラビリンス入門書:

  • メモリモデルはスタックであり(実際には2つありますが、このプログラムには1つだけ必要です)、任意の精度の整数を保持し、最初は(暗黙の)無限数のゼロを保持します。
  • 制御フローの指示はありません。代わりに、命令ポインタ(IP)の動きはコードのレイアウトによって決定されます(スペースは「壁」と見なされ、IPが通過することはできません)。通常、コードは迷路に似ていると想定されています.IPは直線の通路と曲がり角をたどりますが、ジャンクションに到達するたびに、IPの新しい方向が現在の状態に基づいて決定される条件として機能します。方向を選択するためのルールはこれに要約されます。スタックのトップがゼロの場合、IPは前進し続けます。上部が正の場合、IPは右になります。上部が負の場合、IPは左に曲がります。これらの方向のいずれかが壁でブロックされている場合、IPは代わりに反対方向を取ります。この手段は、そのプログラムなしすべてのコマンドがジャンクションとして機能するため、クリアコリドーは通常、作業するのが非常に困難です。このケースでこれがうまくいったという事実は、ちょっとした奇跡です。
  • IPは、読み取り順(?この場合)の最初の非スペース文字から始まり、東に移動します。

プログラムの主な流れは、境界の周りの単一ループです:

>v
^>v
^@v
^<<

偶然にも、私たちは、スタックの最上部が後にゼロであることを知っている!"IPが中心に向かって回転しないことが保証されるように。`そして%一方のIPは、中心に向かって移動するかもしれない条件文として使用されている@プログラムを終了し、またはそれを周囲に動かし続けるかもしれません。

ループ内のコードを見てみましょう。

?   Read decimal integer N from STDIN, or 0 at EOF.
:   Duplicate. Since this is just a corner, the IP always turns south.
`   Negate the copy of the input (i.e. multiply by 1). At EOF, the result
    is still zero and the IP keeps moving south into the @. Otherwise, the
    top of the stack is now negative, and the IP turns east.
#   Push the stack depth (i.e. 2). Again, this is a corner, and the IP
    is forced to turn south.
%   Computer (-N % 2), which is identical to (N % 2) to determine the
    parity of the input. If input was odd, this gives 1, and the IP turns
    west into the @. Otherwise, the result is 0 and the IP keeps moving
    south, continuing the loop.
;   Discard the 0. This is a corner, so the IP is forced to turn west.
!   Print (and discard) N. The top of the stack is now one of the implicit
    zeros at the bottom, so the IP keeps moving west.
\   Print a linefeed. The IP is forced to turn north in the corner.
""  Two no-ops. The top of the stack is still zero, so the IP keeps moving north.

そして、ループは最初からやり直します。

なぜtakewhile(odd)これほど単純なのかという疑問が生じます。2つの理由があります。

  • EOFは0(偶数)として返されるため、別途EOFチェックを行う必要はありません。とにかくリストはその時点で切断されます。
  • とき今、私たちは終了したいN % 2です0(とは対照的に、1我々は単に他のコピーを分割できる手段の代わりに、条件付き制御の流れ)NによってN % 2、入力が奇数である場合にだけ葉:N私たちは、さえを処分しましたN % 2(「我々はドンので、 t need ;)が、入力が偶数の場合、(サイレント)ゼロ除算エラーでプログラムが終了します。

したがって、他のコードは、分岐をまったく許可しない単純なループです。


3

Brachylog19 16バイト

hH:2%0、?b&〜b.hH; []。

s.:Mc?,.:{:2%0}a

説明

s.                 Output is an ordered subset of Input
  :Mc?,            The concatenation of Output with a list M is Input
       .:{:2%0}a   All elements of Output are even

今日、私はきちんとしたトリック(19バイトの回答で使用されました)を学びました:リストの先頭に要素を追加する~b.hHよりも短いです :[H]rc.。最初のものは「出力は先頭に余分な項目がある結果であり、出力の最初の項目はHであるのに対して、もう1つは「出力は連結[[H], Result]」です。


3

J、10バイト

{.~2&|i.1:

説明

{.~2&|i.1:  Input: s
   2&|      Take each value in s mod 2
      i.1:  Find the index of the first 1
{.~         Take that many values from s and return

1{.2&|<;._2]興味深い(より長い)
リーキー修道女

$代わりに使用{.
-FrownyFrog

3

Python、41バイト

lambda l:l[:[x%2for x in l+[1]].index(1)]

l奇数の最初の出現のインデックスまで切り捨てます。インデックスは1、値modulo でa を探すことで見つけられます2。奇数が見つからないように保護するために、a 1が最後に付けられます。



3

CJam、11バイト

@Dennisに2つの修正と1バイトのオフをありがとう!

{1+_2f%1#<}

これは、スタック上の入力配列を期待し、スタック上の出力配列を残すコードブロック(関数と同等。デフォルトで許可されています)です。

オンラインでお試しください!

説明

{         }    e# define code block
 1+            e# attach 1 at the end of the array
   _           e# duplicate
    2f%        e# modulo 2 of each entry
       1#      e# find index of first occurrence of 1
         <     e# slice before

3

網膜、17バイト

 ?\d*[13579]\b.*

後続の改行は重要です。入力と出力はスペースで区切られたリストです。

オンラインでお試しください!

これは単純な正規表現の置換であり、最初の奇数(つまり、奇数で終わる数字)と一致し、可能であれば、その前のスペースとその後のすべてに一致し、空の文字列、つまりそこからのすべての要素に置き換えます以降は入力から削除されます。

Leaky Nunが指摘しているように、リストをバイナリで取得すると、6バイトを節約できますが、少しチートですので、おそらく10進数バージョンのカウントを続けます。

 ?\d*1\b.*


リストをバイナリで取得できますか?
リーキー修道女

3

JavaScript(Firefox 30-57)、30バイト

a=>[for(x of a)if(!(a|=x&1))x]

2

V、13バイト

íä*[13579]¾.*

オンラインでお試しください!

説明:

í              "search for, on every line
 ä*            "Any number of digits
   [13579]     "Followed by an odd digit
          ¾    "Then the end of a word,
           .*  "Followed by anything
               "(implicit) and replace it with nothing.

便利なことに、同じコードですべてのテストケースを同時に検証できます。


2

Dyalog APL、11 バイト

{⍵/⍨∧\~2|⍵}

2| 2で除算した除算余り

~ 否定する

∧\ ANDスキャン(最初の0からオフになります)

/⍨ どこを選択する


2

ルビー、25バイト

->a{a.take_while &:even?}

負けると思う...


できます->a{a.take_while &:even?}か、少なくともできます->a{a.take_while(&:even?)}か?
マーティンエンダー

@MartinEnderありがとう 私はそのようなものを探していましたが、ルビーのゴルフ構文に精通していないと思います。
メガトム

2

パイク、8バイト

0+2L%fhO

通訳者を修正、他のリンクを使用

split_at関数が変更を含むことを除いてDennisのメソッドを使用します-おそらくバグ

または、バグ修正、7バイト

2L%1R@<

ここで試してみてください!

2L%     -   map(%2, input)
   1R@  -  ^.index(1)
      < - input[:^]

または、2回目のバグ修正後、6バイト

2L%fhO

ここで試してみてください!

説明:

2L%    -   map(%2, input)
   f   -  split_at(input, ^)
    hO - ^[0][:-1]

2

GolfScript、11バイト

これは、文字列化されたGolfScript配列リテラル(など[28 14 7 0])を読み取り、最初の奇数の要素とそれが削除された後のすべてを含む同じ配列を出力する完全なGolfScriptプログラムです。

~1\{~&.},p;

オンラインでお試しください。 (また:テストハーネス付きの拡張バージョン。

コメント付きのゴルフバージョン:

~     # evaluate input
1\    # push the number 1 onto the stack and move it under then input array
{     # start of loop body
  ~   #  bitwise negate the input number (making odd numbers even and vice versa)
  &   #  take bitwise AND of input and the saved number (0 or 1) on stack 
  .   #  duplicate result; filter loop will pop off the duplicate
},    # run loop above over input array, select elements for which it returns true
p     # stringify and print filtered array
;     # pop the number 0/1 off the stack

このソリューションはGolfScriptに基づいています { },フィルター演算子にフィルター演算子は、配列の各要素でコードブロックの内容を実行し、ブロック内のコードがtrue(つまりゼロ以外)を返す配列の要素を選択しますスタックのトップ。

したがって、たとえば、{1&},配列内のすべての奇数を選択し、すべての偶数{~1&},を選択します。課題は、最初の奇数が見つかるまで偶数を選択するフィルターを作成することですを選択し、その後、数値をまったく選択しないです。

私が使用した解決策は、定数ビットマスク1(各入力番号の最​​下位ビットを抽出するために使用)を前のフィルターループ反復の結果(0または1)を格納するスタック上の変数に置き換えることです(初期化されますループの前に1)。したがって、フィルターが1回0を返すとすぐに、ビットマスクも0に設定され、フィルターが再び1を返すことがなくなります。


2

第四に、114バイト

Forthには実際にはリストがありません。Forthで一般的なように、パラメーターは逆の順序でスタックにプッシュする必要があります。結果は同じ順序でスタックに残されます。これは何らかの理由でIdeoneでは機能しませんが、replでは機能します。新しい行は、ある種のあいまいさを取り除くために必要ですか?

: D DEPTH ;
: f D IF 1 D 1 DO D 1- ROLL LOOP D 0 DO I PICK 2 MOD IF D I LEAVE THEN LOOP
DO I ROLL DROP LOOP THEN ;

オンラインで試す

Ungolfed、コメント付き:

: f DEPTH IF                                ( if stack not empty )
        1 DEPTH 1 DO DEPTH 1- ROLL LOOP     ( put 1 on bottom of stack )
        DEPTH 0 DO                          ( loop over entire stack )
            I PICK 2 MOD IF                 ( if stack[i] is odd )
                DEPTH I LEAVE               ( put range and exit loop )
            THEN
        LOOP
        DO I ROLL                           ( roll eyes )
            DROP
        LOOP                                ( iterate that range and remove )
    THEN
;

このプログラム(以前の試み)は、奇数になるまで結果を出力します。残った(取られなかった)すべてがスタックに残されます。

: f DEPTH IF BEGIN DUP 2 MOD DUP 1- IF SWAP . THEN UNTIL THEN ;

偶数の整数のみの場合は失敗します


5
これを終えた後、私は私の朝食が寒かったことに気づいた。:(
mbomb007

あまりにも頻繁に、テーブルでゴルフをした後、夕食が冷たく感じます。おそらくFactorを使用すると、生産性とゴルフの生産性が同時に向上しますか?:D

@c PPCGのコード開発はオンラインIDEで行います。しかし、Forthを使用するのは既に知っているからです。頭の中でスタックを管理するのは難しいだけです。MinecraftのmodがMineOSというタイトルのForthのバージョンを実行するレッドストーンコンピューターを追加したため、最初にForthを学びました。
mbomb007

2

Befunge、35バイト

このコードは、0〜65535の数値を処理します

1&:v
v-1_@#:@#<
>\:&:2%|
 \+1p4\< ^

入力フォーマット:

number_of_values    values(separated by a space)

プロセスの最後に値を表示するバージョンは次のとおりです。

1&:v>::   v                >00g1+:4g.v
v-1_^#:>#<>$$\$1-:10p000p0-| -g01p00:<
>\:&:2%|                   @
 \+1p4\< ^

ここでコードをテストできますが、この解釈では次のように指定されているため、末尾にスペースを含む末尾の行を追加する必要があります。

«コードトーラスは、初期プログラムと同じ大きさです。データがコードの終わりを超えて配置される場合、さらに行または末尾のスペースを挿入します。»

バイトカウント
nb でこの末尾をカウントしなかったため、これが受け入れられるかどうかはわかりません。 コードに数値を格納しているため、インタープリターはこのプログラムを正しい状態で2回実行させないようです。方法。リロードする必要があります。


仕組み: どうやって インタープリターは矢印に従い、「#」を横切るときに命令をスキップします

灰色の点はテストであり、赤い線は不要な変数をスタックから削除します

上記のインタープリターでhereを使用すると、保存された値は、その表現を使用してコードに表示されます(形式がわかりません)。はい、Befungeは非常に反射的な言語です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.