BASIC(ZX Spectrum)、スコア244(新しいスコア247)[これは不正行為ですか?]
スニペット1:
2356 PRINT PEEK (PEEK 23635+256*PEEK 23636+2)+256*PEEK (PEEK 23635+256*PEEK 23636+3)-56-66
スニペット2: :
スニペット3: REM
スニペット4-244:スニペット1、2、および3にないすべての文字を使用する単一文字スニペット。
説明
キャラクターズ
SpectrumではPRINT
、単一の文字(コード245)です。1つの用途をスニペット11種類の文字:2
、3
、5
、6
、+
、-
、*
、(
、)
、PRINT
およびPEEK
スペースは文字の一部であるとして何を参照してくださいPRINT
とPEEK
スペース自体が使用されていないので、。これらはコードに存在する唯一の数字であるため、行番号2356を指定することにしました。
文字13および14は使用できません。ことを意味スニペット2から244のために残さ243個の文字で始まる、がある:
とREM
エラーが発生するか、他の何かをするだろうコードを避けるために。
使い方
これが、この答えが本によるものかどうかわからない理由です。
23635は、16ビットシステム変数PROGのメモリ位置で、LHとして保存されます。(値は通常23755です。しかし、間違った結果が発生する場合は別として、この番号を直接使用すると、コードが短くなりますが、余分な数字がかかります。)PROGの値はメモリの場所ですプログラム自体が保存されている場所。最初の2バイトはHLとして保存されている行番号で、次の2バイトはLHとして保存されている行の長さです。それはプログラムが独自の行の長さを調べる方法ですので、適切なものを引く必要があります
キャラクターを保存する
数字の格納方法を考慮すると、スニペット1が1を生成するように、行が-114で終わっている可能性があります。しかし、余分な数字を使用したくなかったため、代わりに2桁の数字を2つ削除しました。 122へ。56と66はうまくいきました。
コードは、すべてのネストとPROG(PEEK 23635+256*PEEK 23636
)の値の2回の計算で少しbitいです。しかし、保存してから保存した値を使用すると、余分な文字/スニペットがかかります-行は次のように開始できます
2356 LET p=PEEK 23635+256*PEEK 23636: PRINT PEEK (s+2)...
4つの追加の文字を使用している:LET
、p
、=
と:
。
たぶん、これを設計して、すべての数字が1桁のみを使用して3つのスニペットを獲得する数字から計算されるようにします。
編集:
新しいスニペット1は次のとおりです(これは、Spectrum上で長い単一行がラップ表示される方法です。したがって、コードをテストする場合は、正しく入力したかどうかを確認するのに役立ちます)。
1111 PRINT +PEEK (PEEK (11111+11
111+1111+(1+1+1)*(111-11)+1+1)+(
111+111+11+11+11+1)*PEEK (11111+
11111+1111+(1+1+1)*(111+1-11))+1
+1)+(111+111+11+11+11+1)*PEEK (P
EEK (11111+11111+1111+(1+1+1)*(1
11-11)+1+1)+(111+111+11+11+11+1)
*PEEK (11111+11111+1111+(1+1+1)*
(111+1-11))+1+1+1)-111-111-111-1
11-111-111
を避けることで別のスニペットを得ることができ+
、ちょうど間に合わせます-
。私はそれを試すつもりはありません、これは試練の十分でした。