NLEの詳しい仕様
をテンプレートにして作成
[
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
メニュー
]
開始行:
*NLEの詳しい仕様 [#se575de9]
NLEとは''Numerical Limit Exceed''の略. 日本語にすると, 「...
数値の制限とは, ルール説明において
> 絶対値が255を超える数値を扱うことは出来ません。
として説明されている部分です. ~
どのようなコードが, どのようなタイミングでNLE判定を食うか...
なお, Herbert EditorはNLE判定までは本家と同じ実装がされて...
**256以上の数値が呼び出された瞬間 [#l12ab0fd]
NLEの基本は, 256以上の数値が呼び出されることです.
a(T):sa(T+T)
a(1)
とすると, a(128+128)が呼び出された時点でNLEします.
b(T):sb(256-T-T)
b(1)
とすると,
> b(1) = sb(254) = ssb(-252) = ss
となりそうですが, b(256-T-T)というコードをプログラム側で...
まず「256」「T」「T」という数値を読み取るために?NLEにな...
c(T):sc(255+1-T-T)
c(1)
d(T):sd(256)
sss
などのコードはNLEにならずに実行できます. 前者は, 「255」...
一気に「255+1-T-T」を計算し, その数値に対してNLE判定を行...
後者は定義したもの実行しておらず, 定義するだけならNLE判定...
**ルールのうそ? [#ef922fbf]
数値の制限として, ルールに
> 絶対値が255を超える数値を扱うことは出来ません。
という記述があることは既に述べた通りです. しかし,
a(T):sa(1-T-T)
a(255)
というコードはNLEせずに実行できるようです. ~
どうやら, 関数の引数が負になった場合, 「0以下のときの処理...
優先されるようですね.
**優先順位は左から [#y75732d3]
数値が256以上になるにもかかわらず, NLE判定をくぐり抜ける...
a(A,B):sa(A-1,B+1)
a(1,255)
これを実行すると, a(0,256)と256の数値が現れますが, NLEに...
「0以下の数値なので何もしない」という処理がNLEよりも優先...
同じようでも
a(A,B):sa(A+1,B-1)
a(255,1)
とすると, 今回はa(256,0)と0以下の数値が現れるにもかかわら...
どうやら, 「0以下ならその関数は無視する」「256以上ならNLE...
''左側の引数から順番に''している影響だと思われます. ~
非常に些細な差ですが, この差が運命を分けたコードもあるよ...
一応知っておくにこしたことはないでしょう.
**謎の一歩 [#e557a7d6]
最後に不思議な現象を紹介しておきましょう.
a(T):ssa(T+1)ssss
a(255)
このコード, ss動いた直後にNLE判定で停止..するかと思いきや...
a(T):ssa(T+1)rsss
a(255)
なら, ssrまで実行されます. どうやら, NLE判定が出ても1歩は...
「実行されるけど, 回収してもClearにならないんだろ?」と思...
''NLE宣言された次の1歩''でちょうどClearした場合, 正常なス...
ロケ地:[[Problem 0545]].
a(T):a(256)s
a(1)
b(T):sb(T+1)
llsllb(255)b(255)
こんなのがまともな更新に役立つとはあまり思えませんが.
どうもこの現象はテクニックというよりはバグの1種という気も...
以上, あまり役に立たないことばかりでしたが, NLEについてma...
ほかに何か面白い現象がありましたら教えてください♪
終了行:
*NLEの詳しい仕様 [#se575de9]
NLEとは''Numerical Limit Exceed''の略. 日本語にすると, 「...
数値の制限とは, ルール説明において
> 絶対値が255を超える数値を扱うことは出来ません。
として説明されている部分です. ~
どのようなコードが, どのようなタイミングでNLE判定を食うか...
なお, Herbert EditorはNLE判定までは本家と同じ実装がされて...
**256以上の数値が呼び出された瞬間 [#l12ab0fd]
NLEの基本は, 256以上の数値が呼び出されることです.
a(T):sa(T+T)
a(1)
とすると, a(128+128)が呼び出された時点でNLEします.
b(T):sb(256-T-T)
b(1)
とすると,
> b(1) = sb(254) = ssb(-252) = ss
となりそうですが, b(256-T-T)というコードをプログラム側で...
まず「256」「T」「T」という数値を読み取るために?NLEにな...
c(T):sc(255+1-T-T)
c(1)
d(T):sd(256)
sss
などのコードはNLEにならずに実行できます. 前者は, 「255」...
一気に「255+1-T-T」を計算し, その数値に対してNLE判定を行...
後者は定義したもの実行しておらず, 定義するだけならNLE判定...
**ルールのうそ? [#ef922fbf]
数値の制限として, ルールに
> 絶対値が255を超える数値を扱うことは出来ません。
という記述があることは既に述べた通りです. しかし,
a(T):sa(1-T-T)
a(255)
というコードはNLEせずに実行できるようです. ~
どうやら, 関数の引数が負になった場合, 「0以下のときの処理...
優先されるようですね.
**優先順位は左から [#y75732d3]
数値が256以上になるにもかかわらず, NLE判定をくぐり抜ける...
a(A,B):sa(A-1,B+1)
a(1,255)
これを実行すると, a(0,256)と256の数値が現れますが, NLEに...
「0以下の数値なので何もしない」という処理がNLEよりも優先...
同じようでも
a(A,B):sa(A+1,B-1)
a(255,1)
とすると, 今回はa(256,0)と0以下の数値が現れるにもかかわら...
どうやら, 「0以下ならその関数は無視する」「256以上ならNLE...
''左側の引数から順番に''している影響だと思われます. ~
非常に些細な差ですが, この差が運命を分けたコードもあるよ...
一応知っておくにこしたことはないでしょう.
**謎の一歩 [#e557a7d6]
最後に不思議な現象を紹介しておきましょう.
a(T):ssa(T+1)ssss
a(255)
このコード, ss動いた直後にNLE判定で停止..するかと思いきや...
a(T):ssa(T+1)rsss
a(255)
なら, ssrまで実行されます. どうやら, NLE判定が出ても1歩は...
「実行されるけど, 回収してもClearにならないんだろ?」と思...
''NLE宣言された次の1歩''でちょうどClearした場合, 正常なス...
ロケ地:[[Problem 0545]].
a(T):a(256)s
a(1)
b(T):sb(T+1)
llsllb(255)b(255)
こんなのがまともな更新に役立つとはあまり思えませんが.
どうもこの現象はテクニックというよりはバグの1種という気も...
以上, あまり役に立たないことばかりでしたが, NLEについてma...
ほかに何か面白い現象がありましたら教えてください♪
ページ名: