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

5puzzle

ゲーム理論の課題でA*探索を実装した. ↓コード // gist.github.com ↓実行結果 紙とペンを使って実行したもの同じになった. g:=世代 h:=盤面Aの各マスの盤面Goalへのマンハッタン距離の和 f:=h+g として[f,g,"前回に移動した向き",盤面]のデータ構造でPriorit…

Python(5)

【リストのメソッド】 append(x) extend(L): リストの末尾に与えられたリストL全アイテムを追加する insert(i,x): リストA[i]にxを挿入する pop([i]): A[i]を返す, A[i]はなくなる index(x): 最初にあるxのインデックスを返す count(x) sort() reverse()

Python(4)

docstring >>>def func(): """ aaaaaaaaaaaaaaaaaa """ print("hello") >>>func() hello >>>print(func.__doc__) aaaaaaaaaaaaaaaaaa

Python(3)

lambda 式 >>>def make_incrementor(n): return lambda x:x+n >>>f = make_incrementor(42) >>>f(0) 42 >>>f(1) 43

Project Euler 96 Su Doku

PE

projecteuler.net 数独の問題 あるマスA[y][x] == 空白ならばそのマスが属する(i)横(ii)縦(iii)ブロックを探索しA[y][x]に入れるべき解の候補を探す. 解の候補の各々に対して再帰的な処理をする. 終了条件は, 答え→空白が無くなった ダメ→A[y][x]について解…

Python(2)

関数は「キーワード=値」の形で引数が取れる. // gist.github.com これにより「第二引数はデフォルトのままでいいけど第三引数に特別に値を入れたい」とかいう場合に役に立つと思う. 1つの引数は2回以上受け取れない.

Python(1)

Python3 エンジニア認定基礎ベータ試験に向けて『Python チュートリアル』の出題が多い章から順に気になったことを書く. 大学の図書館で借りることが出来たのはPython2.x 系のだったが, まあ大丈夫でしょう. 【気になったところ】 // gist.github.com デフォ…

Project Euler 89

PE

難易度は20%と簡単だが, とにかく面倒くさかった. // gist.github.com ローマ数字から数字, 数字からローマ数字に変換できる関数とかはあるのかな? 【追記:すぐ】 問題文を読み落としていることに気づいた. ローマ数字は大きい方から順に書かれる. よって…

Project Euler 204 (2)

PE

// gist.github.com d.hatena.ne.jp このブログを参考に書きました. とても参考になりました. 再帰のイメージを書いて見た. (limit = 1000) pで割り切れなくてもn//pでnを小さくしていけば結局同じなんですね.

Project Euler 204

PE

type 以下の素数のリストをエラトステネスの篩で作る. その素数のみの積で表される数のうちlimit = 10**9を超えない数を数え上げれば良い. もっとも小さい素数は2であり2**n で始めてlimit を越えるのはn = 30であるので, 素数のリストから30個重複を許さな…

Project Euler 146

PE

滅茶苦茶汚いコードだし理論もクソだったのでコードは載せない. 考え方は10<= n <= 150000000まで回してその一つ一つにn^2+1, ..., n^2+27を計算しそれぞれをMR法で素数か判定する. この時全体の時間を考えるとMR法で生成する乱数は少ない方が良い. 3回もや…

フェルマーテスト

nが素数かを判定するプログラムです. フェルマーの小定理に基いて出来ています. フェルマーの小定理は a,n が互いに素のとき 「nが素数 → a^(n-1) modn = 1」 というものです. 対偶をとって 「a^(n-1) modn !=l 1 → nが素数でない(合成数)」 プログラムで書…

Project Euler 173

PE

使うタイルの枚数をn, laminaeの輪郭の正方形の一辺の長さをa, 穴の正方形の長さをb とする. 100以下を考えるとすると b= 1のとき(穴が1*1マスのとき) a = 3, n = a**2 - b**2 =3**2 - 1**2 = 8 a = 5, n = 5**2 - 1**2 = 24 a = 7 ,n = 7**2 - 1**2 = 48 a …

Project Euler 108

PE

ディオファントス逆数の問題 について式変形してとする. これは右辺>0 であるので左辺>0で,y>0なのでとなる. とするとxが最大のときとなりでこのときよってnについてxの範囲はである. が整数になれば良いので以下のようなコードを考えた. gist.github.com し…

Project Euler 107

PE

Project Euler 107番を解く際にPrim法を使用しました. 今後使えそうなので貼っておきます. // gist.github.com

対象物のみ抽出する

GIMPで対象物のみ抽出する方法を学びました. 今回はコチラのフリー素材を使わせて頂きます. まず、ツールボックスから「前景抽出選択」を選びます. 次に,対象物の周りを大雑把に囲みます. 次に,ツールオプションで「前景部分をマーク」「背景部分をマーク」…

ガウスジョルダン法(2)

// 行列Aを上三角行列にして解く方法 上三角行列に出来れば、ベクトルX=[x,y,z]についてz→y→xの順に一つずつ解が求まり簡単だ gist.github.com

ガウスジョルダン法(1)

「数値解析」の講義で示されたプログラムをC++で書きました. // gist.github.com