2024-06-10
イノベーション鯖江モデル「クリエイティブ教育都市事業」を推進する要、プログラミングを教えられる人材育成の場となっている、Hana道場から、初のIchigoJam検定1級合格者が誕生!


「史上初!IchigoJam検定の1級合格。 - Hana道場 / Facebook」

おめでとう、Hanaインターン生&IchigoJam指導者、うっちー!
うっちーは高校生の頃、部活の柔道の1日をHana道場でのプログラミングの修行に変えると自ら決断。現在は福井大学工学部の学生兼、Hana道場での講師として活躍。10級から始まるプログラミングの検定、IchigoJam検定で見事、アルゴリズムの実装力を問われる、最上位の1級に合格!

アルゴリズムとは、ある問題に対する考え方。例えば、クラス30人分の採点したテスト用紙があったとして、点数の低い順に並べるにはどうしたらいいでしょう?

並べ替える方法はいくつもあります。単純な方法、速い方法、楽な方法。その時々で最適なアルゴリズムを作る、または、選ぶ力があると、実現力が一気に高まります。

IchigoJamで使える1つだけ使える102コの配列。ランダムに0から100点までの数が入っているものを2種類の方法で並び替えてみます。

まずは単純な方法。隣り合う2枚を見比べて下の方が小さければ入れ替える方法。1つずつ上がってくることから、バブルソートと呼ばれます。

1 'BUBBLESORT 10 N=102:FORI=0TON-1:[I]=RND(100)+1:NEXT 20 CLT 30 GSB@BSORT 40 ?"TIME:";TICK()/60 50 FORI=0TON-1:?[I];" ";:NEXT 60 END 100 @BSORT 110 FOR I=0 TO N-2:?I:FOR J=I+1 TO N-1 130 IF [I]>[J] T=[I]:[I]=[J]:[J]=T 140 NEXT:NEXT:RTN


「BUBBLESORT - IchigoJam web」

IchigoJam web で実行してみると、手元のmacで、3回平均66秒でした。

手間が減るように工夫します。一番下の紙の点数を見て、それより高いものと低いものに分けます。分けた2組の束を同じ手順で分けて、最後に全部重ねてできあがり!2人で手分けしても速そうですね!この方法をクイックソートと呼びます。

1 'QUICKSORT 10 N=102:FORI=0TON-1:[I]=RND(100)+1:NEXT 20 CLT 30 GSB@QSORT 40 ?"TIME:";TICK()/60 50 FORI=0TON-1:?[I];" ";:NEXT 60 END 100 @QSORT:S=#700:POKES,0,N-1:S=S+2 110 @SQSORT:L=PEEK(S-2):R=PEEK(S-1):S=S-2:?L,R 120 IF L>=R OR R=255 RTN 130 P=[R]:I=L 140 FOR J=L TO R-1:IF[J]<P T=[I]:[I]=[J]:[J]=T:I=I+1 150 NEXT 160 T=[I]:[I]=[R]:[R]=T 170 POKES,I+1,R,L,I-1:S=S+4:GSB@SQSORT:GSB@SQSORT:RTN

スタックの先頭を表す変数Sとして、メモリのVRAMの領域#700をスタック領域として使っています。170行で2回分の再帰呼び出しをセットしているのがポイント。


「QUICKSORT - IchigoJam web」

3回平均で、17秒。4倍近く速くなりました!


「アフリカの子ども達に継続的なプログラミング学習機会を提供したい!(NPO法人エル・コミュニティ 2024/06/10 公開) - クラウドファンディング READYFOR」

Hana道場で培ったプログラミングを楽しく学べるノウハウを含め、アフリカにも持っていこうプロジェクト!Raspberry Pi Pico版IchigoJamを早期ゲットできるチャンスにもなってます!

アフリカのこどもたちにもプログラミングを!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS