1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

ilasmでstack machineやってみた。
生成した日本語プログラムをcopilotに解説してもらった。

投入したプロンプト

次の日本語プログラムを解説してくれ

  数値 100 を積み
  変数 n に移動し
  数値 1 を積み
  変数 i に移動し
loop:
  変数 i を積み
  変数 n を積み
  比べて大なら bye へ飛ぶ
  変数 i を積み
  数値 15 を積み
  剰余し
  偽なら fb へ飛ぶ
  変数 i を積み
  数値 5 を積み
  剰余し
  偽なら b へ飛ぶ
  変数 i を積み
  数値 3 を積み
  剰余し
  偽なら f へ飛ぶ
  変数 i を積み
  数値印字し
  無条件で tugi へ飛ぶ
fb:
  文字列 "fizzbuzz" を積み
  無条件で print へ飛ぶ
b:
  文字列 "buzz" を積み
  無条件で print へ飛ぶ
f:
  文字列 "fizz" を積み
print:
  文字印字し
tugi:
  変数 i を積み
  数値 1 を積み
  足す
  変数 i に移動し
  無条件で loop へ飛ぶ
bye:
  終わり。


結果

このプログラムは、いわゆる「FizzBuzz」問題を解くためのものですね。簡単に解説すると、1から100までの数字を順に処理し、その数字が3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数なら「FizzBuzz」と表示し、それ以外の場合はその数字を表示します。

全体の流れを見てみましょう:

変数 n に100を設定し、変数 i に1を設定します。

ループ(loop ラベル)に入ります。

i を n と比較し、i が n より大きい場合はプログラムを終了します(bye ラベルに飛びます)。

i を15で割り、その剰余が0の場合は「FizzBuzz」(fb ラベル)を表示します。

それ以外の場合、i を5で割り、その剰余が0の場合は「Buzz」(b ラベル)を表示します。

さらに、i を3で割り、その剰余が0の場合は「Fizz」(f ラベル)を表示します。

上記条件に当てはまらない場合は、i をそのまま表示します。

i に1を足して、再びループ(loop ラベル)に戻ります。

これが「FizzBuzz」問題を解くための簡単なアルゴリズムです。質問や別のプログラムの解説が必要なら、どんどん聞いてください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?