Hatena::ブログ(Diary)

SHIROのモバイル日記 RSSフィード Twitter

2017-04-13

[]祝☆IchigoJam3周年

先日、4/1にIchigoJamは誕生3周年を迎えました。
おめでとうございます。
f:id:shiro0922:20170413034529j:image:w360
本当は4/1に投稿したかったのですが、このIchigoNameフルバージョンの液晶をうっかり割ってしまい、材料取り寄せと修復に今までかかってしまいました。

IchigoJamのお陰で楽しいプログラミング環境が手に入り、パソコンクラブなど子ども達へのプログラミング教育も新たなステージに入りました。
今後も楽しんでいきたいと思います。よろしくお願いします。

3周年表示のプログラムはこちら。
通常のIchigoJam環境で動きます。

10 '* IchigoJam 3rd Birthday!!
20 CLS
30 LET [0],#5005,#10,#5000,0,0
40 LET [5],#7175,#5755,#5057,#BB57,#B
50 LET [10],#1131,#5311,#1313,#2233,2
60 LET [15],#3333,#1313,#3333,#3333,3
70 LET [20],0,#5300,#5000,0,0
80 LET [25],0,#5300,#5717,0,0
90 LET [30],0,#1300,#1301,0,0
100 LET [35],#105,#5080,#500,#A000,#A
110 LET [40],#7557,#71B1,#7575,#2AA5,2
120 LET [45],#1113,#1120,#3131,#2B23,2
130 LET [50],0,0,0,#320,0
140 FOR Y=0 TO 50 STEP 5
150 LC 7,Y/5+7
160 FOR X=0 TO 4
170 D=[X+Y]
180 FOR B=0 TO 3
190 N=D&15
200 ?CHR$(#80+N);
210 D=D>>4
220 NEXT
230 NEXT
240 NEXT
250 CONT

2017-03-19

[]IchigoNameフルバージョン

最近、IchigoJam名札をぶら下げてあちこちで見せていますが、どこでも絶大な人気です。
そこでEmerge+さんの新アクリルベースを使って、名札フルバージョンを作ってみました。
f:id:shiro0922:20170318105817j:image:w360
液晶ユニットとモバイルバッテリーを搭載して、IchigoJamのフル機能が使えます。
VGA液晶を活かして、名前はわかりやすく漢字にしました。
USBキーボードをつなげば、もちろんプログラミングもできます。

f:id:shiro0922:20170318105830j:image:w360
ボタンを押すと番号メニューになります。
1〜3のプログラム選択できます。

f:id:shiro0922:20170318105911j:image:w360
ジョイスティック対応の落ち物パズルゲーム。

f:id:shiro0922:20170318111606p:image:w360
回路図はこちら。ジョイスティックやボタン周りは、以前作ったIchigoJam Mobileなどと同じです。

名札のプログラムはこちら。
2〜7行目のデータを変えると、名札に表示される名前が変わります。
※(3/21)名前表示部分を若干変更

1 CLV:CLS:OUT1,-1:OUT2,-1:OUT5,-1:OUT6,-1
2 LET[0],#0080,#0808,#0FF8,#7FFF,#0220,#0808,#0140,#0000
3 LET[8],#0080,#3E2A,#0140,#223E,#0E38,#2208,#F007,#BE3E
4 LET[16],#17F4,#2214,#1004,#2263,#1FFC,#3E49,#1084,#222A
5 LET[24],#12A4,#221C,#1494,#222A,#2084,#4249,0,0
6 LET[32],0,0,#0381,#07F0,#0441,#0490,#0041,#C490
7 LET[40],#0341,#07F0,#0541,#0490,#0541,#0490,#038F,#E7F0
8 A=#900:FORY=0TO23:FORX=0TO1:M=#8000
9 FORB=0TO15:D=([Y*2+X]&M)!=0:POKEA,D:M=M>>1:A=A+1:NEXT
10 NEXT:NEXT
11 IFIN(11)CONT
12 BEEP:CLS:WAIT30
13 LET[0],14,17,17,17,17,17,14,4,12,4,4,4,4,14
14 LET[14],14,17,1,2,4,8,31,14,17,1,6,1,17,14
15 LET[28],6,10,18,31,2,2,2,31,16,16,30,1,17,14
16 LET[42],14,17,17,30,17,17,14,31,17,1,2,4,4,4
17 LET[56],14,17,17,14,17,17,14,14,17,17,15,1,17,14
18 N=1:GSB24
19 N=N-(ANA(6)-512)/480
20 IFN<1N=3
21 IFN>3N=1
22 GSB24:IFIN(11)GOTO19
23 BEEP:LRUNN
24 A=#A10:FORY=0TO6:M=16
25 FORB=0TO4:D=([N*7+Y]&M)!=0:POKEA,D:M=M>>1:A=A+1:NEXT
26 A=A+27:NEXT:RTN

材料

2017-02-22

[]メンデル遺伝法則

中学校理科で習う、エンドウマメの「メンデル遺伝法則」をシミュレートするプログラムです。
Facebookの「プログラミングで学ぶ」教材研究グループ(非公開)に掲載された同様のプログラムが面白かったので、IchigoJamで作ってみました。

f:id:shiro0922:20170222235107p:image

  • 起動すると、エンドウマメの親世代P「(AA)[aa]」と、その交配で生まれる子世代F1「(Aa)(Aa)」、その交配で生まれる孫世代F2「(AA)(Aa)(aA)[aa]」が表示されます。
  • 「( )」で囲まれたマメは丸いマメ、「[ ]」で囲まれたマメはしわのマメを表します。
    エンドウマメでは丸いマメの遺伝子「A」が優性、しわのマメの遺伝子「a」が劣性で、優性の「A」を1個でも持つと劣性の「a」の機能は覆い隠されて丸いマメになります。劣性遺伝子が2個そろった「aa」だけがしわのマメになります。
  • 世代Pの交配「(AA)×[aa]」では、それぞれから1個ずつ遺伝子をもらった子世代F1は全て「(Aa)」となり、丸いマメになります。
    世代F1の交配「(Aa)×(Aa)」では、それぞれから1個ずつ遺伝子をもらった孫世代F2は、「(AA)(Aa)(aA)[aa]」の4種類が生じ、丸いマメとしわのマメの数は3:1の比率になります。
  • スペースキーを押すと、子世代F1の交配で孫世代F2が1個生まれ、その数が下段に表示されます。スペースキーを何度も押して孫世代F2がたくさん生まれると、丸いマメとしわのマメの数はだんだん3:1の理論値に近づいていきます。

プログラムリストはこちら。

10 '*Mendelian inheritance
20 CLV:CLS
30 SRND TICK()+ANA(2)
40 ?"*P (AA)x[aa]"
50 ?:?
60 WAIT 60
70 ?"*F1 (Aa)x(Aa)"
80 ?:?
90 WAIT 60
100 ?"*F2 (AA) (Aa) (aA) [aa]"
110 GSB 270
120 '@LOOP
130 IF !BTN(SPACE) CONT
140 BEEP
150 M=RND(2)
160 F=RND(2)
170 LC 10+M,4:?CHR$(227)
180 LC 15+F,4:?CHR$(227)
190 WAIT 30
200 D=M*2+F
210 [D]=[D]+1
220 GSB 270
230 WAIT 30
240 LC 10+M,4:?" "
250 LC 15+F,4:?" "
260 GOTO 120
270 '@PRTF2
280 A=0
290 FOR I=0 TO 3
300 LC 5+I*5,7:?[I]
310 A=A+[I]
320 NEXT
330 B=[3]
340 A=A-B
350 LC 9,9:?"(";A;")"
360 LC 19,9:?"[";B;"]"
370 RTN
MixJuiceでもダウンロードできます。
?"MJ GET comich.net/ichigojam/mendel.txt"

2017-02-19

[]素数さがし

再び教育っぽいネタ。いわゆる「エラトステネスのふるい」で素数を探すプログラムです。
f:id:shiro0922:20170219010954p:image:w480

f:id:shiro0922:20170219010953p:image:w480

  • 実行すると、画面に「1234567890123…」と数字が表示されます。1行目が1〜30、2行目が31〜60、3行目が61〜90…と30ごとに1の位の数を表示しています。最後は690までです。
  • エラトステネスのふるいを始めます。まず1は素数ではないので消します。次に2を残して2の倍数を消します。次に3を残して3の倍数を消します。次に5を残して5の倍数を消します。…と、残っている数の最小のものを残して、その倍数を消す作業を、690の半分・345までくり返します。
  • 消されずに残った数が素数です。画面がビューモードになって、カーソルが左上の「2」で点滅します。矢印キーでカーソルを上下左右の素数に移動できます。カーソル位置の実際の数は、画面左下に表示されます。

素数探し(ふるい分け)はIchigoJamが10数秒でやってくれます。今は素数探索をコンピュータ計算で行っているので、その一端を知るにはいいんじゃないでしょうか。
また、690までの範囲でどんな素数があるか、見てみるとなかなか興味深いです。
例えば素数が出てくる間隔は、「数が大きくなるに連れて広がっていくんじゃないか?」と思いますが、実際はそうでもありません。この範囲で一番間隔が広いのは523と541で18差。その後でも、569と571、641と643など、隣り合う奇数素数の所がいくつかあります。
この「素数の分布・規則性」は、100万ドルの賞金がかかった数学の難問「リーマン予想」につながる問題で、長年研究されていますがまだ解明されていません。

プログラムリストはこちら。

10 'Sosuu:Sieve of Eratosthenes
20 CLV:CLS
30 FOR C=0 TO 9:FOR B=0 TO 7
40 A=C*8+B
50 POKE #780+A,~PEEK(#180+A)
60 NEXT:NEXT
70 FOR I=0 TO 660 STEP 30
80 FOR J=1 TO 30
90 ?J%10;
100 NEXT
110 ?
120 NEXT
130 LC 0,0:?"*";
140 S=2
150 '@SLOOP
160 LC 0,23:?S;" É ÊÞ²½³";
170 M=1
180 '@NLOOP
190 M=M+1:N=S*M
200 IF N>690 GOTO 230
210 GSB 510:LC X,Y:?"*";
220 GOTO 180
230 '@NEND
240 GSB 530
250 IF S<346 GOTO 150
260 LC 0,23:?" ";
270 N=2
280 '@VLOOP
290 V=0:GSB 580
300 IF BTN(LEFT) GSB 390
310 IF BTN(RIGHT) GSB 460
320 IF BTN(UP) GSB 370
330 IF BTN(DOWN) GSB 440
340 V=1:GSB 580
350 WAIT 10
360 GOTO 280
370 '@NUP
380 N=N-29
390 '@NLEFT
400 N=N-1:IF N<1 N=N+690
410 GSB 510
420 IF SCR(X,Y)=42 GOTO 390
430 RTN
440 '@NDOWN
450 N=N+29
460 '@NRIGHT
470 N=N+1:IF N>690 N=N-690
480 GSB 510
490 IF SCR(X,Y)=42 GOTO 460
500 RTN
510 '@XY
520 X=(N-1)%30:Y=(N-1)/30:RTN
530 '@SNEXT
540 S=S+1:IF S>345 RTN
550 N=S:GSB 510
560 IF SCR(X,Y)!=42 RTN
570 GOTO 530
580 '@VSUB
590 GSB 510
600 LC X,Y:?CHR$(48+V*192+N%10)
610 LC 0,23:?N;" ";
620 RTN
MixJuiceでもダウンロードできます。
?"MJ GET comich.net/ichigojam/sosuu.txt"

※なお、実際は最大数690の平方根、√690≒26の倍数までふるいにかければ、作業は終了です。
250 IF S<346 GOTO 150
540 S=S+1:IF S>345 RTN
を、
250 IF S<27 GOTO 150
540 S=S+1:IF S>26 RTN
に変えれば、26の倍数までになります。
今回はわかりやすく半分の345までにしました。
計算時間はあまり変わりません。

2017-02-16

[]イチゴさんぽ

2/14に学習指導要領改定案が発表され、現在パブリックコメントが募集されています。
http://search.e-gov.go.jp/servlet/Public?CLASSNAME=PCMMSTDETAIL&id=185000878&Mode=0
何と言っても小学校でのプログラミング教育必修化(総則に入りました)が注目です。
プログラミング教育の一例として、小学校5年生算数の「図形」が挙げられています。
「正多角形の作図で、(プログラミングで)繰り返し作図を行い、さらに(作図の)一部を変えていろいろな正多角形を考える」と記されています。
どうやらタートルグラフィックスをイメージしているようです。
そんな訳で、簡単なタートルグラフィックスのプログラムイチゴさんぽ」を作ってみました。

f:id:shiro0922:20170216224116p:image:w480
起動すると、画面中央にイチゴくんが表示されます。
上に付いている縦棒は、イチゴくんの向きを表します。
矢印キーを押すと、イチゴくんを上下左右に移動できます。
スペースキーを押すと、イチゴくんの向きを時計回りに45度ずつ変えられます。

f:id:shiro0922:20170216224114p:image:w480
1〜9の数字キーを押すと、イチゴくんが向いている方向に、指定した歩数だけ足跡を残して歩きます。
イチゴくんの位置や向きを操作して、足跡で図形を描いてください。

f:id:shiro0922:20170216224115p:image:w480
多角形が描けました。

f:id:shiro0922:20170216224113p:image:w480
ちょっと遊んでみました(笑)

算数の多角形の授業でこのプログラムを使うとすると、こんな問題はどうでしょうか。

【問題1】
(1)3歩進む(3を押す)
(2)向きを45度変える(スペースキーを押す)
この2つの操作をくり返すと、どんな図形が描けるでしょうか?
【問題2】
直角三角形を描くには、どのキーをどんな順番で押せばいいでしょうか?
プログラムを実行する前に考えてみましょう。

ちなみに問題1はこんな感じです。
f:id:shiro0922:20170216230948p:image:w480

プログラムリストはこちら。
CHR$(255)がイチゴくん、CHR$(165)が足跡「・」です。
文字コードを変えると、キャラクターが変わります。
10 '*Ichigo Sanpo
20 CLV:CLS:CLK
30 LET [0],0,-1,1,-1,1,0,1,1,0,1,-1,1,-1,0,-1,-1
40 LET [20],146,25,145,26,146,25,145,26
50 X=15:Y=11:D=0
60 '@LOOP
70 L=INKEY()-48
80 IF 0<L AND L<10 GSB 240:GOTO 60
90 U=X:V=Y
100 IF BTN(LEFT) AND X>1 U=X-1
110 IF BTN(RIGHT) AND X<29 U=X+1
120 IF BTN(UP) AND Y>1 V=Y-1
130 IF BTN(DOWN) AND Y<21 V=Y+1
140 IF BTN(SPACE) D=D+1:IF D>7 D=0
150 LC X,Y:?CHR$(C);
160 LC E,F:?CHR$(G);
170 X=U:Y=V
180 E=X+[D*2]:F=Y+[D*2+1]
190 C=SCR(X,Y):G=SCR(E,F)
200 LC X,Y:?CHR$(255);
210 LC E,F:?CHR$([20+D]);
220 WAIT 5
230 GOTO 60
240 '@DRAW
250 BEEP
260 LC E,F:?CHR$(G);
270 U=X:V=Y
280 FOR I=1 TO L
290 LC U,V:?CHR$(165);
300 U=U+[D*2]:IF U<1 U=1
310 IF U>29 U=29
320 V=V+[D*2+1]:IF V<1 V=1
330 IF V>21 V=21
340 NEXT
350 X=U:Y=V
360 E=X+[D*2]:F=Y+[D*2+1]
370 C=SCR(X,Y):G=SCR(E,F)
380 CLK:RTN

MixJuiceでもダウンロードできます。
?"MJ GET comich.net/ichigojam/ichigosanpo.txt"

ダウンロード
リンク集
アクセスカウンター