Let's write β

プログラミング中にできたことか、思ったこととか

2012-10-01から1ヶ月間の記事一覧

Arduinoが届いた。

int val = 0; #define LED 13 void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); } void loop() { val = analogRead(0); if (val > 750) { digitalWrite(LED, LOW); } else { digitalWrite(LED, HIGH); } delay(100); } arduinoが届きました。Ardui…

バイナリサーチ

(defun kv (key val) (cons key val)) (defun make-table (&rest kv-pairs) (make-array (length kv-pairs) :initial-contents kv-pairs)) (defun aridx1 (array idx) (aref array (1- idx))) (defun bin-search (key table) (let ((lo 1) (hi (length table…

二分探索木

(defun kv (key val) (cons key val)) (defun tree (val left right) (list val left right)) (defun tree->val (tree) (car tree)) (defun tree->left (tree) (cadr tree)) (defun tree->right (tree) (caddr tree)) (defun leafp (tree) (and (null (tree-…

一次元セルオートマトンギャラリー

(ql:quickload :lispbuilder-sdl) (ql:quickload :lispbuilder-sdl-gfx) (defclass <world> () ((cells :initform () :initarg :cells :accessor cells) (rules :initform () :initarg :rules :accessor rules))) (defun make-world (len) (make-instance '<world> :cells </world></world>…

XTESTでマウスカーソルを動かしてみた。

XTESTではマウスカーソルを動かす事もできるので マウスカーソルを正多角形の頂点の形にうごかすというのをやってみました。 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <math.h> #include <X11/Xlib.h> #include <X11/extensions/XTest.h> #define PI 3.141592 void usage(); void finish(int sig); double</x11/extensions/xtest.h></x11/xlib.h></math.h></signal.h></stdlib.h></stdio.h>…

XTESTを利用してオートクリッカー

Synergyのソースコードを久々に読みなおして各OSでクリック動作など各動作を疑似再現する 方法を確認しなおしていたのでちょっと練習にとオートクリッカーをつくってみました。 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <X11/Xlib.h> #include <X11/extensions/XTest.h> void usage(); </x11/extensions/xtest.h></x11/xlib.h></unistd.h></signal.h></stdlib.h></stdio.h>…

円形グラフプロット

角度と値を元にした円形のグラフを書く必要がある場面があったので、 とりあえずの出力結果を確認するためにlispbuilder-sdlをつかって書いてみました。 (ql:quickload :lispbuilder-sdl) (ql:quickload :lispbuilder-sdl-gfx) (defun read-plot-data (file-…

GCCのコンパイル力を知った

GCCでswitchを使ってると、明確に確定値の場合はswitchが自動的に必要最小限の 演算に展開さていることを知った。 まずは子のCのコード #include <stdio.h> main() { switch('a') { case 'a': printf("hoge"); case 'b': printf("fuge"); } } みてのとおりswitch整数</stdio.h>…

SBCLのdisassembleの結果を比較する

SBCLでdisassembleを用いてアセンブラ(?)を出力した時に番地などの詳細情報がでてきて diffをとって比較するのが困難なので、ちょっと必要な部分だけを抽出してくれるawkスクリプトを書いてみました。 { if(NF >= 5 && $3 ~ /.*:/) { print $3,$5,$6,$7 }…

液晶ディスプレイのノイズを利用して作曲ができるかもしれない

今気がついて、正確には把握していないのですが、液晶ディスプレイを表示している時にその表示内容によって異る周波数のノイズがスピーカラーから本当に微量ですが出力されている事に気がつきました。 この音と表示色の関係を把握したら、この音を増幅してデ…

Cの引き数のスタックへのつまれる順を利用して訳がわからない事を

スタックに積まれる時は後ろの引き数から順番に評価するという事で #include <stdio.h> void showargs(int x, int y) { printf("X: %d, Y: %d\n", x, y); } int main() { int x = 0; showargs((printf("case1 x: %d\n", x), x = 1, x), x); x = 0; showargs((printf("</stdio.h>…

OpenCVで顔のパーツの位置の取得

とりあえず雑にやってみました。 #include <opencv/cv.h> #include <opencv/highgui.h> void detectObj(const char *cascade_name, IplImage *img, IplImage *gImg, CvMemStorage *storage, int maxcount) { CvHaarClassifierCascade *cascade = 0; CvSeq *seq; int i; static CvScalar colo</opencv/highgui.h></opencv/cv.h>…

Catrobat(Catroid)で遊びたい

先日Nexus7をGoogle for Entrepreneur Weekで賞をいただきNexus 7をチームに一台いただきました。 そのNexus 7はどうせならということでチームの共有財産にしているのですが、それを触らせてもらっていたらあまりにも楽しかったので、自分で買ってしまいまし…

Haskellでラムダ式をパース

import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Char import Control.Monad data LambdaExpr = Var Char | Lambda LambdaExpr LambdaExpr | Apply LambdaExpr LambdaExpr deriving (Show) identifier :: GenParser Char st Lam…

Haskellで論理式をパースして遊ぶ

昨日の昼ごろなんとなくパーザを書きたくなり、ちょうど論理式のパーザなんかが短時間で書くには適切なものだろうと思いまして書いてみました。Parsecのハイパワーな機能をつかってしまうことも考えたのですが、どうせならなんとなく自分で構造をくみ上げて…