2017年09月16日の日記です


続・ヒューマンリソースマシーン  2017-09-16 17:00:13  コンピュータ

先日の続き。


Switch のヒューマン・リソース・マシーンで遊んでみた。

アセンブラで、課題のプログラムを作るゲーム。


購入して3日で全問題を「とりあえず」解き終わった。


1日目は2時間半くらい遊んでしまったけど、翌日、翌々日は1時間程度しかやってない。

5時間弱で全部解けた、ということになるのかな。その程度のボリューム。


#夜子供が寝た後にゲームをしている。

 妻もスプラトゥーン2を遊びたいので、1時間程度で交代する約束。


5時間というのは僕がアセンブラ経験があるからで、プログラム経験があってもアセンブラ経験がない人は、もう少し時間がかかるだろう。

世間的には、エンディングまで6~8時間程度、ということになっているようだ。


エンディングは、2日目に見ている。

最後の問題はソートアルゴリズムだったのだけど、1回目の正答でコードサイズ・速度共に規定をクリアした。

ささやかながら自慢。




中学生の長男が興味を持ち、遊び始めた。


Scratch はやっているから、プログラムをすることには抵抗がないようだ。


命令が少なすぎて、パズル的に面白いと感じているようだ。

これが「アセンブラ」と呼ばれるもので、コンピューターは本来この程度の命令で動いているのだ、と教えた。


#まぁ、前回も書いたがヒューマン・リソース・マシーンでのアセンブラは、1960年代のコンピューターのようだ。

 命令が少なすぎ、サブルーチンも作れない。現代のアセンブラはもっと多くの命令を使える。

 しかし、この程度が「基本」だということは変わらない。


ついでに、ファミコン時代のゲームはアセンブラで作られ、CPU 速度も遅かったので、コードサイズや実行速度を気にしなくてはならなかったことも話す。


この程度の命令でゲームを作る、というのは想像もつかないようだが、少し興味はあるようだ。




さて、ヒューマン・リソース・マシーンは、1つの課題を解き終えると次の課題に進めるようになっている。

でも、時々分岐がある。エンディングに向かって進むルートと、行き止まりだけど上級者課題に挑むルート。


エンディングを見た時点で、最後の分岐の上級者課題の最後の問題を解いていなかった。

この課題、ステージの最初に「難しいからやらなくていいよ」って言われる。

だから後回しにして、先にエンディングを見た。


3日目にこの課題に挑む。


与えられた数値を素因数分解する。


割り算は使えないし、当然「素数列」のデータもない。

基本的にメモリ同士の足し算引き算と、+1 、-1 のみ。


データをあらかじめ持たせる、なんてこともできず、使える数値は 0 だけ。

条件分岐も、数値が 0 の時と、負の時の2種類のみ。



とりあえずクリアはしたが、コードサイズ・速度とも規定に達していない。

今考えると、大きな無駄があったことに気付いているが、まだ改良に手を付けていない。


#配列が使えるもので、つい「答えをいったん配列に入れる」プログラムにしてしまった。

 求められているのは、答えを出力することなので、配列に入れずに直接出力するだけでも、速度・コードサイズ共に大きく改善する。



素因数分解をまだ改良していないのは、途中の課題にもまだ速度・コードサイズが規定に達していないものがあるから。


途中までは一発で両方を満たすプログラムを作っていた。

途中からは課題が難しくなってくるので、まずはクリアしてから改良。

さらに進むと、両者を同時に満たすプログラムは作れなくなるので、個別にクリアしていく。


でも、いくつかの課題はその時に改良が思いつかず、残されたままになっている。

それを、初期の課題から順に少しづつクリアして行っている。


素因数分解の改良は最後の楽しみだ。


といっても、とりあえず全部の問題を終了はしたし、ゆっくりやっていく予定。


#スプラトゥーン2も遊びたい。ゼルダもまだ終わらせてない。

 最初に書いたけど、毎日1時間程度しかゲームで遊ぶ時間ないので、今はスプラを中心に遊んでいる感じ。




同じテーマの日記(最近の一覧)

コンピュータ

別年同日の日記

06年 成長記録

16年 トヨタとセガとドリームキャスト


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -