「Tiny_Python試用録(7)」

%671:https://github.com/LonamiWebs/Animake」(2)
`▼
--------------------------------------------------------------------------------
(0)[%661]の続きなので,まず「(1)③」を見てください.
(1)参考資料
 ①[%650]/*「What is Python6(5) in this blog ?」*/@ https://www.blogger.com/blog/post/edit/6859150935899261916/6361031757939814839
 ②[%660]/*「How to start Tiny Python」*/@
https://www.blogger.com/blog/post/edit/6859150935899261916/9087668611124546370
 ③[%661](1)③@「https://github.com/LonamiWebs/Animake
(2)[%651](3)の「from PyQt5.QtGui import QColor」から「PyQt5.QtGui」を調査.
 ①https://pythonspot.com/pyqt5-colors/
 ②https://stackoverflow.com/questions/56024338/python-pyqt5-how-to-get-rgb-color-values-of-a-frame
 ③https://gist.github.com/lschmierer/443b8e21ad93e2a2d7eb
(3)(4)
--------------------------------------------------------------------------------
`▲背景色を変更

%672:https://pythonspot.com/pyqt5-colors/」の紹介


--------------------------------------------------------------------------------
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
import random
------------------------------------------------------------
class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt rectangle colors - pythonspot.com'
        self.left = 10
        self.top = 10
        self.width = 440
        self.height = 280
        self.initUI()
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        # Set window background color
        self.setAutoFillBackground(True)
        p = self.palette()
        p.setColor(self.backgroundRole(), Qt.white)
        self.setPalette(p)
        # Add paint widget and paint
        self.m = PaintWidget(self)
        self.m.move(0,0)
        self.m.resize(self.width,self.height)
        self.show() 
class PaintWidget(QWidget):
    def paintEvent(self, event):
        qp = QPainter(self)
        qp.setPen(Qt.black)
        size = self.size()
        # Colored rectangles
        qp.setBrush(QColor(200, 0, 0))
        qp.drawRect(0, 0, 100, 100)
        qp.setBrush(QColor(0, 200, 0))
        qp.drawRect(100, 0, 100, 100)
        qp.setBrush(QColor(0, 0, 200))
        qp.drawRect(200, 0, 100, 100)
       # Color Effect
        for i in range(0,100):
            qp.setBrush(QColor(i*10, 0, 0))
            qp.drawRect(10*i, 100, 10, 32)
            qp.setBrush(QColor(i*10, i*10, 0))
            qp.drawRect(10*i, 100+32, 10, 32)
            qp.setBrush(QColor(i*2, i*10, i*1))
            qp.drawRect(10*i, 100+64, 10, 32)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
------------------------------------------------------------
--------------------------------------------------------------------------------
`▲

%673:試行例
`▼
----------------------------------------------------------------------
(1)ex1.py./*〔「□」の末尾で改行〕*/
 「x = "abc"」,「print(x)」.
・実行結果は
------------------------------
x = "abc"
print(x)
------------------------------
(2)ex2.py./*〔「`」は使用禁止文字[%E2★](1)③〕*/
 「x = "a`c"」,「print(x)」.
 ★https://oshino3.blogspot.com/2020/05/python.html
・実行結果は
------------------------------
x = "a`c"
print(x)
------------------------------
エラーにならない
(3)ex3.py
 「k = 3」,「if: k > 1」,「_   k = 0」,「print(k)
 ・原稿を丁寧に書くと/*〔「'_'」の直後に4個の「'  '」を付加〕*/
\n--------------------------------------#001.1
\nk = 3                                 #002.1
\n`if:_ k > 1                           #003.1
\n_   k = 0                             #004.2
\n                                      #005.1
\nprint(k)                              #006.1
\n--------------------------------------#007.1
・〔「'`'」「'_'」を「' '」で置換した〕実行結果は
------------------------------
k = 3
if k > 1:
    print(k)

------------------------------
(4)[%]ブロックの記法で略記すると扱いやすい
 ・「ex3.`{_k=3;_ `if:k > 1;_\n_    k = 0;_\n print(k);_ \n`}_
(5)「Python6(□)」では背景色の設定は検討しない./*〔「`」「_」の挿入のみ〕*/
 ・解釈実行前に「原稿」の「`」「_」を半角スペースで置換.
--------------------------------------------------------------------------------
`▲

%674:最大公約数の計算/*【[%511P1★]】*/
https://docs.google.com/spreadsheets/d/1kGGxX3YnhtOZE55-eQPF5CdGxB5-q0lakXQQE24qsNA/edit?usp=sharing
`▼
--------------------------------------------------------------------------------
(0)「GCD(851, 185)」を求めよ
(1)「N = M * Q + R」(0 ≦ R < M)とすると「N = M * Γ(N / M) + M * R」
(2)「GCD(N, M) = GCD(M, (N mod M))」./*〔定理 1.1〕*/
(3)互除法の計算「Δ(851 / 185) = Δ(111 / 185)」,「Δ(185 / 111) = Δ(74 / 111)」,
「Δ(111 / 74) = Δ(37 / 74)」「Δ(74 / 37) = Δ(0 / 37)」は一つの式で表現できる
(4)慣用の「連分数★」の略記法では「851 / 185 = {4; 1, 1, 1, 2}」
https://ja.wikipedia.org/wiki/連分数
(5)「(正規)連分数展開」の末尾は「Δ(1 / K)」./*「Δ(K / 1) = 0」*/
(6)「(4)」の右辺のような表現では元の「分数」が分からないので,
「Frac (851, 185;(111, 74, 37, 0))」
のように「剰余」の順列で表示すると末尾の「0」の直前の値が最大公約数になる.
(7)「Δ(17 / 5) = Δ(2 / 5)」,「Δ(5 / 2) = Δ(1 / 2)」,「Δ(2 / 1) = Δ(0 / 1)」だから,
「Frac (17,5;(2, 1, 0))」であり「GCD(17, 5) = 1」
(8)「GCD(17, 5) = 1」であることを『17 と 5 は互いに素である』という
--------------------------------------------------------------------------------
`▲

%6741:タプルによる計算
`▼
--------------------------------------------------------------------------------
(0)【[%674]】の解法例
(1)参考資料
 ①https://en.wikipedia.org/wiki/Euclidean_algorithm
 ②http://www.tohoho-web.com/python/list.html#list
(2)「(1)②」からの引用
  a1 = [10, 20, 30, 40]/*〔list〕*/
  a2 = (10, 20, 30, 40)/*〔tuple〕*/
  a1[2] = 60              # 代入できる
  a2[2] = 60              # エラーとなり、TypeError例外が発生する
 ・要素がひとつだけの時は、最後にカンマ(,)を記述する必要があります。
(3)「851>185」だから「q=(851,)」「r=(185,)」を作る
(4)「q[1]=q[0]%r[0]」「r[1]=q[0]-q[1]*185」
  「q[1]」の整数部は商,「r[1]」は剰余.
(5)「q[-1]=q[1]」,「r[-1]=r[1] ]」を「r[-1]==0」になるまで実行.
(6)「r[k]==0」になったときの「q[k]」が解./*〔このとき「r[k]==1」〕*/
(7)「Python6」のプログラムは
 \n------------------------------------
 \n q=(851,)
 \n r=(185,)
 \n k=1
 \n while:r[k]>0
 \n    q[k]=q[k-1]%r[k]
 \n    r[k]=q[k-1]-q[k]*r[k]
 \n    k=k+1
 \n continue
 \n
 \n print(q[k])
 \n------------------------------------
(8)「Terapad」の原稿では
 ①行頭の「_」は改行,後続する「    」は半角スペース4個.
 ②行内の「`+_」は次行との接続
--------------------------------------------------------------------------------
`▲/*「作業中」*/

%675:エラトステネスの篩
`▼
--------------------------------------------------------------------------------
(0)素数か否かを判定する関数「is_prime()」は作らず「(1)②」のリストを使います.
(1)参考資料
 ①「https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
 ②「https://docs.sympy.org/latest/modules/ntheory.html
 ③「https://oku.edu.mie-u.ac.jp/~okumura/python/prime.html
 ④「https://en.wikipedia.org/wiki/List_of_prime_numbers
(2)「(1)②」からの引用
 ・エラトステネスの動的に成長するふるいとして実装された素数の無限のリスト。
 ・ふるいにかけられていない奇数を含むルックアップが要求されると、
  ふるいは自動的にその数まで拡張されます。
--------------------------------------------------------------------------------
`▲「Chrome」で「(1)」のファイルを開くと「Google」が翻訳して表示.

%676:中国の剰余定理

`▼
--------------------------------------------------------------------------------
(0)「(1)
」([%511P3★])の問題について考える.
(1)参考資料
 ①https://en.wikipedia.org/wiki/Chinese_remainder_theorem
 ②https://en.wikipedia.org/wiki/Primitive_root_modulo_n
 ③https://blog.goo.ne.jp/blogmura-yy/e/44f62cc03d4d7c0d33d6a4fe59e26331

(2)「(1)②」からの引用/*〔「g」は原始根〕*/
 In modular arithmetic, a branch of number theory,
・a number g is a primitive root modulo n
 if every number a coprime to n is congruent to a power of g modulo n.
・That is, g is a primitive root modulo n, if for every integer a coprime to n,
 there is some integer k for which gk ≡ a (mod n). Such a value k is called
 the index or discrete logarithm of a to the base g modulo n.
・Note that g is a primitive root modulo n
 if and only if g is a generator of the multiplicative group of integers modulo n.

(3)「(1)③」からの引用(3)「(1)③」からの引用
------------------------------------------------------------
(0)「Δ(A / 3) = Δ(1 / 3)」,「Δ(A / 5) = Δ(2 / 5)」,
  「Δ(A / 7) = Δ(3 / 7)」として「Δ(A /105)」を求めよ.
/*「105 = 3 * 5 * 7」*/
「F`(X, Y, Z) = 3 * Δ(X / 3) + 5 * Δ(Y / 5) + 7 * Δ(Z / 7)」とする.
「F`(70, 0, 0) = Δ(1 / 3)」,
 「F`(0, 21, 0) = Δ(1 / 5)」,
 「F`(0, 0, 15) = Δ(1 / 7)」.
「3 * Δ(x / 3) = a」,
 「5 * Δ(x / 5) = b」,
 「7 * Δ(x / 7) = c」
 となる「x」は
 「x = 70 * a + 21 * b + 15 * c」./*「Δ(70 / 3) = Δ(1 / 3)」*/
「Frac`(105, 35; (25, 10, 5, 2, 0))」.
「F`(X, Y, Z) = 1」の解「(70, 0, 0)」,「(0, 21, 0)」,
 「(0, 0, 15)」に対応するベクトル
 「(Δ(1 / 3), 0, 0)」,「(0, Δ(1 / 5), 0)」,
 「(Δ(1 / 7), 0, 0)」を「`R^{3}」に埋め込んだベクトルを,
 スカラー倍を整数倍に限定した実ベクトル空間の直交基底に使える.
「(3)」の「x」が一般解
------------------------------------------------------------
(4)補遺
⑦「∠(k / n)」を「(2 * π) * (k / n)」(「π」のフォントはTines)と定めると
 「Δ(k / n)」は単位円上の点「exp(i_* ∠(k / n))」と1対1に対応.
⑧「Python8(□)」で「delta(k, n)」を定義して,これを「Python9(□)」で
 「Δ(k / n)」と表記.
⑨最終目標は「Learning Galois Theory with Python.pdf」/*〔maybe unfinished〕*/
 ・「Galois-3.pdf」@
https://drive.google.com/file/d/1opZjJm-AwT1DLc0bsXywEU3ifjN2spUH/view?usp=sharing 

--------------------------------------------------------------------------------
`▲/*「作業中」*/

%679:EOF(@L2S)

コメント

このブログの人気の投稿

「日記帳(2023 冬)」

ブログの教材で学ぶMATH(1)