読者です 読者をやめる 読者になる 読者になる

互除法を視覚化してみる

NodeBox

アルゴリズムとして最も有名なユークリッドの互除法NodeBoxで視覚化してみようというプロジェクトのプロトタイプ。せっかくアニメーションにしたのに動画アップ出来ないからだめだ。NodeBoxの環境入ってる人はぜひ試してみて。今後の発展としては互除法の過程を見せることですね。今は結果の視覚化だけだから、互除法の意味はないので互除しているところを見せつけるのと、最大公約数であることを視覚的に分かりやすく提示することを探る。

from random import randint

size(320,240)
speed(1)
    
def draw():
    j,k = randint(1,100),randint(1,100)
    gcd = euclid(j,k)
    
    tw = (320 - textwidth(gcd))/2
    xj = (320 - textwidth(j))/2 - 75
    xk = (320 - textwidth(k))/2 + 75    
    h = 120
    
    text(j, xj, h - 30)
    text(k, xk, h - 30)
    text(gcd, tw, h + 40)
    
    #fill(125,125,125)
    for i in range(gcd):
        rect(155,180+2*i,10,1)

def euclid(a,b):
    while b:
        a,b = b,a % b 
    return a