LoginSignup
3
2

概要

mindが、謎なので調べてみた。
練習問題やってみた。

練習問題

mindで、オセロを書け。

サンプルコード

banは 64個の 変数。

盤表示とは
 数1は 変数
 数2は 変数
 8で 回数指定して
  回数を 数1に 入れ
  8で 回数指定して
   数1に 8を 掛けて 回数を 加えて 8を 引いて 数2に 入れ
   もし ban(数2)が 2に 等しい
   ならば
    「o 」を 表示し
   つぎに
   もし ban(数2)が 1に 等しい
   ならば
    「_ 」を 表示し
   つぎに
   もし ban(数2)が 0に 等しい
   ならば
    「x 」を 表示し
   つぎに
  繰り返し
  改行し
 繰り返し
。

移動可とは (位置、方向 → 結果)
 数1は 変数
 数2は 変数
 数3は 変数
 数4は 変数
 結果は 変数
 数2に 入れ
 数1に 入れ
 数1を 1を 引き 数1に 入れ
 数1を 8で 割った余りを 数3に 入れ
 数1を 8で 割り 数4に 入れ
 結果に 0を 入れ
 もし 数3が 0に 等しく かつ 数2が -9に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数3が 0に 等しく かつ 数2が -1に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数3が 0に 等しく かつ 数2が 7に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数3が 7に 等しく かつ 数2が -7に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数3が 7に 等しく かつ 数2が 1に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数3が 7に 等しく かつ 数2が 9に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数4が 0に 等しく かつ 数2が -9に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数4が 0に 等しく かつ 数2が -8に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数4が 0に 等しく かつ 数2が -7に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数4が 7に 等しく かつ 数2が 7に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数4が 7に 等しく かつ 数2が 8に 等しい ならば
  結果に 1を 入れ
 つぎに
 もし 数4が 7に 等しく かつ 数2が 9に 等しい ならば
  結果に 1を 入れ
 つぎに
 結果を 返す
。

テストとは (位置、色 → 結果)
 数1は 変数
 数2は 変数
 数3は 変数
 数4は 変数
 数5は 変数
 数6は 変数
 数7は 変数
 数8は 変数
 数9は 変数
 結果は 変数
 dirは 8個の 変数
 数2に 入れ
 数1に 入れ
 dir(1)に -9を 入れ
 dir(2)に -8を 入れ
 dir(3)に -7を 入れ
 dir(4)に -1を 入れ
 dir(5)に 1を 入れ
 dir(6)に 7を 入れ
 dir(7)に 8を 入れ
 dir(8)に 9を 入れ
 結果に 0を 入れ
 数7に 0を 入れ
 もし 数2が 0に 等しい
 ならば
  数7に 2を 入れ
 つぎに
 もし ban(数1)が 1に 等しい
 ならば
  8を 回数指定して
   回数を 数3に 入れ
   数4に 数1を 入れ
   数6に dir(数3)を 入れ
   数8に 0を 入れ
   ここから
    数4と 数6で 移動可し 数5に 入れ
    もし 数5が 1に 等しい
    ならば
     数8に 0を 入れ
     打ち切り
    つぎに
    数4に 数6を 加え 数4に 入れ
    もし ban(数4)が 1に 等しい
    ならば
     数8に 0を 入れ
     打ち切り
    つぎに
    もし ban(数4)が 数7に 等しい
    ならば
     数8に 1を 加え 数8に 入れ
    つぎに
    もし ban(数4)が 数2に 等しい
    ならば
     もし 数8が 0より 大きい
     ならば
      打ち切り
     さもなければ
      数8に 0を 入れ
      打ち切り
     つぎに
    つぎに
   繰り返す
   もし 数8が 0より 大きい
   ならば
    結果に 1を 入れ
    数4に 数1を 入れ
    数6に dir(数3)を 入れ
    数8に 0を 入れ
    ここから
     数4と 数6で 移動可し 数5に 入れ
     もし 数5が 1に 等しい
     ならば
      数8に 0を 入れ
      打ち切り
     つぎに
     ban(数4)に 数2を 入れ
     数4に 数6を 加え 数4に 入れ
     もし ban(数4)が 1に 等しい
     ならば
      数8に 0を 入れ
      打ち切り
     つぎに
     もし ban(数4)が 数7に 等しい
     ならば
      数8に 1を 加え 数8に 入れ
     つぎに
     もし ban(数4)が 数2に 等しい
     ならば
      もし 数8が 0より 大きい
      ならば
       打ち切り
      さもなければ
       数8に 0を 入れ
       打ち切り
      つぎに
     つぎに
    繰り返す
   つぎに
  繰り返す
 つぎに
 結果を 返す
。

指すとは
 数1は 変数
 数2は 変数
 sujiは 60個の 変数
 suji(1)に 0を 入れ
 suji(2)に 7を 入れ
 suji(3)に 56を 入れ
 suji(4)に 63を 入れ
 suji(5)に 18を 入れ
 suji(6)に 21を 入れ
 suji(7)に 42を 入れ
 suji(8)に 45を 入れ
 suji(9)に 2を 入れ
 suji(10)に 16を 入れ
 suji(11)に 5を 入れ
 suji(12)に 23を 入れ
 suji(13)に 40を 入れ
 suji(14)に 58を 入れ
 suji(15)に 47を 入れ
 suji(16)に 61を 入れ
 suji(17)に 3を 入れ
 suji(18)に 4を 入れ
 suji(19)に 11を 入れ
 suji(20)に 12を 入れ
 suji(21)に 19を 入れ
 suji(22)に 20を 入れ
 suji(23)に 24を 入れ
 suji(24)に 25を 入れ
 suji(25)に 26を 入れ
 suji(26)に 32を 入れ
 suji(27)に 33を 入れ
 suji(28)に 34を 入れ
 suji(29)に 29を 入れ
 suji(30)に 30を 入れ
 suji(31)に 31を 入れ
 suji(32)に 37を 入れ
 suji(33)に 38を 入れ
 suji(34)に 39を 入れ
 suji(35)に 43を 入れ
 suji(36)に 44を 入れ
 suji(37)に 51を 入れ
 suji(38)に 52を 入れ
 suji(39)に 59を 入れ
 suji(40)に 60を 入れ
 suji(41)に 1を 入れ
 suji(42)に 8を 入れ
 suji(43)に 9を 入れ
 suji(44)に 10を 入れ
 suji(45)に 17を 入れ
 suji(46)に 6を 入れ
 suji(47)に 13を 入れ
 suji(48)に 14を 入れ
 suji(49)に 15を 入れ
 suji(50)に 22を 入れ
 suji(51)に 41を 入れ
 suji(52)に 48を 入れ
 suji(53)に 49を 入れ
 suji(54)に 50を 入れ
 suji(55)に 57を 入れ
 suji(56)に 46を 入れ
 suji(57)に 53を 入れ
 suji(58)に 54を 入れ
 suji(59)に 55を 入れ
 suji(60)に 62を 入れ
 60で 回数指定して
  suji(回数)を 数1に 入れ
  数1に 1を 加え 数1に 入れ
  数1と 2で テストし 数2に 入れ
  もし 数2が 0より 大きい
  ならば
   打ち切り
  つぎに
 繰り返す
 数1を 返す
。

メインとは
 数1は 変数
 数2は 変数
 数3は 変数
 数4は 変数
 64で 回数指定して
  ban(回数)に 1を 入れ
  もし 回数が 28に 等しい
  ならば
   ban(28)に 0を 入れ
  つぎに
  もし 回数が 29に 等しい
  ならば
   ban(29)に 2を 入れ
  つぎに
  もし 回数が 36に 等しい
  ならば
   ban(36)に 2を 入れ
  つぎに
  もし 回数が 37に 等しい
  ならば
   ban(37)に 0を 入れ
  つぎに
 繰り返し
 盤表示
 「あなたは、xです。」と 一行表示し
 ここから
  「YX入力 」と 表示し 数値入力し 数1に 入れ
  数1を 10で 割った余りを 数2に 入れ
  数1を 10で 割り 8を 掛けて 数2を 加えて 8を 引いて 数1に 入れ
  数1と 0で テストし 数4に 入れ
  もし 数4が 0に 等しい
  ならば
   「置けません。」を 表示し
   もう一度
  つぎに
  盤表示
  指す 数3に 入れ
  数3を 8で 割った余りを 数2に 入れ
  数3を 8で 割り 10を 掛けて 数2を 加えて 10を 加えて 数3に 入れ
  数4を 数値入力し
  数3を 数値表示し 改行し
  盤表示
 繰り返し
。





実行結果

>osero
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ x o _ _ _
_ _ _ o x _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
あなたは、xです。
YX入力 35
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ x _ _ _
_ _ _ x x _ _ _
_ _ _ o x _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _

36
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ x o _ _
_ _ _ x o _ _ _
_ _ _ o x _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
YX入力 

以上。

3
2
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
3
2