プログラミング

オセロ必勝法 Part4

(defun Othello () (setq table nil) (setq sq 8) (setq r nil) (defun initable () (defun initableat () (cond ((not table) (setq table '((0 0)))) ((= (caar table) (1- sq)) (setq table (push `(0 ,(1+ (cadr (car table)))) table))) (t (setq table…

オセロ必勝法 Part3

(defun Othello () (setq table nil) (setq sq 8) (setq r nil) (defun initable () (defun initableat () (cond ((not table) (setq table '((0 0)))) ((= (caar table) (1- sq)) (setq table (push `(0 ,(1+ (cadr (car table)))) table))) (t (setq table…

ブッダブロのような何か

言語:mathematica random[] := 4*RandomComplex[] - 2 - 2 I f[z_, c_] := z^2 + c onestep[c_, limit_] := NestWhileList[f[#, c] &, 0, Abs[#] < 2 &, 1, limit] c2pair[z_] := {Re[z], Im[z]} step[limit_, max_] := onestep[#, limit] & /@ Table[random…

オセロ必勝法 Part2

石を返す前に、石を置くのを忘れてました。 あと、initableをちょっと修正しました。 (defun Osero () (let ((table nil)) (defun initable (table sq) (defun initableat (table) (cond ((not table) (setq table '((0 0)))) ((= (cadr (car table)) (1- sq…

オセロ必勝法 Part1

8×8のオセロの必勝法が知りたいので、それを目標にプログラミングしていきたいと思います。 手始めに、オセロ盤のマスを作りました。 言語はEmacs Lispです。 (defun Osero () (let ((table nil)) (defun initable (table sq) (defun initableat (table) (co…

セルオートマトンのルール30の音

言語:mathematica ameba[max_] := Prepend[Table[0, {i, max - 1}], 1] rule30[x_, y_, z_] := If[x == 1, (1 - y) (1 - z), (1 - (1 - y) (1 - z))] evolveat[list_, n_, max_] := (cell = list[[n]]; If[n == 1, leftcell = list[[max]], leftcell = list[…

チューリングマシン

言語:Emacs Lisp (defun turing (input) (let ((tape (make-list 16 0)) (head '(0 0)) (prog nil)) (defun readhead () (elt tape (car head))) (defun writehead (x) (setf (elt tape (car head)) x)) (defun movehead (x) (if (equal x 'R) (setf (car he…

バーニングシップ・フラクタル

言語:Mathematica burnp[c_, limit_, f_] := ( n = 0; z = 0; While[n < limit, z = f[z, c]; If[Abs[z] >= 2, out = False; Break[]] If[n == limit - 1, out = True; Break[]] n++;]; out) list[table_] := ( Map[{Re[#], Im[#]} &, table]) clist[sample_…

Emacsのデフォルトメジャーモードをlisp-interaction-modeにする方法(version 24.5.1)

Emacs-Lispを使っている人にとって、*scratch*バッファのlisp-interaction-modeは重要ですよね。(C-jでS式を評価できたりします)デフォルトメジャーモードをlisp-interaction-modeにするのは簡単で、init.elに次の一文を加えるだけです。場所:gnupack_bas…

AIZU ONLINE JUDGEのELISP解答例(ITP1_1_A~ITP1_2_C)

ITP1_1_A:Hello World (message "Hello World") ITP1_1_B:X Cubic (progn (defun cubic () (let ((x (read))) (* x x x))) (cubic)) ITP1_1_C:Rectangle (progn (defun rectangle () (let ((a (read)) (b (read))) (cons (* a b) (* 2 (+ a b))))) (rectangl…

Lispやってみた2

あれから少し経って、多少なりとも使えるようになりましたが、わからないことだらけです(^_^;)例えば、文字列を出力しようとしても、カッコつきのまま出力されたり、複数の出力ができなかったり・・・あとわかったことは、lispにもいろいろな方言があるとい…

Lispやってみた

Lispを学び始めたんですが、いかんせんLispの解説サイトが少ない・・・ やはりマイナーなのでしょうか? 素数判定のプログラムすらまともに動かない(´・ω・`) なぜ興味を持ったかと言いますと、ラムダ計算ができそうなのが理由です。 良いと思った点は、と…

ドットボックス 3×3 必勝

Dots&Boxesという外国のゲームの3×3の必勝手順を調べました。 結果は後手必勝となったんですが、問題はプログラムを走らせるとあまりにも早く結果が出るんですよね(-_-;) プログラムが間違ってるのか私が間違っているのか・・・ #include<stdio.h> bool dotbox(int *c</stdio.h>…

4つで10

Javaについて少し勉強したので、練習として4つの数字で10を作るプログラムを書きました。4つで10を作る遊びはテンパズルとかメイクテンと呼ばれてるらしいです。 package fourtoten.com; import java.io.*; import java.util.ArrayList; public class …

C言語初心者にありがちなミス

以下、私のやったミス 配列の数 配列を定義するときは1,2,3・・・ 配列を使うときは0,1,2・・・ 数学を勉強している私でも間違える 型と計算とdefine 1/2 == 0 だけど 1/2.0 == 0.5 #define HALF 1/2.0 のとき 1/(HALF) == 2.0 だけど 1/HALF == 0.5 アドレ…