2017年11月22日水曜日

Stern-Brocot木 3

先日のシュテルンブロコットツリーのプログラムのフローチャート。
若いころはフローチャートの必要性が良くわからなかったが、年のせいか、フローチャートが無いとスクリプトを書いている途中で何を書くべきだったかわからなくなってしまう。
数週間後にはスクリプト中のそれぞれの文の役割もあやふやになってきてしまうので、とても重要です。

Stern-Brocot木 2

昨日のStern-Brocot木のプログラムのアルゴリズムの理解のための例題

2017年11月20日月曜日

Stern-Brocot木

Stern-Brocot木で任意の値に近い分数を探すスクリプトをPythonで書いた。比較しつつ降りて行ってその時の分数と入力値との差を表示。
例えば 0.283/1 を 入れると、15/53 とかが近いなというのがわかる。
連分数展開を解くのでも良いと思うが、簡単。



以下Pythonスクリプト(2.7を使用)

#coding: Shift_JIS
#numerator/denominator
cnum = 1
cdenom = 1


def SternBrocot(lnum, ldenom, cnum, cdenom, rnum, rdenom, inputnum):
    ntemp = float(cnum) / float(cdenom) #Cを計算
    if ntemp < inputnum: #入力の方がCよりも大きい
        # C → L
        lnum = cnum
        ldenom = cdenom
        # 分子分母それぞれにつき C + R → C
        cnum = cnum + rnum
        cdenom = cdenom + rdenom
    else: #入力の方がCよりも小さい
        # C → RL
        rnum = cnum
        rdenom = cdenom
        # 分子分母それぞれにつき C + L → C
        cnum = cnum + lnum
        cdenom = cdenom + ldenom
#
    #print "lnum =", lnum, "ldenom =", ldenom, "cnum =", cnum, "cdenom =", cdenom, "rnum =", rnum, "rdenom =", rdenom, "inputnm =", inputnum
    #print "L =", lnum, "/", ldenom, ", C =", cnum, "/", cdenom, ", R =", rnum, "/", rdenom
    ntemp = float(cnum) / float(cdenom) #新しいCの計算
    diff = (inputnum - ntemp)*10**6
    print "C =", cnum, "/", cdenom, "=", ntemp, ", ", diff, " ppm"
#
    if inputnum == ntemp:
        print "終了"
    else:
        SternBrocot(lnum, ldenom, cnum, cdenom, rnum, rdenom, inputnum)

# Main
x = float(input("Please Enter Numerator: "))
y = float(input("Please Enter Denominator: "))
inputnum = x / y
#まずCenter(1/1)と等しくないことを確認しておく
if inputnum == 1:
    print "oshimai" #入力が1だったら終了
else:
    SternBrocot(0, 1, 1, 1, 1, 0, inputnum)

2017年10月9日月曜日

Aone ラベル屋さん9


Aoneラベル屋さんというソフトに関して。
以前より新バージョン9がリリースされているが、これまでのファイルとの互換性がなく、使用していなかったが、使用感が良いならとダウンロード版をインストールしてみた。

写真を貼り付けて印刷する用途に使用しているので、外のフォルダからドラッグ&ドロップできなくなったのは痛い。
仕方なく右側のウィンドウからフォルダを探してフォルダを開いて写真を挿入する。

●外のフォルダからの写真データのドラッグ&ドロップに対応してほしい。以前のバージョンはできていた。
●右側のウィンドウに、絶対ファイルパスをコピーペーストして一気に当該フォルダに飛びたい。
●右側ウィンドウでフォルダを参照している状態で、そのフォルダに写真を追加しても、ラベル屋さんのウィンドウ上に反映されない。一旦上のフォルダに上がって、もう一度そのフォルダを選択すると当然ながら反映されるが。
●あるデザイン面に写真を置いて、違うデザイン面を選択したら右側ウィンドウがリセットされる。写真を置くためにはまた[画像]-[画像]と選択しなければ行けなくて、面倒。そのままの状態にしてくれている方が良い。

良くなった点は、
○全体のプレビューがリアルタイムに見られるようになったこと。
どこにどういう写真を置いたかがひと目で分かるのは良い。

しかしながら全体として旧バージョンの方が使いやすいので、まだ旧バージョンを使い続けることにする。いつか新バージョンに移行できるだろうか。

エプソンとかの方がソフトウェアは便利かもしれない。今のラベルが無くなったら検討してみるのも良いかもしれない。でもラベルのバリエーションはAoneには敵わないような気もするけど。

2017年10月3日火曜日

スバル アイサイト ミニカー 修理


友人にもらったスバル アイサイトミニカー が動かなくなったので修理。スイッチの接触抵抗が高いのが原因と考え、ばらす。バネで金属板を押し付けて電極をショートする仕組み。電極部分を磨いて、ショート用の金属板を押し付け気味に組み立てることで、動くようになった。
 赤外線を出して帰ってきたら止まる、という仕組みのようだ。


2017年9月30日土曜日

電子ピアノ CASIO PX-700 修理



 CASIOのPX-700の、真ん中から2オクターブ上のドの音(1046.5 Hz)が、鍵盤を叩いてもならなくなったので、修理を試みる。
 後ろや前のパネルを取り外し、スライドふたやPX-700と書いてある金属のバーなどを取り外すと、鍵盤を起こせるようになる。下部の、銀色のネジをすべて外すと鍵盤ユニットがフリーになるが、外す必要は無い。
 鍵盤はエーイと力をかければ起きる。

 緑の基板に櫛電極が互い違いになったパターンがあり、それを写真中央にあるネズミ色の豚バナみたいなゴム部品の先の導電性のパターンでショートして打鍵を検出している。
その部分を掃除するうちに音がなるようになってくれた。

 鍵盤を戻すときは一旦鍵盤を支点から外して、手前からはめるようにしないと入らない。

2017年9月20日水曜日

白ロムXperia タッチ切れ 修理

2.5年前から使用している、ソニーのXperia Z3 SOL26(au)がタッチ切れを起こし、右下のタスク表示ボタンが効かなくなってしまった。
長年使用しているXperiaには良くある症状らしく、白ロムでも無償で修理してくれると書いている人もいたため、近くのauショップへ。
預かってもらえ、修理見積もりが出たら連絡をくれるとのこと。
子供たちにも缶ジュースを出してくれた。

ほぼ1週間後に連絡があり、修理金額1100円(税抜)とのこと。
USBポートやSDカードポートのふたが無くなってしまっていたため、 恐らくこの価格はそれらの修理費用であり、タッチ切れ修理は無償なのでは。

高額だったら京セラに乗り換えようと思っていたが、1188円(税込)だったので使い続けることに。
さらに1週間後にauショップに受け取りに行った。

スマホの角にあった傷が無くなっているような気が。
というかこれ新品に見えるが…、さすがに気のせいか。


Xperia Companionでごっそりバックアップ取れているのかと勘違いしていたけど、アプリとかは全部消えるのね。というか自分で初期化してそれでもタッチ切れの症状が出るのを確認してから修理に出したけど。

息子に残念がられてしまったが、これでゲームを忘れてくれればさらに良し。