2008-09-01から1ヶ月間の記事一覧

"upTo(1,5) => List(1,2,3,4,5)"みたいな関数 upTo を定義しようとして怒られた。Int と BigInt で使えるようにしたかったんだけど。 これは OK。 object UpTo { def upToInt(x:Int,y:Int):List[Int] = { def up(n:Int):List[Int] = if (y==n) List(n) else …

Project Euler: Problem41

前回のやつはスタックオーバーフローするので scala で適当に書き直し。ひどいコードだなぁ。 今回ので"(1 to 5)"とか書けることを知った。 object Problem41 { val digit : Int = 9 val end : Int = List.range(digit,1-1,-1).foldLeft(0)((x,y) => x*10+y)…

Project Euler: Problem41

pandigital の中で最大の素数を求める。1桁から9桁までの pandigital は40万個くらい。このままだとスタックオーバーフローする。 import Data.List pandigitals 0 _ = return 0 pandigitals n xs = do x <- xs xs' <- pandigitals (n-1) (filter (/=x) xs) …

Project Euler: Problem38

残念ながら死ぬほど汚いんだけど…。 object Problem38 { def isPandigital(x:String):Boolean = { for (c <- x) if (c=='0') return false var a=0 var b=0 while (a<8) { b = a+1 while (b<9) { if (x(a)==x(b)) return false b += 1 } a += 1 } return tru…

ffmpeg で youtube -> ipod

(macports の場合) ffmpeg を faac のバリアント付きでコンパイルする必要がある。 $ ffmpeg -i source.flv -f mp4 -vcodec mpeg4 -b 250k -s 320x240 -acodec libfaac -ar 22050 -ab 64k target.m4v

Haskell から C を呼ぶ (FFI)

Haskell から C 言語で書いた関数を呼ぶには。http://haskell.g.hatena.ne.jp/jmk/20060622/1150947486を見れば完璧だが、とりあえずこれだけでいいよ、という最小サンプル的な意味でメモ。 factorial.hs {-# LANGUAGE ForeignFunctionInterface #-} import …

JavaScript から ActionScript 内の関数を呼び出し

JavaScript から ActionScript も、ActionScript から JavaScript も可能だが、とりあえず JavaScript から ActionScript の関数を呼び出す方法をメモ。 まずは ActionScript 側で、JavaScript から呼び出せるようにしたい関数を登録する。以下のように addC…

Mac での MouseEvent.MOUSE_WHEEL

マウスホイールを回してもイベントが発生しないのが問題なんだと思っていたのだが、どうやら自分で MOUSE_WHEEL イベントを発生させてもうまく動作しないっぽい。嘘でした。ちゃんと動作しました。 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init();"> <mx:Label id="counter" text="0" /> <mx:Script> </mx:script></mx:label></mx:application>

ActionScript で、イベントを自分で発生させる

自分自身に対して click イベントを発生させるには以下のようにする。 this.dispatchEvent(new MouseEvent(MouseEvent.CLICK));

Emacs の正規表現置き換え (M-x query-replace-regexp)

以前に id:suer さんに見せてもらって気になっていたもの。メモメモ。 閉じタグのない部分のある以下のような HTML を <p>test string1 <p>test string2<statement>test string1</statement> <statement>test string2</statement>次みたいな XML にお手軽に変換したい!みたいな場合に。だって sed とか使い方よく</p></p>…

はてなダイアリー

はてなダイアリーって普通に HTML のタグが使えたのか! Google へのリンクも自分で作れるし。 …あれ、常識?

mxml がよくわかんない

mxml って、単にクラス定義の別のやりかたなのかと思ってたんだけど、違うんだろーか。 <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:VBox textAlign="center" id="hello"> <mx:Label id="statement" click="test(null);"> </mx:Label> </mx:VBox> <mx:Script> </mx:script></mx:canvas>

scala で id 関数

Scala の id 関数(というか polymorphic な関数)は以下のように書く。Java っぽい。 scala> def id[T](x:T) : T = x id: [T](T)T scala> id:yoshihiro503 さんに、id(id) ができるかどうかやってみと言われてたので、 scala> id(id) <console>:6: error: missing argu</console>…

Project Euler: Problem34

n桁の数と9!*nを比べて、9!*nが追いつけなくなるnをまず見つける。するとnは7だとわかるので、7桁まで探せば十分。 /* 9!*1 = 362880 9!*2 = 725760 ... 9!*7 = 2540160 (7keta) 9!*8 = 2903040 (7keta) */ object Problem34 { def fact(n:int) : int = if (n…

Hoogle + Opera

あぁー、リストの要素をある条件で2つにわけたいけど絶対これライブラリにあるよー名前なんだろうーというときのために備えて。 Opera の検索エンジンに以下を加えるがよい。 http://www.haskell.org/hoogle/?hoogle=%s つまりこうだ! うわっ、キモい! 研…

ScalaCheck と Eclipse

Scala でのテストには、SUnit と ScalaCheck というものがある。SUnit は普通のユニットテストで、ScalaCheck は Haskell の QuickCheck みたいなものである。今日は ScalaCheck を使ってみようとしたんだけど、うまくいかなかった。 まず ScalaCheck をイン…

HUnit とその自動化

最近テストファースト的なものを試しているので、Haskell の HUnit を使ってちょっと遊んでみた。ところが、実施するテストを選ぶのがめんどい。具体的にはこんな感じ。(HUnit 1.0 User's Guide) test1 = TestCase (assertEqual "for (foo 3)," (1,2) (foo 3…

Test First

Ruby で Test First なプログラミングを体験するべく、 ruby-growl を使って遊んでみた。作ったのは todo リストの中からひとつをランダムに選んでポップアップする、という数行でできる超簡単なもの。 んで、まず最初にテストを書こうとしたんだけど、ろく…

Project Euler: Problem29

import Data.List main = print $ length $ nub [a^b | a <- [2..100], b <- [2..100]]

Project Euler: Problem30

5乗の和の場合には、n桁の数値を考えると 9^5*n までの数値しか作れない。 9^5 * 1 = 59049 9^5 * 2 = 118098 9^5 * 3 = 177147 9^5 * 4 = 236196 9^5 * 5 = 295245 9^5 * 6 = 354294 9^5 * 7 = 413343 ... 5乗の和の側では7桁以上の数値は作れない。なので6…

Project Euler: Problem45

昔書いたやつの BigInt 版。なんか一瞬で解けた。BigInt すごーい。 object Problem45 { class Generator (gen : BigInt => BigInt) extends Iterator[BigInt] { val this.gen = gen; var n = 0; def hasNext : Boolean = true; def next : BigInt = { n += …

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}…