mindの研究 その58

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

# 練習問題
mindでweb serverを書け。じゃんけんを実装せよ。


# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/085d7306-b4a6-a3f7-f79a-662014aed640.png)


# サンプルコード

```

乱数種値は　変数。 

簡易小数表示とは　（小数　→　・）
	５桁で　小数形式で表示すること。

一様乱数とは　関数　小数出力
	Ｙ２は　変数
	Ｙ１は　小数変数
	乱数種値を　Ｙ２に　入れる
	Ｙ２を　１３　左シフトし、　Ｙ２と　ＸＯＲし、　Ｙ２に　入れる
	Ｙ２を　１７　右シフトし、　Ｙ２と　ＸＯＲし、　Ｙ２に　入れる
	Ｙ２を　１５　左シフトし、　Ｙ２と　ＸＯＲし、　Ｙ２に　入れる
	Ｙ２を　乱数種値に　入れる
	Ｙ２を　絶対値を　小数化し　Ｙ１に　入れる
	Ｙ１を　2147483648.0で　ｆ割り　Ｙ１に　入れる
	Ｙ１をもどす
。

じゃんけんとは
　数1は　変数
　数2は　変数
　変換後は　文字列実体　長さ　2048
　変換後を　クリア
　数1に　入れ
　変換後に　「HTTP/1.1 200 OK」を　追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　変換後に　「Content-Type: text/html」を　追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　変換後に　「<html><head><meta charset='sjis'/></head><body><h1>server side mind</h1><form method='get' action='index.html'>」を　追加し
　変換後に　「入力：<input type='text' name='q' size='30'><input type='submit' value='送信'><br><textarea rows='15' cols='50'>」を　追加し
　一様乱数に　4.0を　f掛けて　整数化し　数2に　入れる
　数1を　数値表示し　数2を　数値表示し
　もし　数1が　0と　等しく　かつ　数2が　0と　等しい
　ならば
　　変換後に　「グーとグーで、あいこ」を　追加し
　つぎに
　もし　数1が　0と　等しく　かつ　数2が　1と　等しい
　ならば
　　変換後に　「グーとチョキで、あなたの勝ち」を　追加し
　つぎに
　もし　数1が　0と　等しく　かつ　数2が　2と　等しい
　ならば
　　変換後に　「グーとパーで、あなたの負け」を　追加し
　つぎに
　もし　数1が　1と　等しく　かつ　数2が　0と　等しい
　ならば
　　変換後に　「チョキとグーで、あなたの負け」を　追加し
　つぎに
　もし　数1が　1と　等しく　かつ　数2が　1と　等しい
　ならば
　　変換後に　「チョキとチョキで、あいこ」を　追加し
　つぎに
　もし　数1が　1と　等しく　かつ　数2が　2と　等しい
　ならば
　　変換後に　「チョキとパーで、あなたの勝ち」を　追加し
　つぎに
　もし　数1が　2と　等しく　かつ　数2が　0と　等しい
　ならば
　　変換後に　「パーとグーで、あなたの勝ち」を　追加し
　つぎに
　もし　数1が　2と　等しく　かつ　数2が　1と　等しい
　ならば
　　変換後に　「パーとチョキで、あなたの負け」を　追加し
　つぎに
　もし　数1が　2と　等しく　かつ　数2が　2と　等しい
　ならば
　　変換後に　「パーとパーで、あいこ」を　追加し
　つぎに
　変換後に　「</textarea></form></body></html>」を　追加し
　変換後を　返すこと
。

レスポンス0とは
　変換後は　文字列実体　長さ　2048
　変換後を　クリア
　変換後に　「HTTP/1.1 200 OK」を　追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　変換後に　「Content-Type: text/html」を　追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　変換後に　「<html><head><meta charset='sjis'/></head><body><h1>server side mind</h1><form method='get' action='index.html'>」を　追加し
　変換後に　「入力：<input type='text' name='q' size='30'><input type='submit' value='送信'><br><textarea rows='15' cols='50'>」を　追加し
　変換後に　「じゃんけん　　0, グー 1, チョキ  2, パー　　」を　追加し
　変換後に　「</textarea></form></body></html>」を　追加し
　変換後を　返すこと
。

レスポンス1とは
　変換後は　文字列実体　長さ　2048
　変換後を　クリア
　変換後に　「HTTP/1.1 404 Not Found」を　追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　変換後に　「Content-Type: text/html」を　追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　０DＨを　変換後に　一文字追加し
　０AＨを　変換後に　一文字追加し
　変換後に　「<html><head></head><body>」を　追加し
　変換後に　「<h1>404</h1>」を　追加し
　変換後に　「</body></html>」を　追加し
　変換後を　返すこと
。

メインとは
　ホスト名は　文字列
　ポート番号は　変数
　待ちソケットは　変数
　データソケットは　変数
　エラーコードは　変数
　文字列１は　文字列
　文字列2は　文字列
　単語1は　文字列
　単語2は　文字列
　20231224を　乱数種値に　入れる
　「localhost」を　ホスト名に　入れ
　40001を　ポート番号に　入れ
　ホスト名と　ポート番号と　１個で　ｌｉｓｔｅｎし　待ちソケットに　入れ
　エラー？
　ならば
　　エラー文字列で　重大エラー
　つぎに
　ここから
　　「start」を　一行表示する
　　待ちソケットで　ａｃｃｅｐｔし　データソケットに　入れ
　　エラー？
　　ならば
　　　「エラー：」を　エラー出力し　エラー文字列を　一行エラー出力し
　　　打ち切り
　　つぎに
　　ここから
　　　データソケットから　ハンドル指定で一行読み出し　文字列１に　入れる
　　　データ終り？
　　　ならば
　　　　「[EOF]クライアントが終了しました。」を　一行表示する
　　　　打ち切り
　　　つぎに
　　　文字列１から　単語切り出し　単語1に　入れ
　　　文字列１から　単語切り出し　単語2に　入れ
　　　もし　単語1が　「GET」に　等しい文字列
　　　ならば
　　　　「get」を　一行表示する

　　　　もし　単語2が　「/」に　等しい文字列
　　　　ならば
　　　　「/」を　一行表示する
　　　　レスポンス0を　文字列2に　入れ
　　　　つぎに

　　　　もし　単語2が　「/index.html?q=0」に　等しい文字列
　　　　ならば
　　　　「0」を　一行表示する
　　　　0をつみ　じゃんけんを　文字列2に　入れ
　　　　つぎに

　　　　もし　単語2が　「/index.html?q=1」に　等しい文字列
　　　　ならば
　　　　「1」を　一行表示する
　　　　1をつみ　じゃんけんを　文字列2に　入れ
　　　　つぎに

　　　　もし　単語2が　「/index.html?q=2」に　等しい文字列
　　　　ならば
　　　　「2」を　一行表示する
　　　　2をつみ　じゃんけんを　文字列2に　入れ
　　　　つぎに

　　　　文字列2を　データソケットに　ハンドル指定で一行書き込み
　　　　打ち切り
　　　つぎに
　　　もし　単語1が　「POST」に　等しい文字列
　　　ならば
　　　　「post」を　一行表示する
　　　　レスポンス1を　文字列2に　入れ
　　　　文字列2を　データソケットに　ハンドル指定で一行書き込み
　　　　打ち切り
　　　つぎに
　　　「データ ＝ 」を　表示し　文字列１を　一行表示し
　　繰り返し
　繰り返し
。





```


以上