2008-01-01から1年間の記事一覧

Google Chrome

なんか最近 Project Euler のソースばっかり貼ってて、日本語を全然書かないのもどうかなぁと思ったので、 Google Chrome について書いてみる。といってもただの感想なので内容はない。 Google Chrome がそこらじゅうで話題になってたので、流行に乗り遅れま…

Project Euler: Problem26

import Data.List countCycle n m stack | rem (n*10) m == 0 = 0 | otherwise = case findIndex (== rem (n*10) m) stack of Nothing -> let remainder = rem (n*10) m next = n*10 - (div (n*10) m)*m in countCycle next m (remainder:stack) Just x -> x…

Project Euler: Problem35

昔の問題のコードを流用してるので、primes の使い方がちょっとおかしいような。"123"から["123","231","312"]を作る部分(begin-end-untilのとこ)は某 id:mallowlabs さんと少し話したのだけど、なんか普通の書き方になった。counter をインクリメントすると…

Project Euler: Problem40

import Data.Char main = print $ summation 1 $ concatMap show [1..] summation n (x:xs) = case n of 1 -> digitToInt x * summation (n+1) xs 10 -> digitToInt x * summation (n+1) xs 100 -> digitToInt x * summation (n+1) xs 1000 -> digitToInt x …

Project Euler: Problem14

class Collatz @@h = Hash::new def Collatz.collatz(n) if (@@h[n]) @@h[n] elsif (n==1) 1 elsif (n % 2 == 0) tmp = collatz(n/2) @@h[n] = tmp 1 + tmp else tmp = collatz(3*n+1) @@h[n] = tmp 1 + tmp end end def Collatz.findlongest(n) max = 0 max…

Project Euler: Problem14 (改良版)

あまりにも遅いので人の解答を参考にした。ディクショナリ(ハッシュ?)のキーを文字列にしているのはなんかよくわからん。文字列のほうがいいものなのかな? class Problem10 def Problem10.calc(last) primes = {} (2...last).each {|n| primes[n.to_s] = n}…

Project Euler: Problem21

いわゆる現実逃避である。 sumOfDivs x = sum $ filter (\y -> rem x y == 0) [1..(div x 2)] amicables = filter (\n -> let t = sumOfDivs n in n == sumOfDivs t && n /= t) [2..10000] main = print $ sum amicables

Project Euler: Problem47

決して暇なわけではない。 import Data.List prime = p [2..] where p (x:xs) = x : p (filter (\y -> rem y x /= 0) xs) factor n = f n prime where f 1 _ = [] f n (p:ps) | rem n p == 0 = p : f (div n p) (p:ps) | otherwise = f n ps finder 4 (x:_) …

デバッガ

情けないことに、デバッガってあんまり使ったことがない。使ったことがあるのは gdb くらいだけど、特に使い方を覚える努力をしなかったからまともに使えないし、そもそも C を書くことがなくなってしまったし。(昔プログラミング C# を読んだときに、Visual…

オープンソースカンファレンス2008 Nagoya

今日はオープンソースカンファレンス2008 Nagoya に参加してきた。といっても主に聞いたのは昼の Lightning Talk だけなんだけど。発表された id:yoshihiro503 さんと O さん、おつかれさまでした。それから、OSC 開催側の人、おつかれさまでした。(ここで言…

Project Euler: Problem124

Haskell だと "(1,2) import Data.List prime = p [2..] where p (x:xs) = x : p (filter (\y -> rem y x /= 0) xs) factor n = f n prime where f 1 _ = [] f n (p:ps) | rem n p == 0 = p : f (div n p) (p:ps) | otherwise = f n ps rad x = product $ nu…

ActionScript

ActionScript の map 関数はなんと引数が3つ。その要素と、インデックスと、配列そのもの。 var x : Array = [1,2,3]; x.map(function(elem:*, idx:int, arr:Array) : Array { ... });

Project Euler: Problem5

素数列を作る関数は今までに何回書いたかわからん…。 import Data.List prime = p [2..] where p (x:xs) = x : p (filter (\y -> rem y x /= 0) xs) factor n = f n prime where f 1 _ = [] f n (p:ps) | rem n p == 0 = p : f (div n p) (p:ps) | otherwise…

Project Euler: Problem92

Scala の練習。 object Problem92 { def step(m : Int) : Int = { var result : Int = 0 var n : Int = m while ( n != 0 ) { result += (n % 10) * (n % 10) n /= 10 } return result } def loop(n: Int) : Boolean = { if ( n==1 ) return false else if (…

Project Euler: Problem92

力技でなんとかなる問題って気楽でいいわー。 import Data.Char step 1 = False step 89 = True step n = step $ sum $ map ((^2) . digitToInt) $ show n main = print $ length $ filter step [1..10000000] ./a.out 49.79s user 0.45s system 99% cpu 50.…

Project Euler: Problem45

なかなか時間がかかっている…。 triangle = [n*(n+1) `div` 2| n <- [1..]] pentagonal = [n*(3*n-1) `div` 2| n <- [1..]] hexagonal = [n*(2*n-1)| n <- [1..]] loop :: [Int] -> [Int] -> [Int] -> [Int] loop (x:xs) (y:ys) (z:zs) | x == y && y == z =…

Project Euler: Problem45

なんだか Haskell だとうまくいかないので Scala で。実際には eclipse プラグインに scala モードがあるのを知ってなんか書いてみたかっただけなんですが。Haskell 版をそのまま移植した説が濃厚。 イテレータを継承してみたりした。コンストラクタの書き方…

Project Euler: Problem 17

やっぱり適当なんだけど…。 strlen 1 = "one" strlen 2 = "two" strlen 3 = "three" strlen 4 = "four" strlen 5 = "five" strlen 6 = "six" strlen 7 = "seven" strlen 8 = "eight" strlen 9 = "nine" strlen 10 = "ten" strlen 11 = "eleven" strlen 12 = …

Opera 設定メモ

Opera 設定メモ。最近いくつかのマシンで Opera の設定をしているのでいい加減うざい…。 アドレスバーからの Google 検索でキーボードショートカットが使えるようにする http://www.google.com/search?q=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8&esrch=B…

Problem 10

えぇーい、力技じゃい。問題を解く場合にはコンピュータが頑張らなければいけないのであって、人間は頑張ってはいけないのだ!(意味が違う) object Problem10 { def natural = new Iterator[Int] { var num = 1 def hasNext : Boolean = true def next : Int…

Project Euler: Problem 12

Scala で超素直に書いてみた、が、止まらない。ドンマイ。Iterator - うなの日記を参考に Scala でイテレータを使ってみた。 object Problem12 { def divisors(n:Int) : Int = { var c = 1 var result = 0 while ( c <= n/2 ) { if ( n % c == 0 ) result +=…

現実逃避的に書いたので

http://blog.tmorris.net/scala-exercises-for-beginners/ せっかくなので貼っておく。 object Exercise { def succ(n: Int) = n + 1 def pred(n: Int) = n - 1 def add(x:Int, y:Int) : Int = if ( x == 0 ) y else add(pred(x), succ(y)) def sum(xs: List…

久しぶりの Haskell

そして久しぶりの Project Euler。今は単純作業なお仕事ばかりやっているのでパズルで気分転換。 isEquiv [] [] = True isEquiv (x:xs) ys | elem x ys = isEquiv xs $ filter (/=x) ys | otherwise = False isEquiv _ _ = False isOK x = let (n:ns) = map …

Agda 大ブーム

Agda というか依存型が(主に自分の周りで)流行っている。id:yoshihiro503 さんが Agda にはまっていて頼もしい感じなのでいろいろ教えてもらえればと思います。

Agda2 じゃなくて Agda1 にする

どうやら Agda2 はまだ主流じゃない(?)ような感じなので、まずは Agda1 を触ってみようと思った。こっちならチュートリアルとかも少しはあるし。というかそもそもの動機の論文では Agda1 を使ってるし…。(最初に気づいとけよ)

Emacs agda-mode の使い方

Agda2 まじわかんない。心折れそう。とりあえず agda-mode で使い方がわかったやつを適当 メモ。そのうち追加します。 C-c C-x C-l agda で証明を開始。 ? 証明がよくわからないところは ? で埋める。 assoc x y z = ? これで C-c C-x C-l とすると ? がゴー…

Filter の Lemma

なときに、である証明。よくわかってない。まず filter の定義。 filter : forall {a} -> (a -> Bool) -> [ a ] -> [ a ] filter p [] = [] filter p (x &#8759; xs) with p x ... | true = x &#8759; filter p xs ... | false = filter p xs で、証明。 mod…

コモンズ・マーカー

http://commonsmarker.com/っていうのがすごい。(http://idm.s9.xrea.com/ratio/2008/07/08/000789.htmlさん経由) これとまったく同じものを作ろうとしておりました(ほとんど手は動かしてませんが)。マークを付ける先はウェブじゃなくて論文pdfのつもりでし…

Agda 練習中です

Agda を勉強中です。いわゆる初心者マークです。どこぞのチュートリアルに載ってたこのコードが通らないので困る。最後の odd k の型が合わないらしい。 あと dotted pattern っていうのもいまいち理解に自信がない。型から値がわかるような仮引数につけるっ…

通りました。疑ってすいませんでした。

summer school library っていうのを使ったら動きました。あとでライブラリのコードを読まねば。 module Views where open import Data.Nat data Parity : &#8469; -> Set where even : (k : &#8469;) -> Parity (k * 2) odd : (k : &#8469;) -> Parity (1 +…