ABC予想をPythonで調べる

もちろん宇宙際Teichmüller理論とか全然分からない。 計算機で何か分かればいいなというコンセプトでWikipediaをなぞりながら逐一プログラムを書いてゆく。ABC予想 - Wikipedia 数学の難問「ABC予想」、京大教授が解明か :日本経済新聞 ABC Conjecture «…

Let's take tea break | Code Puzzle解題

Let's take tea break | Code Puzzle 任天堂のクイズのやつ。 first_code.py if pow(m, 17) % 3569 == 915: return str(m) となる自然数 m を探す問題。range(10000)ぐらいまでとって総当たりすればよい。数学的に解けるかも? second_code.py あるルールに…

『幅優先探索の基本:ITpro』の例題を解く

2012/09/03 高橋 直大 出典:日経ソフトウエア 2012年7月号 やわらか頭でアルゴリズムを10倍生かす - 第1回 幅優先探索の基本:ITpro [追記 解くと銘打ってますが間違いが多くて参考になりませんごめんなさい] 例題1 200円持ってコンビニに行きました。コン…

ProcessingにおけるtextAlignの挙動

テキストの配置を揃える際はtextAlignを使うのが便利。textAlign() \ Language (API) \ Processing 1.0 (BETA)しかしどのオプションを与えたらどのように配置されるのかいつも忘れてしまうので、ひと目で見て分かるように描き出してみた。まず全くオプション…

ProcessingでBrainfuckインタプリタ(微修正)

jumpToRとjumpToLを修正。滲み出るスキルの低さ。なんか冗長だし色々間違ってる気がするのでもう人のコードを見てしまおう…。 void jumpToR(){ if(buffer[ptr] != 0) return; int t = 1; while(t != 0){ char c = input.charAt(bfpos); if(c == ']'){ t--; }…

ProcessingでBrainfuckインタプリタ(ver 0.1)

30分くらいかかってようやくHello, world!をコンソールに出力するところまでこぎつける。できてないもの。 入力命令 , の実装。 ブラケット(カギカッコ)の対応関係を調べる。 境界エラーの検出。 メモリとポインタの視覚化。 正直BFでプログラミングする予定…

Pythonでコラッツの問題

問題の定義はコラッツの問題 - Wikipediaを参照。 コードは簡単。数列の形で解を得るようにする。 def collatz(x): lists = [] while x != 1: x = x/2 if x%2 == 0 else x*3 + 1 lists.append(x) return lists ステップ数を得る場合はlenを使う。 len(collat…

joinのデフォルトセパレータ

文字列の配列を結合するさい、Pythonでは "".join(['1', '2', '3']) # => '123' という書き方をする。 区切り文字を入れたい場合は、以下のようにすればよい。 "_".join(['1', '2', '3']) # => '1_2_3' さて、RubyにおいてはArrayがjoinを持っていて、それぞ…

Pythonでパスワード生成

問題文 [2/12/2012] Challenge #4 [easy] : dailyprogrammer ランダムパスワードジェネレータを作りましょう! 解答 まず候補となる文字を用意しよう。 問題文リンク先の、トップバッターの解答者のように、 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS…

Python 2.xでカエサル暗号を一行で書く方法

驚いたので書留めておく。Pythonのencodeとはいったい…うごごご "abcd".encode("rot13") # => nopq またdecryptも "nopq".decode("rot13") で一行で書ける。ワンライナーと呼ぶほどおしゃれなものではない。ときにPythonでカエサル暗号というと、import this…

先頭文字の大文字化(capitalize)を使う例題[7/13/2012] Challenge #76 [easy] (Title case) : dailyprogrammer

redditのdailyprogrammerが楽しげです。 問題 Challenge #76 (Title case) : dailyprogrammer 文字列のそれぞれの単語の先頭文字を大文字にする(capitalize)関数を作る。ただしexceptionsで渡された単語は除いて。なおexceptionsに含まれるものであっても文…

コンソールで確率分布表示[7/13/2012] Challenge #76 [intermediate] (Probability graph) : dailyprogrammer

問題 Challenge #76 (Probability graph) : dailyprogrammer low から high までの出力を持つ関数 f を tests 回実行した時の確率分布を出力する。 def two_dice(): return random.randint(1, 6) + random.randint(1, 6) def graph(f, low, high, tests): pa…

matplotlibでランダムウォークをアニメーション

matplotlibのanimation.FuncAnimationを利用すると(それなりに)簡単にアニメーションを作ることができる。animation ― Matplotlib v1.1.0 documentation使い方は次のようになっている。 class matplotlib.animation.FuncAnimation(fig, func, frames=None,…

Python & matplotlibでソートアルゴリズムを可視化

主語を大きく括った割にバブル、挿入、クイックの三種類しか用意してないです。参考:python - Updating a matplotlib bar graph? - Stack Overflow テンプレート import matplotlib import matplotlib.pyplot as plt import numpy as np from random import…

シャッフリングのためにlist.sort(rand)したらうまくいかなかった話

流れ Pythonでsort by randomしようとしたら偏りが出てうまくいかなかった。 シャッフルの偏りはsortの実装に依存しているらしい。 Rubyではsort_by{rand}すれば「ちゃんと」シャッフルできるっていう話じゃなかったっけ? シュワルツ変換というものがあるら…

Pythonのデコレータ(decorator)を理解する 3

承前:Pythonのデコレータ(decorator)を理解する 2 デコレータに引数を渡す 素晴らしい、ではデコレータ自身に引数を渡すにはどうしたらよいのだろうか? さて、デコレータは引数として関数を受け入れる必要があるのでちょっとやっかいだ。デコレータに直接…

『Pythonゲームプログラミング入門』のコードを気取った感じに書き直す

itertoolとかmapとかzipとかを使って。 P98 リスト4-1 すべての色を含む画像の生成(allcolors.py) 元のコード。三重ループなのでネストが深くなってしまっている。 import pygame from itertools import product pygame.init() screen = pygame.display.set_…

PythonでA*(A-Star)アルゴリズムによる迷路探索

人材獲得なんちゃらとかいう少し前に流行った問題を解いてみる。時代おくれの人間。 といっても書いたコードはPythonでA*(A-Star)アルゴリズムに多くを負っている。 実践 処理手順や変数名および関数名はwikipedia:A*に準拠している。一応。評価関数を無駄に…

Pythonのデコレータ(decorator)を理解する 2

承前:Pythonのデコレータ(decorator)を理解する 1 デコレータ詳説 先の例に対して、デコレータ構文を使うと次のようになる: @my_shiny_new_decorator def another_stand_alone_function(): print "Leave me alone" another_stand_alone_function() #出力: …

Pythonのデコレータ(decorator)を理解する 1

StackOverFlow:Understanding Python decoratorsに対するe-satis氏によるデコレータの丁寧な解説。 一つエクスキューズしておくと、翻訳の作法とかよく分かってません。でも頑張ったつもり。つもり。 Imran氏による質問の内容 @makebold @makeitalic def say…

Firefoxで「ユーザ名とパスワードを入力してください」というウィンドウが一定時間ごとに表示される問題

原因は分からなかった。 とにかく消しても消しても何度も表示される。精神衛生上非常によくない。 "ユーザ名とパスワードを入力してください" firefox で検索すると同様の問題が起きている人はいた。アドオンを無効にしてセーフモードで再起動したが治らない…

日記

今日と昨日で読んだ本の一言感想。 ヒロシマわが罪と罰―原爆パイロットの苦悩の手紙 篠原 正瑛 (著), ギュンター アンデルス (著), クロード イーザリー (著) 非常に重要な本。技術的破局と想像力の問題が取り扱われている。Amazonをみても読書メーターを覗…

順列組み合わせの勉強

ちょくちょく必要になるたびに忘れてるので自習。ブログの恥は書き捨て。 方法 おもに高校数学の基礎問題というサイトを読み進め、適宜WikipediaおよびGoogleのお世話になりながら。 ゆっくり自分の言葉で考える。 円順列 例1. 4人の生徒が円形のテーブルの…

generatorで素数

プログラミングHaskellの take 100 primes みたいな書き方にいたく感動したので。 とりあえずitertoolの中にtakewhileというのを見つけたのでそれに合う書き方をしてみた。 takewhile(lambda x: x < 100, sieve()) このように書いて100以下の素数リストを手…

日本語圏のTwitterにおけるツイート長さ分布を調べた

概要 やったことは表題の通り。 データの取得方法はStreaming APIを利用してPublic Timelineを流れた日本語(ひらがな)を含むツイートを保存した。 総ツイート数は100124、期間は途中タイムアウトなどで接続が切れたりして連続していないが12.4.17の16時〜2…

itertools.groupbyを使ってみる

Rubyの先頭のアルファベット別に要素をグループ分けするサンプルを書き換えてみる。 が、ちょっとコケた。 groupbyの挙動を見てみよう。 from collections import defaultdict from itertools import groupby animals = ["cat", "bat", "bear", "camel", "al…

Real World Haskell 3章 練習問題 1〜8

1.リストの要素数を数える関数 myLength [] = 0 myLenght (x:xs) = 1 + (myLength xs) 2.型シグネチャをつける ghciで:tするだけ。 myLength :: [a] -> Int myLength [] = 0 myLenght (x:xs) = 1 + (myLength xs) 3.リストの平均 mean :: Fractional a => [a…

言語処理100本ノック・第2セットを始めるために

Twitterをスクレイピングしている(現在進行形)。python-twitterをインストールしてPublic Timelineを得る次のようなコードを書いた。 # -*- coding: utf-8 -*- import twitter import re import time f = open("tweets.txt", "a") wait = 90 while True: a…

twitterアカウントをとった

そしてアプリにも登録した。 https://twitter.com/#!/hc_e

言語処理100本ノックに挑戦(第1セット)

言語処理100本ノックより。 (1) print len([line for line in open("./address.txt", "r")]) (2) import re print re.compile("\t").sub(" " ,file("./address.txt", "r").read()) (3) col1, col2 = zip(*[line.split("\t") for line in open("./address.txt…