この課題では、私が作成した単純な言語のインタープリターを作成します。この言語は、1バイトのアキュムレーターAに基づいています。プログラムの開始時、A =0。これらは言語の指示です。
!
:反転
この命令は、単にアキュムレータのすべてのビットを反転します。すべてのゼロが1になり、すべてのゼロがゼロになります。シンプル!
>
:右シフト
この命令は、Aのすべてのビットを1つ右にシフトします。左端のビットはゼロになり、右端のビットは破棄されます。
<
:左シフト
この命令は、Aのすべてのビットを1桁左にシフトします。右端のビットはゼロになり、左端のビットは破棄されます。
@
:ナイブルを交換
この命令は、Aの上位4ビットを下位4ビットと交換します。たとえば、Aが01101010
で実行する場合、Aは次のよう@
になります10100110
。
____________________
| |
0110 1010 1010 0110
|_______|
それがすべての指示です!シンプルでしょ?
ルール
- プログラムは、最初に入力を1回受け入れる必要があります。これはコード行になります。これはインタラクティブなインタープリターではありません!入力を1回だけ受け入れることができ、その行が実行された後に開始にループバックする必要はありません。
- プログラムは、上記の入力を評価する必要があります。上記以外の文字はすべて無視されます。
- プログラムは、アキュムレータの最終値を10進数で出力する必要があります。
- 有効なプログラミング言語の通常の規則が適用されます。
- 標準の抜け穴は許可されていません。
- これはcode-golfであり、最小バイトカウントが優先されます。
以下は、提出物をテストするための小さなプログラムです。矢印の前にコードがあり、その後に予想される結果があります。
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
楽しい!
! -> 255
ここでバイトあたり8ビットを使用していると推測していますか?質問は明示的ではありません。