福野泰介の一日一創 - create every day

JavaScriptとIchigoJam BASICで実装する、uuencode!エチオピア・ブルンジ経由、ルワンダ入り

2017/10/15
#IchigoJam #js #africa 

アフリカITツアー、初日。

エチオピア到着


エチオピアのローカルフード、インジェラ(ラム肉セットバージョン)
チョコ風味なクレープのようで、予想を反する酸っぱさがおもしろい!ラムを巻いて食べる
辛味のソースをもらって付けるとグッド!


エチオピア発ルワンダ行きの飛行機は、ブルンジにも経由。間違って降りてしまわないよう注意!


ルワンダ、キガリに到着!


ルワンダ史上、最も福井率が高い夜!?


21世紀の必須インフラインターネット、ルワンダでは路上に携帯電話会社の代理店の人がいて、SIMが買えたりチャージできたりする。


普通のバナナチョコクレープと思いきや、中のバナナが酸っぱく、インジェラを思い出す


IchigoJamでマイコン開発プロジェクトに必須なuuencodeをIchigoJam BASICで実装。
C系統とは違った演算子のシンプルな優先順位は、カッコが少なくコードが短い!


uuencode on Web (JavaScript)
JavaScriptによるuuencodeの実装と比較してみましょう。

JavaScriptでuuencode(抜粋)

var x = s2.charCodeAt(i); var y = s2.charCodeAt(i + 1); var z = s2.charCodeAt(i + 2); res.push(uuenc(x >> 2)); res.push(uuenc(((x & 3) << 4) + (y >> 4))); res.push(uuenc(((y & 15) << 2) + (z >> 6))); res.push(uuenc(s2.charCodeAt(i + 2) & 0x3f)); var uuenc = function(c) { return c == 0 ? "`" : String.fromCharCode(0x20 + c); };

IchigoJam BASICでuuencode(抜粋)

30 X=PEEK(S+P):Y=PEEK(S+P+1):Z=PEEK(S+P+2) 40 C=X>>2:GSB100 50 C=X&3<<4+Y>>4:GSB100 60 C=Y&15<<2+Z>>6:GSB100 70 C=Z&#3F:GSB100 100 IFC=0?"`";:RTN:ELSE?CHR$(#20+C);:RTN

考え方(=アルゴリズム)を、どうプログラミング言語化するかの違いはありますが、基本は一緒。
気持ちなど、伝えたいことをどう言語化するか、人間の言葉と一緒ですね。

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image