既に fx-CG100 が発売、fx-CG50 は生産終了となっておりますが、珍しい事に、fx-CG50 のアプデが登場しておりました。
ref. fx-CG50 アプデ
https://support.casio.jp/download.php?cid=004&pid=2126
- バージョン履歴
(2025年10月29日) fx-CG50 OSアップデーター(⇒Version 3.81)及び関連アプリソフトの公開 (Windows/Mac OS)
- バージョンアップ内容
(Ver3.80.XX1X → Ver3.81)
軽微な修正
との事で、内部的な不具合の修正、という具合のようです。
これで casioplot.getkey() とかが追加になれば興味深いのですが、マニュアルの更新はなさそうですから、機能面は変更なし、として差し支えなさそう。
他方で、OS に lock を掛ける、というイヤな更新もあるかも知れません。
確か、XCAS は、OS 3.7 では問題なしだったものの、3.8 になって、導入が困難になったそうで、3.7 へ roll back する必要があると記されておりました。
今般の 3.81 は、OS の downgrade を阻止する、そんなイヤなメカが入っていたりしないか、などと思う所。
(当方、未だに 3.40 だったりします)
で、XCAS, PythonExtra を使っていない皆さん、おそらく最後のアプデが提供されましたので、是非ともご利用戴きたく ... !
突然のアプデ襲来に驚いてしまい、出だしはこんな事で始めましたが、先日から、チョット手遊びで、こんなコードを作っておりました。
四角形の中に少し傾けた線を引き、それを繰り返していくと、規則性のある図柄が現れる、というものです。
# recsq.py 2025-10-27但し、やす親分作成の線引き module 「u.py」を使用しております。折角作っていただいたので、有り難く使わせて戴いております。
from math import *
#from casioplot import *
from u import *
a=(86,191)
b=(86,0)
c=(277,0)
d=(277,191)
def sqlin(a,b,c,d):
line(int(a[0]),int(a[1]),int(b[0]),int(b[1]))
line(int(b[0]),int(b[1]),int(c[0]),int(c[1]))
line(int(c[0]),int(c[1]),int(d[0]),int(d[1]))
line(int(d[0]),int(d[1]),int(a[0]),int(a[1]))
def tr(r,p,q):
return (p[0]*(1-r)+q[0]*r,p[1]*(1-r)+q[1]*r)
def recsq(n,r,a,b,c,d):
for i in range(n):
sqlin(a,b,c,d)
b=tr(r,b,c)
c=tr(r,c,d)
d=tr(r,d,a)
a=tr(r,a,b)
recsq(60,0.05,a,b,c,d)
親分、多謝であります !
ref. Casio Python - グラフィックス出力関数の追加 - e-Gadget - プログラム関数電卓
https://egadget.blog.fc2.com/blog-entry-739.html
このコード、元々は再起処理っぽい感じで書いておりました。
def recsq(n,r,a,b,c,d):しかし、繰り返しの回数が 50 になると stack overflow になってしまいました。なんだよ、オイ !
if n<=0:
return
sqlin(a,b,c,d)
b=tr(r,b,c)
c=tr(r,c,d)
d=tr(r,d,a)
a=tr(r,a,b)
recsq(n-1,r,a,b,c,d)
upython では、バルクデータを扱う必要もあって、heap oriented らしく、Stack は少し控えめに配分するのだと思う所です。
で、作業中のコード、入力している最中、「無理に recursive にする必要はなさそうだナ」と、単純な繰り返しにした所、stack 消費がないため 50 を越えて 100 でも問題なく動くと判明しました。
先日来、ダイソーで買ってきた NiMH 電池を使っていたのですが、今日になって、Low Batt replace が出る様になったものの、一度電源をサスペンドすると、一時的に復帰する事をいい事に、使い続けておりました。
流石にこのままではキツそうと、電池交換のため、編集中のコードを保存しておこうとすると、Low Batt 警告が出るのであります。Flash memory は書き込みに電力が要るのです。そこで、一旦サスペンドで電圧回復を図り、保存しなおすという際どい操作で、切り抜けたという具合。(良い子はマネしちゃダメよ)
昔のポケコンでは、RAM に BASIC プログラムを置いておりました。電池が切れると、内容をすっかり忘れてしまうのですが、それを思うと、隔世の感、ではあります。
2 件のコメント:
akatuki様
再起処理を諦めた recsq.py ですが、再起処理に繋がるコードは面白いです。
せっかく line() 関数を使って頂いたので、ついでに線分に色を指定する grp_color() 関数もお味見頂くために、チョコッと触ってみました。
https://egadget2.web.fc2.com/python/akatuki/recsq.html
line() 関数の第5引数は色を指定しますが、色の指定方法は3通り使えるようにしており、0~7の整数で指定する方法を使えば、比較的簡単に色指定できます。
そこで、sqlin()関数に第5引数として col を追加して整数のカラーコードを渡せるようにして、中のline()関数の第5引数に grp_color(col) を追加します。
最後の仕上げとして、recsq() 関数内の sqlin() は、sqlin(a, b, c, d, i%7) とすることで、同じ色変化の繰り返しパターンで正方形に異なった色を付けてみました。
やす (Krtyski) 様、ご来訪戴き、多謝であります !
> 再起処理を諦めた recsq.py ですが、再起処理に繋がるコードは面白いです。
再帰処理(本文の方, 変換間違いでしたネ。スンマセン)っぽい絵を想定していたので、再帰処理で書き始めたのですが、スタックが思いの外、少なかった ...
> せっかく line() 関数を使って頂いたので、ついでに線分に色を指定する grp_color() 関数もお味見頂くために、チョコッと触ってみました。
> https://egadget2.web.fc2.com/python/akatuki/recsq.html
> line() 関数の第5引数は色を指定しますが、色の指定方法は3通り使えるようにしており、0~7の整数で指定する方法を使えば、比較的簡単に色指定できます。
grp_color() ですが、u.py module に収録されているのに、気付きませんで、申し訳ない !
> そこで、sqlin()関数に第5引数として col を追加して整数のカラーコードを渡せるようにして、中のline()関数の第5引数に grp_color(col) を追加します。
> 最後の仕上げとして、recsq() 関数内の sqlin() は、sqlin(a, b, c, d, i%7) とすることで、同じ色変化の繰り返しパターンで正方形に異なった色を付けてみました。
早速、実行してみました。
fx-CG50 は高精細度の画面なので、そこそこヨカッタかな、と思っておりましたが、色分けすると、より見栄えがしますネ。
ありがとうございます !
ついでに書いておきますと、a,b,c,d bind しているタプル、画面上の座標となっております。
a=(0,191)
b=(0,0)
c=(383,0)
d=(383,191)
の様に変更すると画面を目一杯使う事になるはずなので、お試し下さい。
コメントを投稿