プログラミング

ハノイの塔

Pythonでハノイの塔を解くプログラムを書きました。 GUIの表示にはmatplotlibの棒グラフを使いました。 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation def plot(): plt.cla() plt.xlim(-0.5,2.5) plt.ylim(…

emacsの模様替え

emacsは文字や背景の色を設定できるプリセットテーマを搭載しています。今まで初期設定でやってきたので、emacsのテーマとついでにフォントも変更してみました。before after フォントの変更、テーマのロードはemacs.d/init.elに (load-theme 'wombat t) ;; …

ポーカー遊び完結編

前回のコードに加え、リストをシャッフルする汎用関数(トランプデッキにも適用可能)などを実装しました。デッキを人数分に分けるdistributeも作りました。 randompick [] = return Nothing randompick xs = do x <- randomRIO (0,length xs - 1) :: IO Int r…

Haskellでポーカー?

長いコードになりましたので続きから

Haskellの型クラスを利用した有理数型

タイトル通りです。 data Ration = Integer :/ Integer | AddID instance Eq Ration where (x :/ y) == (x':/y') = let s1 = gcd x y s2 = gcd x' y' in (x `div` s1 == x' `div` s2) && (y `div` s1 == y' `div` s2) instance Show Ration where show (x :/…

高速フィボナッチ

Haskellで書きました。 matrix2 (x1,y1,z1,w1) (x2,y2,z2,w2) = (x2*x1+y1*z2 , x1*y2+y1*w2,x2*z1+w1*z2,y2*z1 + w1*w2) repeat' n f x y | n < 1 = f x y | n == 1 = f x y | n > 1 = repeat' (n-1) f (f x y) y third (x,y,z,w) = z matrxpow m n | n == …

エラストテネスのふるい

エラストテネスのふるいを書きました erast t = let list = [2,3..t] erasti [] = [] erasti (x:xs) = x : erasti (filter (\y -> (y `mod` x) /= 0) xs) in erasti list ふるいに用いられる数字は素数であることが確定するので、再帰的に書けます。

AtCoder Beginner Contest 081を解きました

D問題とけない

AtCoder Beginner Contest 080を解きました

AtCoder Beginner Contest 080を解きました いうてもD問題がまだ解けない == A問題 A: Parking - AtCoder Beginner Contest 080 | AtCoder #include<stdio.h> int main() { int res,N,A,B,p1,p2; scanf("%d %d %d",&N,&A,&B); p1 = A * N; p2 = B; res = p1 > p2 ? p2</stdio.h>…

Haskellでフィボナッチメモ化再帰

さっき挙げたプログラムだとfib(40)ぐらいでもう数十秒ぐらいかかり、だいぶ遅いです。 メモ化再帰フィボナッチをメモしておきます fib 0 = 0 fib 1 = 1 fib x = (fiblist !! (x-1) + fiblist !! (x-2)) fiblist = [fib x | x <- [0,1..]] 実行結果 ghci> fi…

Haskellでフィボナッチ数列

さっそくHaskellでプログラミングしています なかなか新鮮でおもしろいですね fib 1 = 1 fib 2 = 1 fib x = fib (x-1) + fib (x-2)実行結果 ghci> fib 8 21 ghci> fib 10 55Cで書いてもこんなもんですけどHaskellだと簡潔に書けますね

K-means法と画像の階調分類

K-means法とは類似したデータをいくつかのグループに分類するアルゴリズムの一つです。このアルゴリズムを利用して、画像の減色処理を行うプログラムを作りました。 この画像処理のコードについて、昔作ったjavaのコードですが引っ張り出してきました。

ORF、わからない

カメラのRAW画像形式がORFっていうオリンパス特有のファイル形式だったんですが、ファイルの構造がよくわからなくて苦戦しています...。メーカーの独自規格で圧縮されててよくわからないのでjpegとかbmpに変換しての画像処理になりそうです...。

AtCoder-Typical DP Contest C問題をやりました

C問題もやりました。 以下問題文 C: トーナメント - Typical DP Contest | AtCoderProblem Statement 2K 人が参加するトーナメントがある。このトーナメントでは以下の形式で試合を行う。 第 1 ラウンドでは、1 と 2、3 と 4、… が試合を行う。 第 2 ラウン…

AtCoder-Typical DP Contest B問題をやりました

前回に続いてB問題も解いてみました。 問題文以下 B: ゲーム - Typical DP Contest | AtCoder Problem Statement すぬけ君とすめけ君がゲームをしている。最初に、二つの山がある。左の山には A 個の物が積まれており、上から i 番目のものの価値は ai であ…

AtCoder-Typical DP Contest A問題を解きました

AtCoderのTypical DP ContestのA問題を解いてみましたAtCoderというのは、毎週アルゴリズム系のプログラミングコンテストを開催している所謂競プロの主催者です。 このコンテストの問題は、コンテスト後も公開されているので練習がてら解くことができます。 …

キュー

キュー #include<stdio.h> #include<stdlib.h> typedef struct cell{ int id; struct cell *next; }Cell; typedef struct que{ Cell* front; Cell* rear; }Queue; Queue *make_queue() { Queue *que = malloc(sizeof(Queue)); que->front = NULL; que->rear = NULL; return que;</stdlib.h></stdio.h>…

双方向連結リストのインサートソートの書き直し

前記事で使ったダブルポインタを利用して書き換えました #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 30 typedef struct link_tag{ struct link_tag *next; struct link_tag *prev; int id; }linked_list; void delete_element(linked_list*,int); void insert_</time.h></stdlib.h></stdio.h>…

単方向連結リストのインサート?ソート

すでにソートされている単方向連結リストに対して、ソートされている状態が崩れないように 新しい要素を挿入するプログラムを書きました #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #define MAX 100 typedef struct link_tag{ struct link_tag* next; int id; }li</time.h></string.h></stdlib.h></stdio.h>…

3種のオセロAI

前作ったオセロのAIとかにちょっと改良を加えてみました ソースは続きから

双方向リストのインサートソート

タイトル通りなんですけどだいぶ苦労しました... 以下コードです #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 30 typedef struct link_tag{ struct link_tag *next; struct link_tag *prev; int id; }linked_list; void delete_element(linked_list*,int); void</time.h></stdlib.h></stdio.h>…

2分木を利用したコンソールで動く電卓

前回の続きで、電卓が完成しました! #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> void blacket_cut(char[]); enum type{value,symbol}; typedef struct tree_tag{ struct tree_tag *right; struct tree_tag *left; enum type t; int id; char formula[80]; }node;</math.h></stdlib.h></string.h></stdio.h>…

二分木を利用した構文解析

二分木が熱い! 数式の構文解析をするための二分木構造をつくってみました まだ書きかけですが... #include<stdio.h> #include<string.h> #include<stdlib.h> void blacket_cut(char[]); enum type{value,symbol}; typedef struct tree_tag{ struct tree_tag *right; struct tree_tag *lef</stdlib.h></string.h></stdio.h>…

二分順序木を使ったソート

二分順序木を扱うコードをつくってみました。 二分木に対して、右の子の値 >= 親の値、左の子の値 通りがけ走査をすることで値のソーティングができます。 #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 100 //ノードの構造体 typedef struct binaly_tree{ int id</time.h></stdlib.h></stdio.h>…

二分で書けない二分探索

C言語で二分探索をつくってみました #include<stdio.h> #include<time.h> #include<stdlib.h> #define MAX 100 int binaly_search(int array[],int first,int last,int n) { int mid = (first+last)/2; if(first+1 == last){ if(array[last] == n) return last; else return -1; } else </stdlib.h></time.h></stdio.h>…

コードの貼り付け

はてブロでソースコードに色をつけて表示する備忘録">||"と"|| #include<stdio.h> int main(void) { printf("Hello, world!"); return 0; }さらに">|lauguage|"と"|| lauguageには各言語、ex) c,java,pythonなどが入る #include<stdio.h> int main(void) { printf("Hello, worl</stdio.h></stdio.h>…