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時間程度しかゲームで遊ぶ時間ないので、今はスプラを中心に遊んでいる感じ。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |