友達と、その友達の友達と一緒に、秘密のプログラミングクラブを始めることにしました。みんながお互いのことを知っているわけではないので、相手がメンバーだとわかるための秘密の握手を考えることにしました。事情を知らない人には、このコードを解読されたくありません。
コードは、一人が1から31までの数字を言い、もう一人がそれを一連の動作に変える、という仕組みにしました。
課題は、1から31までの数を秘密の握手の一連の動作に変換することです。
動作の並びは、数を2進数に変換したときの右端から5桁を見て決めます。右端の桁から始めて、左へ進みます。
それぞれの位に対応する動作は次のとおりです。
00001 = wink
00010 = double blink
00100 = close your eyes
01000 = jump
10000 = Reverse the order of the operations in the secret handshake.
例として、数9を使ってみましょう。
1001です。winkです。これで最後の桁なので、最終的なコードは次のとおりです。
wink, jump
26という数は2進数で11010なので、次の動作になります。
したがって、26の秘密の握手は次のとおりです。
jump, double blink
2進数とは何か、どのように動くのかがよくわからない場合は、この2進数チュートリアルを見てみてください。
一連の動作を、null終端された文字列として出力します。区切りにはカンマとスペースを使います。
| レジスタ | 用途 | 型 | 説明 |
|---|---|---|---|
$a0 |
入力 | 整数 | 1から31までの数値 |
$a1 |
入力・出力 | アドレス |
null終端された出力文字列 |
$t0-9 |
一時的 | 任意 | 一時的な保存に使う |