2015年11月28日土曜日

祝 ! [e-Gadget] 開設2周年

CASIO fx-5800Pの情報を中心に、CASIO BASICの情報を積極的に発信されておられます やす様のblogが開設2周年との事で、蔭ながらお祝い申し上げます。

e-Gadget - プログラム関数電卓
http://egadget.blog.fc2.com/

やす様のblogでは、最近はCASIO BASIC の構造の詳細を述べられており、その情報を元にSentaro 様が高速動作版 CASIO BASICインタプリタ「C.Basic」の開発を進められております。既にLifeGame がウレシイくらいの速度で動いているらしく、とても興味深い成果なので、fx-9860GIIのユーザーの方は、是非とも御覧頂き度。

以前のポストで「10月にもCASIOがスマートウォッチを発表する」と書きましたが、どうも来年の話になっていた様です。
また、CASIOは電卓50周年のキャンペーンもやっており、既に年表も出していますが、そこには50年記念電卓「S100」も出ているので、年内の新しい高機能電卓は期待出来そうもありません。もうすぐ年末ですから「夢」は来年に持ち越し、にしておきましょう。尤も、CLASSWIZ は昨年12月に発表があったので、ウレシイ「裏切り」があって欲しい気もします。

他方、経営難が続くシャープですが、こんなTweetを出していました。

https://twitter.com/SHARP_JP/status/659206364967780352

ぜ…全国の 高校生よ 高専生よ そしてその親御さんの みなさま……このオラに ほんのちょっとずつだけ 弊社の電子辞書とか関数電卓を採用する圧力を…学校にかけてくれ…!!!

高校生向けの関数電卓だそうです。

http://www.sharp.co.jp/calc/lineup/education.html

惜しむらくはプロ電ではない所でありますが、今のSharpの企画力では、こんな所から始めるのが精一杯なのかも知れません。しかし、発売は来年2月となっております。それまで持つのか !?
いや、それこそ「来年の事を言うと鬼がナントカ」とか申しますから、CASIOの新製品と共に、静観します。

さて、CASIO機ばかりではマズいので、HP機の話題も。JulyさんのAmazon売り場のHP50G, HP Primeですが、最近になって猛烈にバイが進んでいる様子。特にHP Primeは残り5台。もうすぐクリスマスという事で、高機能電卓のお買い求めを。

「すり抜け」確率の研究


火砕流に遭遇する確率に関するTweet

https://twitter.com/HayakawaYukio/status/658584031123107841
1万年で火砕流90%は、人生100年とすれば、一生の間に遭遇する確率(すなわち火砕流で死ぬ確率)は0.9%だ。そんなに小さくない
「1万年で90%」という事から、100年では90%/100 = 0.9% という目安を出しておりますが、確率計算の上では、どうなのでしょうか。
早川センセは、発生(火砕流に遭遇)する確率をp=一定としている様ですから、ここでも、その前提で計算を進めようと思います。

「1万年で90%の確率」とは言いますが、そのうちの「人生100年」は、1万年の1/100期間であります。
そこで、この「人生100年」を1回の施行とすれば、「1万年」は100回分の施行と考えてよいでしょう。
ここまで単純化して、いよいよ本題です。
100回(=1万年)の施行で90%となる発生確率の場合、1回(=人生100年)の試行による確率がどの程度になるのか、という問題に還元される事となりましょうや。

これを考える為に、複数回試行の確率を考えます。まず,最初は2回の試行から始めましょう。

p=2/3 という確率で生じる事象があるとして、1回で生じる確率は2/3であり、生じない確率は1/3である事に議論の余地はないでしょう。それでは、2回ではどうでしょうか ?

最初の1度目で生じる確率は2/3, 次に生じる確率も2/3 でありますが、ここには、次の組み合わせがあります。

1度目 2度目 確率
生じる 生じる 2/3 * 2/3 = 4/9
生じる 生じない 2/3 * 1/3 = 2/9
生じない 生じる 1/3 * 2/3 = 2/9
生じない 生じない 1/3 * 1/3 = 1/9

2回の事象に於ける「組み合わせ」では、実に8/9の場合が「生じる」を含んでいる勘定になります。
すなわち、2回の施行において「全く生じない」場合は1/9であり、いつの時点で起こるかを特定しない「起こる」確率は、全体の「全く生じない」場合を除いた場合として考える事が出来、その確率は 1-p = 1-1/9 = 8/9 と計算できます。

さて、この部分をもう少し考えてみます。
2回の施行で「全く起こらない」確率は、1/3*1/3 = 1/9 でしたが、つぎの様に考えてもいいでしょう。

n回の試行で「全く起こらない」確率は、p = (1/3)^n
n回の試行で「1度以上起こりうる」確率は、q = 1-p = 1-(1/3)^n

これをより一般的な表現とするならば、1回の試行で発生する確率を P として、

n回の試行で「全く起こらない」確率は、p = (1-P)^n
n回の試行で「1回以上起こりうる」確率(pの余事象)は、q = 1-p = 1-(1-P)^n

という、少し込み入った表式を得ます。
ここでは複数回の施行で発生しなかった事を「n回の試行をすり抜けて来た」と考え、「すり抜けの確率」と呼称します。

この辺りの考えをまとめて、件の「火砕流に遭遇しない確率」を、今一度考えなおそうというコンタンです。
100回の施行で90%の遭遇確率とは、100回の間、遭遇せずに「すり抜けて来た」確率の余事象ですから、

0.9 = 1-(1-P)^100

となります。但し、Pは「1回で火砕流に遭遇する確率」です。関数電卓をチョイチョイと叩けば、Pの値はたちどころに得られます。

1-P = (1-0.9)^(1/100) = 0.977237221...

P = 1-0.977237221 = 0.022762779, およそ2.28% という値が得られました。
0.9%よりも大きい値で、センセの仰る通り「そんなに小さい値ではない」とは言えます。
一方、危険率を5%に採ってしまうと、「2.28%は滅多に無いんだから、無視しても良かんべ」という事になってしまう。危険率の設定というものを、少し考えてしまう話題です。

昔懐かしい、プロ電のプログラムの技巧

かなり昔の事ですが、プロ電にプログラムを仕込んで「ゲームマシン」にするという本があり、その中に面白い技巧が出ておりました。

1. 「角度スイッチ」をジョイスティック代わりにつかう
2. GRADモードの活用で、乱数ルーチンのステップ数を稼ぐ

まずは、1の方から

1. 「角度スイッチ」をジョイスティック代わりにつかう

今でも、大抵の関数電卓では「DEG」(度)、「RAD」(ラジアン)、「GRAD」(グラード、グラジアン)の3つの角度モードが設定可能ですが、昔のプロ電の中には、三角関数の角度モードをスライドスイッチで切り替えるものがあったそうです。残念ながら、今となっては何と言う機種かは判りません。
このプロ電用に作られたゲームの内容も今となっては不明ではありますが、スクロール(シューティング)ゲームだったのだと思われます。画面(恐らく1行表示)を見ながら、角度モードのスライドスイッチをカチカチと切り替え、自機の操作を行っていたらしい。
スライドスイッチをジョイスティック代わりにするという発想が驚きですが、これにより、キー入力による実行停止がなく、リアルタイム性が向上したのだと推察されます。

角度モードを切り替えるスライドスイッチの状態をどうやって検出するのでしょうか ?
答は簡単で、適当な三角関数値を計算させ、角度モードによって違う値が得られるので、分岐して処理する、という具合です。


2. GRADモードの活用で、乱数ルーチンのステップ数を稼ぐ

GRADモードでは、直角を100とした角度指標となっていて、普段、余り使われない様に思われるGRADモードですが、こんな利用法があった、と言います。
逆三角関数、arc-sin, arc-cos をGRADモードで計算すると、0から100までの数値が返ります。0〜99までの乱数値が必要な場合、内蔵の乱数(0〜1未満)を実行、その逆三角関数値を計算し、最後にround(数値丸め)を実行する事で、0〜99までの乱数値が得られるという手法でした。
通常、こうした場合には乱数値を100倍し整数部を採るという操作を行いますが、100倍するという操作で「×」、「1」、「0」、「0」と、4ステップ余計に喰ってしまいます。メモリの少なかったプロ電では有効だったのかも知れません。

この技法は、38ステップのプログラミングが出来る機種(CASIO fx-3800P)に向けたものでした。今から思うに、38ステップのプログラムでナニが出来たのか、大変考えさせるものがあります。
プログラムで使える命令についても、制御機構は簡単な条件判断(レジスタ・メモリの0判定)と「文頭へ戻る」だけです。それらは、電卓に用意されていた数値積分機能に寄与するもので、積分を計算したい数式を「プログラム」によって実装し、数値積分を行っていたのだと思われます。数値積分は、微分方程式の数値解を得るのにも使われておりました。
そこで、更に「これ使ってゲームも作れるのではないか」という発想で、GRADモードを利用する技巧が編み出されたに相違ありません。

興味深い技巧ではあります。しかし、逆三角関数を通してしまう事で、乱数値の分布に偏りが出たりしないのか、という疑問があります。グラフ電卓で分布を描いて、調べてみましょう。

大抵のプロ電には、一様乱数の機能があります。これをarc-sinに通して、標本を取得します。電卓の実験例なので、100個くらいのデータが丁度良さそうです。
得られる標本の数値範囲は角度モードによりますが、ここでは分布の傾向をみるだけなので、どの角度モードでも構いません。当方、普段はRadianにしているので、Radianならば0~PIの範囲となります。そして、この0~PIの範囲を10の区分にして、棒グラフを描いてみる事にしました。一例では、確かに偏った分布となっております。

更に、統計的にこの分布が偏っているのか、調べる事も出来ます。
推計学の基礎が教える所によりますと、この標本集団から得られるχ自乗値は、近似的にχ自乗分布に従う、との事です。
高機能電卓でも、機能が充実しているものならば、χ自乗分布のCDF(累積分布関数)値を計算できます。これを使って検定も出来るのですが、計算方法は「χ自乗検定」を調べれば割合簡単に判ります。この例の場合、一様乱数と近しいかどうかを検定する事になり、一様分布の「期待値」としては、どの区分も同じ値になっている、として期待値を設定すればよい筈です。

2015年10月9日金曜日

10月になりました

10月になりました。

Julyさんの所の電卓、全て完売になっており、再入荷の目処は立っておりません。ウーン。

CASIOが「新しいスマートウォッチを投入する」としたのが、今月です。さて、何が出るのやら ? ついでにオモロイ電卓を期待したい。

CASIOの電卓も50週年とかで、キャンペーンを実施中だそうです。

カシオ電卓50周年
http://casio.jp/dentaku/sp/50th/

新しい高機能電卓を期待したい所です。

さーて、何か考えないとなァ ... 。

2015年9月26日土曜日

Julyさんの所のHP Primeが「おいでおいで」をしている ...

先ずは、最近は入手しにくくなりつつあるHP電卓マニュアルなどのPDFの一部について、リンク(直リン含む)を載せておきます。

HP35S Training modules
http://h30499.www3.hp.com/t5/Calculators/HP35S-Training-Modules-for-specialties/td-p/5854845?notmigrated#.VfKfk7O-feQ

HP50G Training modules
http://www.ele.uri.edu/faculty/vetter/Other-stuff/HP-calculators/HP-50g/index.html

HP42S manual
http://h10032.www1.hp.com/ctg/Manual/c01094960.pdf

HP15C manual
http://h10032.www1.hp.com/ctg/Manual/c01095005.pdf

HP12C manual
http://h10032.www1.hp.com/ctg/Manual/c00787560.pdf

HP12C クイックスタートマニュアル
http://www1.hp.com/ctg/Manual/c01798125


少し前の事ですが、某県知事が「高校女子に三角関数の勉強など不要」と公言し、インターネットでは「何を言うか、女性蔑視だ」などという意見が多く出回りました。そうした意見を受け、訂正を述べたとの事。県知事自身が「俺も使った事ないしネ」と言ったとかナントカ。

「女子に三角関数必要ない」 - Reuter
https://jp.reuters.com/article/2015/08/28/idJP2015082801001432

https://twitter.com/Stakesh/status/637048757142458368

https://www.facebook.com/photo.php?fbid=1522492048040753

この「訂正」は、結局の所「男女問わず、高校生程度のガキにサインコサインの勉強なんて、いらねんじゃね」という事になっております。
高齢に達し県知事になった所で人生を振り返ってみれば、確かに三角関数の計算など無縁だったのでしょう。大学出ても、計算を必要としない人は少なくなく、確かに申す通りなのかも知れません。

日本で少なく売られている関数電卓について、土地家屋診断士試験対応電卓などを謳っているものもあり、三角関数が生活にまったく不要なのか、というとそうでもなさそうです。
遠山啓・著「数学入門 (下)」(岩波新書)には、洋服の縫製について、袖の展開を行うと接続面にsin curveが現れる、と書いてありました。工業高校では間違いなく必要であり、高専なんかでは入学してからすぐに微積分を教えるとか。
商業高校ではサインコサインの計算には余り縁がないのかも知れませんが、複利計算を考えると、指数・対数の計算が顔を出します。
「高校生程度のガキに三角関数は不要」とは限らないのだと思う所です。

過日、Twittreで、こんな話題がありました。(リンクを持っていないので、記憶に基づいて文意を書いております。御容赦)
「せんせー、なんで三角関数なんて勉強すんの」というガキには「それは、こうしてバカなガキに三角関数を教えるお仕事が存在するからだ」と言うとガキは納得したので、おススメです
ネタとしては、なかなか面白い答えですが、現実では、バカなガキが言うのではなく、県知事がこんな事を言うております。
こういう県知事が出てくる事こそ「この国の教育が荒廃した」という証左なのですが、こうしたイカレテいる知事の話は、これ以上相手にしていると気が触れそうなので止めます。


CASIOの社員ですらも「高機能関数電卓の高機能を使う必要を感じていない」とは以下の記事でも書かれております。

異様に欲しくなった電卓の話 カシオCLASSWIZ - 週刊ASCII
http://weekly.ascii.jp/elem/000/000/339/339010/

関数電卓の基本的機能さえあれば十分、という意識なのでしょう。
ただ、こういう意識で関数電卓、高機能電卓を使っているとなると、確かに需要は減っていく。

所が、海外ではAggressiveに、関数電卓、高機能電卓が売られているのです。TIはトップシェアで、CASIO,HPと続いているらしいのですが、Sharpでさえも海外では高機能電卓を出している !

Sharpも海外ではEL-9950なんて製品を出しているそうで、当方としては「EL-9950という電卓がある」という事に驚いたのでした。これは、過去に発売されていた「EL-9900」の改良新機種らしく、機能的にはTI-83+に相当する模様。

[シャープ] SHARP EL-9950関数電卓ライセンスシールを提供グラフィックコンバータ(海外直送品)- Amazon.co.jp
https://www.amazon.co.jp/%E3%82%B7%E3%83%A3%E3%83%BC%E3%83%97-EL-9950-SHARP-EL-9950%E9%96%A2%E6%95%B0%E9%9B%BB%E5%8D%93%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%82%B7%E3%83%BC%E3%83%AB%E3%82%92%E6%8F%90%E4%BE%9B%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BF%EF%BC%88%E6%B5%B7%E5%A4%96%E7%9B%B4%E9%80%81%E5%93%81%EF%BC%89/dp/B00T7U4A4G/ref=pd_sim_sbs_229_8?ie=UTF8&refRID=0SSSXVYTXG92RNAAE4SE#productDetails

Sharpは、海外ではこんなのを出して居るのですね、何で日本では出して呉れないの ?

一方、以下の記事には興味深い事があります。世界的に見るとSharpの電卓シェアは、実の所かなり少ない。

4 電卓は今後どう進化していくのか? - 【レポート】「いつでも、どこでも、だれにでも」使える計算機を! シャープ、電卓発売から50年の節目 - mynavi
https://news.mynavi.jp/articles/2014/03/18/sharp_calculator/003.html

電卓は現在でも、全世界で1億3,000万台の需要がある。シャープは現在、年間700万台を出荷しており、そのうち国内が100万台、海外が600万台となる。

(国内における)電卓戦争の一方の覇者・Sharpでさえも、世界的には大した売上がなかった。そのSharpでさえも、海外では高機能電卓を販売している。結局の所、国内においては高機能電卓の需要がない、という事に尽きるのでしょう、残念ながら。

先日、Julyさんの在庫が復帰したHP Primeですが、入荷数が多く無かったのか、既に残り2台となっておりました。
他のHP電卓も大分さばいていて「もうHP電卓の販売は終了なのか ?」と思ったのですが、価格が少々高めのリアル店舗・東映無線さんでは在庫が潤沢な様子なので、Julyさんでも当面販売は続くのかなぁ ?

https://www.toeimusen.co.jp/~dp/

東映無線さんでは、HP Prime以外にも50Gなどの在庫が十分あるみたいですから、「どうしても50Gが欲しい」方も、今暫くは迷えそうです。(Julyさんから引いているので日本語クィックガイド付きの筈ですが、念の為、お問い合わせ戴き度)

当方はHP Primeの「日本語冊子付き」を待っているのですが、頻繁なファームウェアのアップデートと、それに伴うPDFマニュアルの更新もあって、紙マニュアルは印刷と製本が追いつかないのかも知れず、日本語冊子付きは当分出ない可能性があります。

2015年8月27日木曜日

今回は移植ネタ「酔っ払いの虫」

先日、親分からつぎの話題を紹介されたのですが、関連したものを色々と調べている内に、記事のアップが遅れてしまいました。

楽屋裏 - 酔っ払いの虫 (Drunk Bug) - e-Gadget - プログラム関数電卓
http://egadget.blog.fc2.com/blog-entry-445.html

以下では、この記事を「原作」と記しております。まずは、TI-83+への移植を試みました。

TI-83+版のコード

PROGRAM:DRUNK
:ClrDraw
:94/2→V:62/2→W
:While 1
:Pxl-Change(W,V)
:2*randInt(0,1)-1→S
:2*randInt(0,1)-1→T
:If V+S≧0 and V+S≦94 and W+T≧0 and W+T≦62
:Then
:V+S→V:W+T→W
:End
:End

randInt(Begin, End)は、Begin,Endの間の整数乱数を返す関数で、randInt(0,1)は、0もしくは1を返します。
2*randInt(0,1)-1 の部分で、-1, +1の整数乱数にしております。
原作ではMODを使っておりましたが、まったく同じでは芸がないので、少しひねってみました。

今回、Pxl-Change()を使って判ったのですが、不規則ながらもグラフィクスコマンドを使う所で、一部変数の値が書き換わってしまうケースがあります。CASIO BASICと同じ様な感じです。
マニュアルには「ただし、変数X,Y,T,θ,Tはグラフを描く際、更新されることがあるので、グラフ関係以外の値を代入することは避けたほうが賢明です」(ページ A-50)と明記されておりました。

原作の興味深い所としては、酔歩の「移動の等方性」を担保するため、斜め方向の移動のみを行っている所です。
斜め方向の移動は、縦、横の移動と較べると、√2倍の距離の移動になります。縦、横の移動と斜め方向の移動とでは、単位時間での移動速度が異なる事になりますが、縦、横の移動、もしくは斜め方向の移動だけならば、移動の等方性が確保されます。原作の場合、斜め方向の移動のみを行う事で、移動の等方性を確保し、更に視覚的にも面白い表現を実現しています。

直交座標系では、縦、横と斜め移動の等方性について考える事が必要になりますが、四角ではなく六角形を敷き詰めたマス目空間(Hexagonal field)では、黙っていても移動の等方性が確保されます。少し工夫をする事で、直交座標系のピクセル空間にHexagonal fieldを擬似的に表現できます。

PROGRAM:HXDRNK
:ClrDraw
:94/2→V:62/2→W
:While 1
:Pxl-Change(W,V)
:Pxl-Change(W,V+1)
:Pxl-Change(W+1,V)
:Pxl-Change(W+1,V+1)
:randInt(0,5)→D
:(iPart(D/2)-1)*2→T
:2(fPart(D/2)*2)-1→S
:If T=0
:Then
:S*2→S
:End
:If V+S≧0 and V+S≦94 and W+T≧0 and W+T≦61
:Then
:V+S→V:W+T→W
:End
:End 
 
図が必要な事もあり、詳しい内容は、いずれ折を見て述べましょうか。 
 
更に、HP Prime向けコードも。

// title : Diagonal random walk for HP Prime
// begin : 2015-08-02
// note  : 

EXPORT drunk()
BEGIN
// Clean the screen (G0)
RECT();

LOCAL i, p;
LOCAL x, y, v, w;

x := 320/2;
y := 240/2;

WHILE GETKEY() == -1 DO
  p := B→R(GETPIX_P(x, y));
  IF p<>0 THEN
    PIXON_P(x, y);
  ELSE
    PIXOFF_P(x, y);
  END;
  v := RANDINT*2-1;
  w := RANDINT*2-1;
  IF x+v>=0 AND x+v<320 AND y+w>=0 AND y+w<240 THEN
    x := x+v;
    y := y+w;
  END;

//  WAIT(0.1);

END;

//  key wait loop
REPEAT UNTIL GETKEY() == -1;
FREEZE;

END;

実行中に適当なキーを押すと、停止します。更にもう一度キーを押す事で、プログラムの終了となります。
エミュレータで動かすと「爆速」ですが、そんな時にはコメントになっている「WAIT(0.1)」を使ってみて下さい。

お次はHexagonal field版

// title : Hexagonal random walk for HP Prime
// begin : 2015-08-02
// note  : 

EXPORT hexdrunk()
BEGIN
// Clean the screen (G0)
RECT();

LOCAL i, p, d;
LOCAL x, y, v, w;

x := 320/2;
y := 240/2;

WHILE GETKEY() == -1 DO
  p := B→R(GETPIX_P(x, y));
  IF p<>0 THEN
    PIXON_P(x,   y);
    PIXON_P(x+1, y);
    PIXON_P(x,   y+1);
    PIXON_P(x+1, y+1);
  ELSE
    PIXOFF_P(x,   y);
    PIXOFF_P(x+1, y);
    PIXOFF_P(x,   y+1);
    PIXOFF_P(x+1, y+1);
  END;
  d := RANDINT(5);
  w := (IP(d/2)-1)*2;
  v := 2*(FP(d/2)*2)-1;
  If w==0 THEN
    v := 2*v;
  END;
  IF x+v>=0 AND x+v<320 AND y+w>=0 AND y+w<240 THEN
    x := x+v;
    y := y+w;
  END;

//  WAIT(0.1);

END;

//  key wait loop
REPEAT UNTIL GETKEY() == -1;
FREEZE;

END;

HP PrimeのPPL (Prime Programming Language)での注意ですが、「変数への代入には := を使うべし」です。
実は、ピクセル値の値を取得する所で「p = B→R(GETPIX_P(x, y));」とやって、かなりハマってしまいました。
これでは代入ではなく「比較」になってしまうのですが、構文上は問題がないのでそのまま実行出来てしまい、エラー発見に手こずる事になります。


小中学生の皆様はもう新学期だそうで、今更「夏休みの自由研究」でもないのですが、来年の自由研究のネタに使えるかも知れません (鬼が笑うとりますがな)。

2015年8月24日月曜日

ちょっとした話題 - 「演算保留」って、何 ?

昨日、やす親分のコメントに対するレスポンスを投稿した折、yahooけさんく(←変換できない)で「CASIO 電卓 演算保留」というワードで来ていた方が居られる様でした。
「演算保留」って何、と思って、調べてみた所、どうもSharpの電卓で使われている言葉の様で、演算スタックの事らしい。
括弧を使う計算では、その括弧内の計算結果を保留しておく必要があり、その量、というか「深さ」をどれだけ用意しているかで、括弧の入れ子をどこまで許容できるか、という指標の様です。

HPのRPN/RPLでは、この演算保留をスタックで明示的に操作するのですが、RPNでは大抵4段となっています。この4段だけで大抵の計算は十分可能なのですが、その分、計算の手順などで頭を使う事になります。
RPLの方はというと、再帰計算を行う様になっている都合で、スタックはメモリの許す限り取れますが、これに甘えて、計算結果を次々とスタックに置いていき、ある日、SysRPLとかをいじっていてパァにしてしまう事もしばしば ... 。

以上「演算保留」という言葉で書いた「小ネタ」でした !

2015年8月9日日曜日

夏休みの自由研究 #4 - 電卓遊び

どうも、小学4年生から電卓を算数の授業で取り入れているとかで、今回の記事は、小学4年生向けのものです。

まずは、12345679 と電卓のボタンを押します。更に「×」ボタンを押し、1から9までの、好みの数のボタンを押し、「=」を押して掛け算を行います。

ここまでで出た数は、まだ、何の数なのかよく解らない数ですが、更に「×」、「9」、「=」、とボタンを押すと、大変面白い事になります。

中学生くらいの知恵が付くと、この計算の仕掛けが判ってしまうのですが、小学生向けとは言え「この先の話」も用意しているのですよ、当blogは !

まず、上記の計算の「種明かし」から。12345679×9= を電卓で計算します。すると、111111111 が得られます。これに1から9までの数字を1つ選んで掛ければ、ゾロ目の数になる訳ですネ。
掛け算の内では、数の順番を換えても、同じ結果が得られる、という事が判ります。

12345679×9×■ = 12345679×■×9 = ■×12345679×9 = ■×9×123456789

更に、こうした現象が起こるのは、12345679だけなのか、調べてみましょう。

111111111 = 12345679×9 でしたから、今度は11から始めて、次々と桁を増やして行きましょう。電卓で計算します。

11÷9 = 1.222222222
111÷9 = 12.33333333
1111÷9 = 123.4444444
11111÷9 = 1234.555555
111111÷9 = 12345.66666
1111111÷9 = 123456.7777
11111111÷9 = 1234567.888
111111111÷9 = 12345679


最後の計算以外は、どうにも端数が出てしまいますから、憶えておくのも面倒です。
一方、端数の部分をよく見ると、規則的で大変面白い事が判ります。最後の計算、もしかして「12345678.99」だったのかしらん !?

電卓の計算は、計算の桁が限られているので、小数点以下の端数を計算するとしても、途中までで切り捨てになっています。ですから、上記の計算は、正確にはこんな風になっているのです。

11÷9 = 1.222222222222222... (以下、限りなく2を繰り返し)
111÷9 = 12.3333333333333... (以下、限りなく3を繰り返し)
1111÷9 = 123.44444444444... (以下、限りなく4を繰り返し)
11111÷9 = 1234.555555555... (以下、限りなく5を繰り返し)
111111÷9 = 12345.6666666... (以下、限りなく6を繰り返し)
1111111÷9 = 123456.77777... (以下、限りなく7を繰り返し)
11111111÷9 = 1234567.888... (以下、限りなく8を繰り返し)
111111111÷9 = 12345679

ここで、電卓でつぎの計算を行ってみましょう。

2÷9 = 0.222222222222222... (以下、限りなく2を繰り返し)
3÷9 = 0.333333333333333... (以下、限りなく3を繰り返し)
4÷9 = 0.444444444444444... (以下、限りなく4を繰り返し)
5÷9 = 0.555555555555555... (以下、限りなく5を繰り返し)
6÷9 = 0.666666666666666... (以下、限りなく6を繰り返し)
7÷9 = 0.777777777777777... (以下、限りなく7を繰り返し)
8÷9 = 0.888888888888888... (以下、限りなく8を繰り返し)
9÷9 = 1


最後の計算を除いて、全て小数点以下が繰り返しになっております。

0.222222... という数は、2÷9, 2/9の小数点表記である事が判りますが、この0.222222... という数を分数で表現するには、どうしたらいいのでしょうか。

  1. ■=0.22222... と置きます。
  2. 10×■=2.22222... ですネ
  3. 10×■-■=9×■ですが、同時に、=2.22222... - 0.22222.... = 2 と計算できます。
  4. 結果として、9×■=2, ■=2÷9 という計算がわかりました
ちょっと、狐につままれた様な話ですが、細かい事は学校の先生に聞くなどして頂戴。同様に、0.99999... が、1と違うのか、同じなのか、この方法で調べてみましょう。

  1. ■=0.99999... と置きます。
  2. 10×■=9.99999... ですネ 
  3. 10×■-■=9×■ですが、同時に、=9.99999... - 0.99999.... = 9 と計算できます。
  4. 結果として、9×■=9, ■=9÷9=1 となる事がわかりました !

小学生の皆様なら「電卓を使った夏休みの自由研究」というネタで、自分の文章で書かれてみてはいかがでしょうか。


【親御さんへ】
昨今では、100円ショップでも8桁程度の計算が出来る電卓が売られております。
しかし、学校の教材として電卓を買い与えるとなれば、是非とも関数電卓を選択され度 !
昨今の関数電卓は、2000円程度から近場のホームセンターで入手可能です。少し足を伸ばせば、1000円程度で買えるものもあります。

2015年6月28日日曜日

短いコードの「お中元」

先日来、JulyさんでHP50G, HP Primeほかの入荷があった様で、徐々に販売されて居ります。
Amazonのレビューに、neuro_drive 様がレビューを投じておりました。

HP Primeは未だ、「日本語クイックリファレンス付き」ではありませんが、既に日本語マニュアルPDFがwebでも取り寄せる事が出来、冊子としての日本語クイックリファレンスが添付されるのは、もう暫く先になるのかも知れません (もっとも、あと5日でJuly、もしかして、何か動きがありや ?)。
一方、アベノタレナガシミクスで円安も進行、10月には消費税も上がるので、輸入製品の価格が高騰する事も予想されており、こうした製品が欲しい向きは、今のうちに買っておくのが良いのかも知れませんが、それはさておきます。

6月もそろそろ終わりですが、HP Prime使用の方に、ささやかながら「お中元」を。Clifford attractor というグラフィクスのコードです。
4つのパラメタ A,B,C,D を色々と変えてプログラムを実行すると、様々な意匠を表示します。

// title : Clifford attractor for HP Prime
// begin : 2015-06-22 19:29:08  
// note  : 

EXPORT Clifford(a, b, c, d)
BEGIN
// Clean the screen (G0)
RECT();

LOCAL i;
LOCAL x, y, xp, yp;
LOCAL xmin, xmax, ymin, ymax;
//LOCAL a, b, c, d;

//a := -1.4; 
//b :=  1.6; 
//c :=  1.0; 
//d :=  0.7;

Xmin := -3.2;
Xmax :=  3.2;
Ymin := -2.4;
Ymax :=  2.4;

x := 0.5;
y := 0.5;

FOR i FROM 1 TO 10000 DO
  PIXON(x, y, RGB(25, 128, 240));
  xp := SIN(a*y)+c*COS(a*x);
  yp := SIN(b*x)+d*COS(b*y);
  x  := xp;
  y  := yp;
END;

//  key wait loop
REPEAT UNTIL GETKEY() == -1;
FREEZE;

END;

ホーム画面から
Clifford(1.38, 1.65, 1.2, 0.7)
の様に打ち込んでやると、実行されます。 
 
HP Primeは、QVGAのカラー画面を持っていて、グラフ電卓のなかでは比較的高いグラフィクス機能を持っています。そして、pコードJITコンパイラでプログラムが実行されているらしく、プログラムの実行速度は割合早いものです。

エミュレータで実行すると、すぐにも実行結果が得られるのですが、それはPCのパワーが強力だからなので、実機で実行すると、どの程度になるのか、お知らせ戴くと有難く思います。

2015年6月14日日曜日

素晴らしい !「CLASSWIZ」の記事

先ずは、以下の記事をお読み戴き度。

異様に欲しくなった電卓の話 カシオCLASSWIZ - 週刊ASCII
http://weekly.ascii.jp/elem/000/000/339/339010/

開発者のホンネがみっちり詰まった、とても読み応えのある良い記事です。

そういや、CLASSWIZって、2 way powerでした。ここまで省電力で動くために回路設計を限界まで作りこんでいた、素晴らしい成果だった、と !
何故、2 way powerに拘ったのか ? それは、世界で広く使われる事を意識しているからです。「乾電池なんて近所のコンビニで買えるでしょうよ」という国は、実の所、そんなに多くはないのです。一方、太陽光ならば、広く世界を照らし出している。常に手元に置いて、すぐに使えるという理想を実現するのは、2 way power、だった。ウーン。流石は世界企業 !

で、大変素晴らしい取り組みであり、記事でありますが、当blogとしては、つぎのお言葉がチョット気になってしまいました。
 帰国してカシオの新入社員に聞いてみたところ「難しくて使いこなしていない。使っていたのはせいぜいLOGと三角関数だけだ」という返事が戻ってきたことに落胆し、どうにかせんといかんと討議をはじめた。

「電卓のいいところは、手軽で大事に扱わなくても大丈夫で、ポンと押したらすぐ出てくること。ものさしや鉛筆みたいに使えなければならない。そこを忘れて多機能に入ってしまうと、スマホに全部食われてしまう。電卓のいいところを残して、プラスアルファを作っていく必要があると思うんです」
ウーン。なるほど「高機能電卓」はウケが悪い ... 。
道理で、なかなかfx-5800Pの後継機が出ない、のか ?

どうせ鄙びた辺りの当blog、見ていないだろうから以下、好き勝手な事を書きます。

「多機能になるとスマホに喰われてしまう」いうのは、確かにそう感じる所もありますが、一方、高機能電卓にしても、スマホのタッチスクリーンよりも使いやすいボタン操作ですから、スマホとは別モノとして普及する余地はあるのだと思うのですヨ。

「難しくて使いこなしていない。使っていたのはせいぜいLOGと三角関数だけだ」という返事が戻ってきたことに落胆し、の所ですが、これは如何ともしがたい、遺憾な状況であります。
今日に至るも、関数電卓は未だに「エレキ計算尺」という位置付けに過ぎず、高機能電卓の存在意義は無くなってしまったのか ?
その昔、世界に初めて登場したグラフ電卓はCASIOのもので、液晶パネルの高解像度化が進む中で投入された、実にエポックな製品だった。ポケコンの次の製品世代であり、グラフ機能を盛り付ける事で、計算に対するリテラシイの向上につながるものかと期待されたため、発売に至ったのではないか。
グラフ電卓が、より高機能電卓の開発に拍車をかける事になったのですが、今日では「普及が見込めない」という理由からか、開発に積極性が無くなってきてしまった。

確かに、高機能電卓を欲しがる人なんて、ごく少数ではあります。しかし、TI, HPはそれでも作っているじゃありませんか !
そこで、CASIOにも、高機能電卓を出して欲しく思うのです。
計算リテラシイの向上に寄与するとなれば、例えばfx-5800Pの様にプログラム機能を盛り付けるとか (fx-5800Pも単4電池1本で動くスグレモノでした !)。そして、今日的には外部ストレージのパスを用意し、プログラム・データのPCとの共有を図る。fx-FD10 proがそうだった様に。

普及価格帯の関数電卓でもやることは沢山あるのは判りますが、高機能電卓もやって欲しいのです。

「頼むから、そんな悲しい事を言わないでくれよ ... 」

HP50GでZINTによる階乗計算が9999! まで計算できるという話なので、実行してみました

エミュレータでは割合早いそうですが、実機は結構掛かります。
ちなみに、9999!の「桁数」がどうなるのか。こんな事で求まる筈です。
50Gが計算中なので、TI83+でのプログラムを。

PROGRAM:LIMIT
:0→S
:For(I,1,9999)
:S+log(I)→S
:End
:Disp "FACTO",S

1から9999までの足し算ですが、流石に実行時間が掛かり、最終的に得られた値は、35655.45427 という値。これは log(9999!) の値なので、概算では 2.846259e35655 という値になります。桁数は、35656桁。なるほど、これではすぐに結果は出そうもありません。
今もって、50Gは計算中です。ホントに終わるのか心配になってきたヨ ... 。

で、最終的に 01時間28分 で計算が終わりました !

追記
実行時間の表記を変えました。

2015年6月11日木曜日

「Leapfrogs !」

「Leapfrogs」というゲーム(というかパズル ?)があります。

# ゲームの目的

一本の木の上に、右を向いたカエル(A)と左を向いたカエル(B)が4匹ずつ、並んでいます。カエルA, B の間には、カエル1匹が入るだけの狭い空間(_)があります。

    BBBB_AAAA

カエルA, B は、お互いに「向こう側」に行きたがっているのですが、細長い木の上なので、身動きが取れません。そこで、カエルをつついて移動させ、つぎの状態に持っていくのが、このゲームの目的です。

    AAAA_BBBB

1本の木の上なので、カエルをつつく事で、

  • のそのそと、となりのコマに移動できます
  • 一匹分のスペースをジャンプして、移動できます
どのカエルをつついて動かすか、その指示を与えるには、カエルの場所にある番号を指定します。

    123456789            ←場所 (インデクス)
    BBBB_AAAA        ←カエルの配置状態 (ステージ)

最初は、3, 4, 6, 7 のカエルのみが移動できます。例えば、ここで3のカエルをつついて移動させると、3に居たカエルは4のカエルをジャンプで飛び越し、5へ移動します。

    123456789            ←場所 (インデクス)
    BB_BBAAAA        ←カエルの配置状態 (ステージ)

こうしてカエルをつついて移動させ、最終的に

    123456789            ←場所 (インデクス)
    AAAA_BBBB        ←カエルの配置状態 (ステージ)

の状態に持って行きます。
慣れてきましたら、カエルを移動させる回数を出来るだけ少ない手順で行う方法を探求してみるのが面白いでしょう。
簡単なパズル・プログラムなので、高機能電卓でも十分楽しめるプログラムが作成できると思います。

この記事では、久しぶりにHP35Sで動くプログラムを作成しました。


# 使い方

HP35S では、文字列の加工が出来ないので、苦肉の策として16進数表示を使ってみました。空白の表示は「C」となっています。
  1.  [XEQ] L [ENTER] で起動
  2. C = 1 の様に、試行回数を表示
  3. つぎの書式でステージを表示

    123456789h    ←インデクス
    BBBBCAAAAh    ←「カエル」表示
  4. 移動対象のカエルをインデクスにて指定し、[R/S] を押して入力します
  5. 「上がり」状態になれば「CLEAR !」と表示され、最後に操作回数を表示して、プログラムは終了します
  6. 上がりでなければ、2. へ戻り、繰り返しになります
#  変数

C        試行回数
I, J    配列変数操作インデクス
M        移動するカエルの位置
S        空白の位置

Reg(1)...R(9)        ステージ状態


# プログラム

L001    LBL L
L002    DEC
L003    1
L004    STO I
L005    4
L006    STO(I)
L007    1
L008    STO+ I
L009    4
L010    STO(I)
L011    1
L012    STO+ I
L013    4
L014    STO(I)
L015    1
L016    STO+ I
L017    4
L018    STO(I)
L019    1
L020    STO+ I
L021    3
L022    STO(I)
L023    1
L024    STO+ I
L025    5
L026    STO(I)
L027    1
L028    STO+ I
L029    5
L030    STO(I)
L031    1
L032    STO+ I
L033    5
L034    STO(I)
L035    1
L036    STO+ I
L037    5
L038    STO(I)
L039    1
L040    STO C
L041    5
L042    STO S
L043    VIEW C
L044    PSE
L045    1.009
L046    STO I
L047    0
L048    16
L049    *
L050    RCL(I)
L051    +
L052    ISG I
L053    GTO L048
L054    1
L055    +
L056    +/-
L057    ENTER
L058    ENTER
L059    AAAACBBBBh
L060    x=y?
L061    GTO L092      ; 上がり判定
L062    R↓
L063    123456789h
L064    x<>y
L065    HEX
L066    STOP          ; 入力部分
L067    DEC
L068    STO M         ; 
L069    RCL S
L070    -
L071    ABS
L072    2
L073    xL074    GTO    L089      ; 入力が範囲外か ?
L075    RCL M
L076    RCL S
L077    x=y?
L078    GTO L089      ; 空き位置の指定 ?
L079    RCL M
L080    STO I
L081    RCL S
L082    STO J
L083    RCL(I)
L084    STO(I)
L085    3
L086    STO(I)
L087    RCL M
L088    STO S
L089    1
L090    STO+ C
L091    GTO L043
L092    1
L093    STO- C
L094    SF 10
L095    CLEAR !
L096    PSE
L097    CLEAR !
L098    PSE
L099    CLEAR !
L100    PSE
L101    CF 10
L102    VIEW C
L103    RCL C
L104    RTN

このプログラムでは両側に4匹ずつのカエルが配されています。この場合、最小の手数が24手になるとの事です。
詳しくは、次のサイト様で色々な解説がありますので、御参考下さい。

『カエル跳びゲーム』解答
http://math.a.la9.jp/akaeru.htm

かなり昔に、ポケコンでプログラムを作ったのですが、その時は「最小の手数が24手」というのが、どうにも判らんかったのでした。

グラフ電卓の愉しみ #2 - Pickover Attractor

グラフ電卓には、それなりのグラフィクス機能があります。簡単なプログラムで興味深いグラフィクスを描き出す「Clifford Attractors」のプログラムを作成してみました。

Clifford A. Pickover 氏によるアトラクタで、en wiki には、2DのClifford attractor、3Dの「Pickover attractor」がある、と書かれています。3Dの表示はPCでも少々手数が掛かってしまうので、2D表示で出来るClifford attractor について、行ってみました。
Clifford attractorについては、以下のサイトで例が示されています。

Clifford Attractor
http://paulbourke.net/fractals/clifford/

ここで紹介されているグラフィクスは高性能のコンピュータを使って描き出されたものですから、これがそのままグラフ電卓で再現できるわけではないのですが、大まかな所は十分に描き出される筈です。

先ずは、TI-83+ で描いてみました。プログラム自体は実に簡単ですが、結構時間が掛かります。

PROGRAM:ATTRCT
:AxesOff
:ClrDraw
:0.5→X:0.5→Y
:For(I,1,1000)
:Pt-On(X,Y)
:sin(AY)+Ccos(AX)→Z
:sin(BX)+Dcos(BY)→Y
:Z→X
:End

プログラムを実行する前に、細かい指定を行っておかないとなりません。

1. Clifford attractor では、A, B, C, Dの4つのパラメタを変換させる事で、様々な意匠が得られます。プログラム実行前に、変数A, B, C, Dを予め指定しておきます。

例)
1.32→A : 0.804→B : 2.568→C : 1.824→D

2. つぎに、グラフを描く範囲を指定しておきます。TI83+の場合、グラフ電卓の機能として描図領域の設定等を電卓のメニューから行います。X, Y共に、-4~+4の範囲で描くと、いい感じです。

ついでにHP50GのSysRPLで作成したものを掲載しておきます。UserRPLより断然早いのですが、それでも1分以上掛かってしまいますネ。
こちらの場合は、スタックにA, B, C, Dの数値を積み、プログラムを実行します。
描図範囲は PPAR を参照するので、プログラム実行前に[WIN]キー([Left-Shift]+[F2])で描図範囲を設定して下さい。

!NO CODE
!RPL

::

0LASTOWDOB!
CK2NOLASTWD
CK&DISPATCH1
#1111

  ::

  GETXMIN GETXMAX GETXMIN %-
  GETYMAX GETYMAX GETYMIN %-

  { LAM a LAM b LAM c LAM d LAM xmin LAM xrng LAM ymax LAM yrng } BIND

  CLEARLCD
  TURNMENUOFF

  80 131 MAKEGROB
  GROB>GDISP
  TOGDISP

  ' ID X PURGE
  %0.5 ' ID X CREATE
  ' ID Y PURGE
  %0.5 ' ID Y CREATE

  1000 0 DO
    LAM a ID Y %* %SIN LAM c LAM a ID X %* %COS %* %+
    LAM b ID X %* %SIN LAM d LAM b ID Y %* %COS %* %+
    ' ID Y STO ' ID X STO

    ID X LAM xmin %- LAM xrng %/ %131 %* COERCE
    LAM ymax ID Y %- LAM yrng %/ %80  %* COERCE
    PIXON3
  LOOP

  ABND
  ;
;
@


グラフ電卓の愉しみ #1 - Sierpinski gaskets

プログラムで描くグラフィクスという事で、今回は「Sierpinski gaskets」を御紹介。

TI-83+のマニュアルには、Sierpinski gaskets を「乱数を使う手法」で描くプログラムが掲載されています。
Sierpinski gasketsは「再帰図形」なので、再帰処理によって描く事が出来るのですが、TI-83+には再帰処理のメカがないため、乱数を使う手法を例示していたのでした。

HP50GでRPLを使うと、再帰処理のプログラムを作成できます。今回も懲りずにSysRPLで書いたプログラムを示します (もちろん、UserRPLでも書けます)。

ユーザーが使える「スタック」を用意する事で、BASICでも再帰処理のプログラムは書けると思います。Androidの「BASIC !」には、スタックのメカが用意されておりました。3DSのプチコンにもスタックのメカがあるそうです(藤堂様、多謝 !)から、再帰処理プログラムの作成は可能です、多分。
(こちゃこちゃしてしまい、当方、着手出来ず。申し訳ない。loadがガンガン上がって、頭から湯気が出ております ...)

!NO CODE
!RPL

::
  '
  ::
    {
      LAM ax LAM ay LAM bx LAM by LAM cx LAM cy LAM d
    } BIND

    LAM d #0= ITE
    :: 
      LAM ax 80 LAM ay #- LAM bx 80 LAM by #- DRAWLINE#3
      LAM ax 80 LAM ay #- LAM cx 80 LAM cy #- DRAWLINE#3
      LAM bx 80 LAM by #- LAM cx 80 LAM cy #- DRAWLINE#3
    ;

    ::  
      LAM ax LAM ay 
      LAM ax LAM bx #+ #2/ LAM ay LAM by #+ #2/ 
      LAM ax LAM cx #+ #2/ LAM ay LAM cy #+ #2/ 
      LAM d #1- LAM sier EVAL

      LAM ax LAM bx #+ #2/ LAM ay LAM by #+ #2/ 
      LAM bx LAM by 
      LAM bx LAM cx #+ #2/ LAM by LAM cy #+ #2/ 
      LAM d #1- LAM sier EVAL

      LAM ax LAM cx #+ #2/ LAM ay LAM cy #+ #2/ 
      LAM bx LAM cx #+ #2/ LAM by LAM cy #+ #2/ 
      LAM cx LAM cy 
      LAM d #1- LAM sier EVAL
    ;
    ABND
  ;

  { LAM sier } BIND

  CLEARLCD
  TURNMENUOFF

  80 131 MAKEGROB
  GROB>GDISP
  TOGDISP

  65 80 25 1 105 1 4
  LAM sier EVAL
  SetDAsTemp

  ABND
;
@



SysRPLで再帰大作戦

SysRPLで再帰処理を書くにはどうするのか、気になって居りました。

ここでは、再帰処理による階乗計算の例を示しておきます。

!NO CODE
!RPL

::
  { LAM n } BIND

  LAM n %0 %> 
  ITE 
    ::  LAM n DUP %1 %- ID facto %*  ;
    ::  %1 ;
  ABND
;
@


これをASM でコンパイルし、スタックに載っているSysRPLコードを「'facto' STO 」とやって保存すると使える様になります。CK2とか使っていないので、パラメタは決め打ちです。実数として明確にスタックに数を置き、引き続いてfacto と打ち込みます。
例えば、70の階乗を求めるには、「70. facto」とやってやります。70の後に少数点をつけて実数とするのです。

実は、局所変数に関数定義を束縛し、呼び出すという技法があります。

SysRPL Recursion Question - comp.sys.hp48
https://groups.google.com/forum/#!topic/comp.sys.hp48/JrtXN0bz1QU

上記ではAckermann functionの例が出ておりますが、こちらでは上と同じく階乗の例を示しておきます。

!NO CODE
!RPL

::
  '
  :: 
    { LAM n } BIND
    LAM n %0=
    ITE
      :: %1 ;
      :: LAM n %1- LAM facto EVAL LAM n %* ;
    ABND
  ;
  { LAM facto } BIND
  LAM facto EVAL
  ABND
;
@

冒頭の「'」は、以降のプログラム節 (「::」と「;」で括られたもの) をQuoteする、というものです。これにより、

  :: 
    { LAM n } BIND
    LAM n %0=
    ITE
      :: %1 ;
      :: LAM n %1- LAM facto EVAL LAM n %* ;
    ABND
  ;

の部分を実行(評価)せずに、「そのまま」の状態でスタックに置く、というイメージです。続く「{ LAM facto } BIND」によって局所変数(シンボル)facto に束縛します。
更に「LAM facto EVAL」で、factoシンボルに束縛されたプログラム節をEVALにて評価する事で、実行します。
最後は「ABND」で、BINDで束縛した局所シンボルスコープを脱し、プログラムの終了という具合です。

2015年5月14日木曜日

近々、HP Primeのアップデートがありそう ?


ftp://ftp.hp.com/pub/calculators/Prime/

を覗くと、文書以外のファイル(Conn kit, Virtual Calcなど)がスッポリ抜けております。(2015/05/14 現在)
新しいイメージを準備中なのかな ?

追記 on 2015/05/15
2015/04/27のイメージが登録されておりましたネ。

週刊「ポケコン・プログラミング」は難しいか ...

こんな話題がありました。

求む週刊「○○」 デアゴスティーニ・ジャパンがアイデア募集 - IT media
http://ebook.itmedia.co.jp/ebook/articles/1505/13/news147.html

との事で、デアゴがアイデア募集とな。そこで、当Blogしては「週刊 ポケコン・プログラミング」というものを思い付きました。毎週、プログラム・ライブラリを収録した紙媒体(冊子)を付録するのです。創刊号には「特製ポケコン」つきで、特別価格・4980円 !
しかし、これでは創刊号だけしか売れず。デアゴの商売としては毎週買って貰いたいので、これではダメです。ウーン。

で、毎週買わせるという工夫としては、毎号付いてくるパーツを集めないと、モノが構成出来ないというやり方になってしまうので、こうしたやり方に合うものは何かないか、と思案した所、「週刊 電子工作」というのはどうだ !
ブレッドボードやら抵抗器、コンデンサなどのパーツを五月雨式に付録して、冊子には回路図などを載せる。週刊百科の電子ブロック、てな具合ですナ。

「ヤラナイカ」というとアヤシイ物言いですが、やったら面白かろうに、と思うのです。どうでしょ ?

2015年5月3日日曜日

経産ドリル優子 #1 - 球面上の2点間の距離

余り有用なネタも提供できないので、今回は、過去に書いた簡単な計算式の御紹介記事を再掲、という事でお茶を濁そうかと。

Solvreの演習
http://akatuki-724.blogspot.jp/2009/06/solvre.html

記事では、2点の緯度、経度から、大圏距離を計算する式を紹介しています。

「経産ドリル優子」というのは北関東の某の事であります。声に出して読むと「けいさんどりるゆうこ」で、元々は「計算ドリル」を入力しようとしたら、こんな事になってしまった ... 。

しかし、面白いから今後もこのフレーズで計算式の紹介をして行こうかと。いけたらなぁ ... 。

2015年4月30日木曜日

HP50g : SysRPLで配列を扱うためのメモ

SysRPLにも配列(行列、ベクトル)を確保するためのコマンドがいくつかあります。まずは「^MAKEARRY 」というコマンドを使ってみようと思いました。

HP49G Entry Reference
https://staff.fnwi.uva.nl/c.dominik/hpcalc/entries/hp49g/entries.pdf

には、SysRPLの多くのコマンドが掲載されています。しかし、これに従ってコードを書いてみたのですが、なかなかうまく動いてくれません。(注意 ! このコードは確実に暴走します)

!NO CODE
!RPL
::
  { 3 } %2.3 ^MAKEARRY
;
@

ホトホト困り果て、調べてみた所、どうやら足りないモノがあった模様。

HP49G SYSRPL ^MAKEARRY HELP - compgroups.net
http://compgroups.net/comp.sys.hp48/hp49g-sysrpl-makearry-help/123989

によると、「If the command start with ^, add FPTR2」とあります。^MAKEARRYの様にキャレットで始まるコマンドを使う場合、FPTR2 を付けよ、という具合らしい。エェッー、そんなん聞いていないヨ !!
そんな具合で、取り敢えず「配列を作る(だけの)」プログラムは、こんな具合になりました。

!NO CODE
!RPL
::
  { 3 } %2.3 FPTR2 ^MAKEARRY
;
@

  1. { 3 } で作成する配列の大きさを指定し、
  2. 各要素の初期値を %2.3 (実数値の2.3) として、
  3. FPTR2 ^MAKEARRY で配列を作成します。

これで作成できるのは配列と言っても「ベクトル(1次元配列)」です。大きさの指定を変える事で行列(2次元配列)も作成できます。

配列を作る命令語には、ほかに「^XEQ>ARRY」などがあります。^XEQ>ARRYは、スタックから、配列の大きさと構成する要素を取り出して配列を構成します。キャレットが付いているので「FPTR2」を忘れずに。
配列の要素取り出しには「GETATELN」、要素設定には「PUTEL」があり、この辺りのコードを使った習作を示しておきます。

!NO CODE
!RPL
::
    %0 %1 %2 %3 %4 { %5 } FPTR2 ^XEQ>ARRY
    DUP
    #4 SWAP GETATELN DROP
    %5 %* #3 PUTEL
;
@

無事に実行が終わると [0. 1. 15. 3. 4.] というベクトルがスタックに残っている筈です。

大して長いコードではないのですが、勉強しながらの作業なので暴走させる事もしばしばです。

今回は、リセットが効かない暴走を経験しました。リセットを掛けようとON+[F3], ON+[F1]+[F6] を押しても、反応がないのです。画面の下、4/5が真っ黒くろすけになって、動きがないのですね。これはコマッタ。

Educalc.netに「電池抜きリセット」(電池を全て取り外し、15分以上放置新聞)というTipsが出ていたので、藁をもすがる思いで試したのですが、電源を入れても同様の状態です。ウーム !?
検索していたら、「FlashROM更新とセルフテストメニューの呼び出し」という話題が見つかって、「そうだ、コレだ」と試してみる事にしました。ON+[F3]が効かないので、電池を入れる前に「+」、「-」キーの両方を押しておき、押しながら電池を装填するという奇っ怪な技でメニューの呼び出しに成功し、セルフテストも一通り問題ない事が確認できました。ハードウェアはイカれていない様子。そこで判ったのは「SysRPLの暴走で、FlashROMが書き換わってしまった」という可能性です。
現在、最新のROMは2.15で、これは一度書き込んでいるので、手元にイメージはあります。早速、SDカードによるFlashROMの書き込みを行い、ようやく復旧したという次第です。ヨカッタ、ヨカッタ。


2015年4月12日日曜日

今年に入ってから、ロクな事を書いておりませんが

何か、オモロイ話題はないものか、とwebを渉猟するものの、なかなかネタが落ちているモノではありません。

最近は月に1本程度の記事しかないので、ホント、アクセスも減っているのですが、昨日はどうした風の吹き回しか、ミョーにアクセスが増えておりました。しかし、トップの記事である「ネタに困ってしまって」という記事ばかり。どういう事なのか ?

新年度を迎え、中には高機能電卓を入手し「高機能電卓で色々とやってみよう」と思う方も居られるのか、とは思うのですが、なかなか、そうした向きに送る記事というのが書けないで居り、自らの非力に歯噛みをする思いであります。
新年度早々、気分が落ち込む様な記事で申し訳ない。4月の内から5月病、片山殺気。

参ったなァ。ロクな事書かねぇヨ ... 。

(コメント戴いても、返事が書ける状態ではないので、御容赦戴き度)

2015年3月13日金曜日

ネタに困ってしまったので ...

CASIO fx-5800P が安く買える様です。

連載:価格情報・週末が狙い目
高精細液晶の防水タブレットが1万9800円! 大画面のWin 8ノートも1万8800円で発見
http://trendy.nikkeibp.co.jp/article/column/20150312/1063124/?P=5

最近、fx-5800Pは価格が上がっておりますから、この価格(4980円)は結構オトク ?

fx-5800Pのプログラミングについては、以下のサイト様を参考に。

http://egadget.blog.fc2.com/


2015年3月1日日曜日

電卓ネタではありませんので、

先程、統計情報をみた所、昨日(02/28)にやたらとアクセスが伸びておりました。普段、40くらいのページビューしかないのですが、この日に限ってダントツで、442のページビューです。

どういう事なのか ? スパムが急増したのかな、コワイコワイ。

「異常現象」だけに、以上。何か、ヤバイ事がなければいいのですが。


2015年2月24日火曜日

こんな夢を見た ...

(長い割に面白いネタではないので、最後まで読まなくても結構です、ハイ)

黒崎監督の映画「夢」ではありませんが、こんな夢を先日、見たのでした。

本屋(最近は足が遠のいておりますが)に行くと、平積みで厚めの週刊百科っぽい書籍が積まれておるのです。厚さは4cm 程度でしょうか。何故か「東洋経済」のムック本の様な体裁で、書名が「懐かしい"ポケット・コンピュータ"が帰って来た ! 特製ポケコン付き」と、驚く内容。厚いのは、ポケコンが付いているからなのです。
そして、ポケコン本体だけではなく、少し厚めの「プログラム・ライブラリ」がセットになっている。ポケコンの方はというと「fx-5800P」の様な感じのもので、実際にはポケコンではなく「BASICプロ電」なのですが、今日的には、fx-5800Pは十分立派にポケコン、と言って良いものでしょうや。しかも、価格が3980円くらい、とかなりオトクな感じ。「こういうの出してくれないかなぁ」という当方の願望が出た、そんな夢なのであります。



先日、Sharpのサイトで昔の電卓のカタログが閲覧できるとかで、少し覗いて見たのですが、カタログ中、ポケコン PC-1210/11 の所に「プログラム・ライブラリ」の写真があります。
昔のポケコンには「すぐにも使ってもらおう」、「計算の即戦力」という事で、冊子のプログラム・ライブラリが付録しておりました。そこには、ゲームはもとより、様々な計算例が掲載されていたのです。
実際にプログラム・ライブラリにあるプログラムが実際にどこまで実用になったのか、定かではありません。しかし、ユーザーはライブラリにあるプログラムをちまちまとキー入力し、プログラミングの勉強も兼ねて、さらに自分の作業に適用する様改変し、使っていたのだと思うのです。場合によっては、プログラムの勉強と同時に、適用分野の勉強にもなったのかも知れない。

あさかぜネット様では、測量の計算プログラムをPDFにて公開しております。当方、あさかぜネットの試みというのは、結構「いいなぁ」と思うのです。実に面白い。測量の計算にプロ電を使う事で「より効率的な業務を」という、あさかぜネットの業務に対する愛情の現れなのであります。

一応「著作物」なのでPDF をここで示すことは致しませんが、一般に公開されているものなので、誰でも気軽に入手できます。fx-5800P のユーザーならずとも、PDFをダウンロードしプログラムを読む事で、そのプログラムがどんな事をやっているか、よく判ろうというものです。
また、やす様のサイトでも、fx-5800P のプログラム・ノウハウがとても広範に公開されて居ります。

さて、なんでまたこんな事を書いたのかというと、過日「あさかぜネットでダウンロードしたPDF を5800に入力できない」という検索ワードで、こちらに見えられた方が居られました。
あさかぜネットでは、fx-5800Pへの入力についても丁寧に解説されています。実際、上記の検索でトップに出るのが、あさかぜネットのページです。所が、当方の所にも訪問されておりました。そこで、当方としても無い知恵を絞って考えたのですが、どうもこんな具合なのか ?
「最近、fx-5800P を買ったのはいいが、プログラミングの勉強も兼ねて、あさかぜネットのPDF を入力しようとしたものの、うまくいかない。どうしよう ?」
問題としては、
  1. fx-5800Pの使い方に習熟していないため、プログラム入力方法の内、細かい所が判らない
  2. そこで、使い方に習熟するため、あさかぜネットのPDF を入力しようとした。しかしうまく行かない
というプロセスがループになっているのではないか。

昔なら、それこそ「マニュアル嫁」だったのですが、今はweb時代、「ググれ」という事で当方の所にも訪問されたのでしょう。果たして、当方の所には「fx-5800Pのプログラム入力について」の情報がなかった。本来ならば、あさかぜネットのページをよく読めば出ているのですが、それでは納得できなかったのでしょう。

高機能電卓は、ある意味「ユーザーを選ぶ」所があります。使用以前からプログラミングについての理解があるユーザーならば、マニュアルを紐解くだけである程度は使えるでしょう。しかし、今日では、プロ電、ポケコンなどの高機能電卓は廃れ、プログラミングの労なく、スマートフォンが使用できます。こうしたユーザーに高機能電卓を活用してもらうには、プロ電のプログラミングについて一から教える努力、マニュアルについても十分丁寧な解説が必要なのかも知れません。いや、それこそ「高機能電卓を何に使うか」その根源的な命題を説かなくてはならないのか、とさえ思うのです。

その昔、ポケコンやプロ電などでプログラムを覚えた方々ならば思い出される事と思いますが、プロ電などのプログラムは、ペーパーウェアのコードをちまちまと自分で入力したものです。少し長いプログラムコードになると、一発で入力できるものではありませんから、何度も印刷されたリストと首っ引きで誤りを探します。
こういう環境では、どうあっても「自分で解決」しないとなりません。何が間違いだったのか、プログラムの内容を検討する事も必要になってきます。そうして、プログラミングに対する知見を深めていったのです。それは、極端な事をいうと「自己との対話」でもありました。
ポケコンのマニュアルは、そうしたプログラミングの学習を補助する部分もあり、また、普通の関数電卓よりも高機能だった事もあって、そうした機能の使用法の説明も書かれていました。CASIOのPB-100なんかにはマニュアル以外に「プログラミング教則本」が付録していた程です。

PCやスマートデバイスが普及し、エンドユーザー・プログラミングの廃れてしまった今日、高機能電卓はその役割を果たしたかの様に、市場は縮小してしまいましたが、それでもCASIOやHP, TIは製品を投入している。それは、かくも多くのエンドユーザー・コンピューティングが(目に見えてはいないものの)広く需要として存在しているからなのだと思うのですが、今日、それをより広げ進めるには、より丁寧な使い方を解説したマニュアル、プログラム・ライブラリなどの充実が望まれる所、と思えてならないのです。

web上には、あさかぜネット様や、やす樣のサイトなど、非常に役立つ情報が公開されております。しかし、それらはfx-5800P利用の「基礎」を知っているからこそ、より活用できるものです。まずは、fx-5800P自体の利用の基礎をしっかりと確認するため、最初の情報としてマニュアル類が充実する必要があるのではないか。

最近のHP 電卓のマニュアルは残念ながらそうでもありませんが、昔のものは、それこそ「読み物」としても十分面白いものでした。読み物として面白いマニュアルにある例題を読みながら、実際に電卓を叩いて答えを出す、というプロセスを経て、高機能電卓の使い方に習熟していったのでした。それは、マニュアルを一通り読めばすぐに使いこなせるというものではありませんで、比較的長い期間、習熟に時間を割く事になります。高機能関数電卓の使用は、十分な知見がないと習熟しないという事でもあります。ある程度長い時間を掛けて習熟するとなると、マニュアルや教則本なども「読んでいて興味を持てる」ものでないと続くものではありません。

高機能電卓の機能に例えば、方程式ソルバや数式記憶機能があります。
  • 数式記憶機能は、ひとつの数式を記憶させておき、数式のパラメタを色々と変化させた所で、どういった数値が得られるのかを簡単に繰り返し計算出来る機能です。
  • 方程式ソルバは一本の方程式を入力し、指定した変数の数値解を求める機能ですが、考えようによっては数式記憶機能をより高機能にしたもの、とも取れます。
こうした機能自体は、内容が判っていればすぐにも使えるものかも知れませんが、電卓の機能としては特殊なため、キー操作や使用の目的、用例など、使い方について少し説明が必要でしょう。

そして、その先のプログラミング機能です。プログラムの概念をある程度知っている方ならば、マニュアルの説明だけで十分に使えるでしょう。しかし、今日はプログラミングをしなくとも使えるIT機器が多く普及している事から、意外にプログラミングの概念を知らない人が多いのではないか、と思われます。
面倒な勉強をしなくてもすぐに利用できる機器、道具が身近にあって使用されるという事、それはそれで良いことではありますが、そうした道具でも、専門的な利用をするとなると、どんな動作をしているのか、ある程度は把握していないとなりません。

今日「ゆとり教育、ゆとり世代は使えない」という意見がまかり通っております。その一方で、ゆとり教育以前の世代が、どうにも非ぬ事をやっている所もあります。それは「ゆとり教育がおかしい」のではなく、既に教育そのものがおかしい事になってしまったのではないか。
海外出兵を声高に叫ぶ首相ですが、一方で教育改革を標榜し、その実体は「<道徳>まで詰め込み教育にするでちゅ!」との事。いや、そうではなく、もっとじっくりと物事を考えられる教育が必要なのです。首相の様にインスタントに「やりたい事をするでちゅ!」じゃなくて、歩みは遅くとも、しっかりと自分の考えを培う教育を、です。(この段落、余り書いていると「特定機密」になりそうですから、ココマデ。物言えば、唇寒し秋の風)





「こんな夢」を見て以来考えていたのですが、ここで、本Blogの提言としまして、つぎの事を言い度。
  • これからの高機能電卓には「プログラム機能」を付けよ
  • そして、充実した内容のプログラミング教本とプログラムライブラリを付けよ
  • プログラミング教本は、螺旋綴じで開いたまま置ける様にし、電卓を操作しながら読める様にせよ
最後のはまんま、昔のHP電卓のマニュアルなんですけどネ。

さて、CASIOサマ。こんな感じの「教則本+プログラムライブラリ」付きプロ電・ポケコンとか、出してくれませんかね ? 微力ながらも協力致し度思いますが。



2015年1月24日土曜日

HP Primeの話題

最近、Julyさんの所でも言の葉に上らないHP Primeですが、英語版製品を購入して、Conn Kitにてファームをアップデートすると、ヘルプが日本語になっていたり、マニュアルPDFに日本語版が入って来る様で、着実に日本語対応は進んでいる模様です。

以前、sentaro 様に教えてもらったftpページですが、どうも2015/01/14から、日本語マニュアルPDFなどがダウンロード出来る様になっていました。HP Primeの購入を検討されている方は、ここからエミュレータと日本語マニュアルPDFを入手、Windowsにて試用し、検討してみては如何でしょうか。

ftp://ftp.hp.com/pub/calculators/Prime/

興味深いのは、Conn kit, Emulator に加え、Data Streamer の日本語PDFが「準備中」となっている所です。この辺りが準備出来たら、印刷物のQuick Start Guide付きHP Primeが発売されるのかなぁ ?

2015年1月12日月曜日

テンキー付きフィーチャーフォンが発売されるとか

こんな話題があるそうです。

シャープが開発中の「Android搭載ガラケー」は折りたたみ式、今月下旬にKDDIから投入 - すまほん さん
http://smhn.info/201501-android-garaho-made-in-sharp

当方としては、S社が作るケータイとかスマホなんてぇのはどうでもいいのです。
では、何でこの話題が気になったのかというと、「キーの付いているAndroid端末」というのが、大変気になった次第。そうか、Android端末にもキーボードが付いたモノが出るというのか !

Android端末は、スマートフォンばかりではなく、色々な所に顔を出しているそうです。例えば、過日、泣く泣く(なのかは不明ですが)電子辞書事業を閉めてしまったSIIは、Androidベースの電子辞書を出していたとか。
また、SONYはAndroidベースのWalkman を販売しています。

ちょっとした高機能電子機器製品のOSとしてAndroidが使われている、そのAndroidを使ったテンキー付きのフィーチャーフォンが、これから登場する、との事で、そこが興味深いのです。

ならば、Androidベースで、テンキー、関数キーを装備した「Android高機能電卓」とか出たら面白いのではないか ! と思ったのです。一部の高機能電卓には、既にARMプロセッサが採用されて久しく、更に、カラー液晶も採用されている。ならば、つぎのステージは「Multi-Task OSを実装した電卓製品」て、面白いんじゃね ? と。

ARMプロセッサ方面では、「mbed OS」というものが登場したとも言われています。mbed OS は、組込み用プラットフォーム「mbed」のOSらしい。イベントドリブンなどの軽量なメカを盛り込んでいるとかで、省電力デバイス向けのOSであり、まさに高機能電卓にはうってつけなのであります。

ARMがIoTプラットフォーム「mbed OS」で大切にする3箇条 - MONOist
http://monoist.atmarkit.co.jp/mn/articles/1411/04/news027.html

折しも、高機能電卓も新しいフェーズに入りそうな予感がする今年、こうした道具立てがモゾモゾとうごめいているので「何か素晴らしい事」が起こりはしないのか、と、鄙びた辺りから言の葉に寄せてみました。

My, God, It's full of Stars !

2015年1月4日日曜日

謹賀新年

あけまして御目出度う御座います ! 今年も宜しくお願い申し上げます !!

来年の事を言うと鬼がどうとか、よく言われる所ですが、新年早々、昨年の話題を言うと何が笑うのかしらん !?
迂闊にも、こんな製品が出るとは知りませんでした。

Casio fx-JP900 - eGadget 様
http://egadget.blog.fc2.com/blog-entry-147.html

fx-JP500/700/900 という3つの製品が出るそうです。プレスリリースが2014/11/27になっているので、もう1月以上前の話ですが、発売は徐々に行われている様で、最上位機が登場するのは、2月の模様。

日本語メニュー表示という辺り、結構来ています。最上位機のJP900は「表計算」機能があるとの事で、「!」と思ったのですが、これは期待しすぎでした。既にfx-995ESにある「数表計算」の機能が少し良くなった、という感じらしい。
数表計算は、計算式を記憶しておき、指定した刻み幅で計算式の数表を表示する機能です。結構便利なものですが、表計算というと、今時はExcelを思い浮かべてしまい、マクロとか考えてしまいかねないので、チョット注意、ですね。

しかし、この計算機群が、それでも注目されるべきなのは、日本語メニュー表示でしょう。これは、液晶の解像度が向上した事で実現されています。この価格帯の電卓製品に載る高解像度液晶が登場したという事であります。また、日本語表示、といってもメニュー表示だけですから、フォント・パタンを一通り用意する必要はないのでしょうが、決め打ちだとしても、それなりのグラフィクス・メモリなどを持っている訳ですから、電卓ICのマスクROM容量が飛躍的に増大した、と見てよいのでしょう。
また、最上位機のJP900では、数式をQRコード変換、専用サイトにてスマートフォンでグラフなどに表示するという、面白い機能を付けたとの事。Pomera DM100の様なアプローチが、何とも興味深い。

これらは、従来の関数電卓ラインナップ「fx-995ES, fx-915ES, fx-375ES」を置換するものらしい。ホームセンターにも置かれるものなのです。関数電卓入門機の表示が日本語になり、数式表示もより高解像度で行われるという、快挙であります。流石に、従来製品に比して価格が若干上がってしまう様ですが、実売価格は従来製品に上乗せ1000円程度になる感触です。

残念ながら、JPシリーズにプログラム機能はありません。しかし、関数電卓入門機のベースがJPシリーズになった、と観れば、今後は「高解像度・日本語メニュー表示」のfx-5800P後継機種が登場する可能性が出て来た、と思えてならないのです。
fx-5800Pの後継機を仮に「fx-JP6000P」としておきましょう。こんな機能を期待したい所です。
  • 日本語表示が可能なプログラム機能
  • PCとの連携、もしくはSDカードなどの外部ストレージによるアプリケーションの供給
  • 出来れば、高解像度化に伴うグラフ表示
先日、近所の量販店に行った折にfx-5800Pを探したのですが、既に店頭にはありませんで少々寂しい思いをしたのですが、そろそろリプレースの時期になったのではないか、と。

新年早々から、こんな妄言を垂れてしまいましたが、CASIOなら結構やってくれるのではないか、と期待してしまうのです。