仮想計算機構

IT業界と無縁な派遣社員のブログ

Algorithm

JavaScriptによるチューリングマシン その1

丸岡章氏による著作「計算理論とオートマトン言語理論」のp.148には正しい括弧を受理するチューリングマシンの例があります。ちょっと勉強がてら実装してみます。この本ではテープの記号とマシンのヘッドを1行に並べて表示する「様相」という方法が出てきま…

バブルソートの可視化

バブルソート可視化。 ソートの過程でswapした要素も可視化しています。 www.youtube.comScreencastifyで動画とったのでとやたら画質が悪いですね。 動画のとり方は今後工夫したいところです。

基数ソートをカラフルな円で可視化する

In-placeではない基数ソートの可視化。 以下、Screencastifyで作った動画になります。 www.youtube.comコードはぐちゃぐちゃですが一応↓にあります。 jsfiddle.net 参考文献・参考サイト アルゴリズム 基数ソート - Wikipedia 奥村晴彦『C言語による標準アル…

バブルソートをカラフルな円で可視化する

円を使ってバブルソートを可視化しました。

Canvasによるバブルソートの可視化

CanvasのRectangleを使ったアニメーションを以前作りました。*1今回はそのプログラムを利用してバブルソートを可視化してみました。何番煎じだよって感じではありますが、車輪の再発明も大事ってことで。 *1:https://riverta1992.hatenablog.com/entry/2020/…

Schemeでカラフルな図形を描く

カラーコードを使っていい感じのグラデーションを作りたいと思っていましたがRGBを順番に変化させたとしてもカラフルな画像は作れなさそうです。ネットで色々探していたところ、HSLなるものを知りました ↓ これだ! いろんな色の指定方法とカラーコードの仕…

Schemeでセルラー・オートマトン

人工生命の本*1が積読になっていたので読み始めました。何番煎じかわかりませんが1次元セルラー・オートマトンで遊んでみたいと思います。以下、筆者の実行環境です。 OS : WIndows 10 CPU : Intel Core i5 2.60GHz 言語 : Gauche 0.9.9実験のために以前作…

バブルソート

奥村本を参考にバブルソートの実装。arrayではなくlistを使う。 前回同様C言語っぽい感じで。コードは以下の通り。 (define (bubblesort a) (define n (length a)) (define k (- n 1)) (define x 0) (define j 0) (do ;;; update () ;;; condition ((< k 0))…

選択ソート

奥村本を参考に選択ソートの実装。arrayではなくlistを使う。 再帰などは使わずにC言語っぽい感じで。コードは以下の通り。 (define (selectsort a) (define min_a 0) (define k 0) (define n (length a)) (do ((i 0 (+ i 1))) ((>= i (- n 1))) ;;; body (s…

グラフィックスの下準備 その1

Schemeでシミュレーションの可視化がしたい。。。 というわけでグラフィックスのプログラムを準備していきます。奥村さんの本でビットマップファイルを扱うプログラムがあるので、同様のことをSchemeでできるように頑張ります。奥村本p.63にはWindows BMP形…

自然対数の底

Schemeで自然対数の底の計算。 リファレンスを参考にしつつ、反復回数を100にして実験してみる。 (define n 1) (define e 0) (define a 1) (define max_loop 100) (do ([i 0 (+ i 1)]) ([= i max_loop] [print e]) (begin #|(print e)|# (set! e (+ e a)) (s…

エジプトの分数

エジプトの分数 与えられた分数「m/n」を「1/xの和」に書き換えるプログラム。 C言語で書かれた奥村晴彦さんのプログラムを参考にしつつ適当に書いてみた。 (define (f m n) (if (= (remainder n m) 0) (cons n ()) (cons (+ (floor (/ n m)) 1) (f (- (* m …

値の交換

Schemeで値の交換 (define a 10) (define b 5) (print "a is " a) (print "b is " b) (print "Exchange!!") (define c a) (define a b) (define b c) (print "a is " a) (print "b is " b) Gauche 0.9.9での実行結果は以下の通り。 a is 10b is 5Exchange!!a…