ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

2008-03-31から1日間の記事一覧

abc * de = fghijな0〜9

上の問題を一般化してみた。(固定な4をやめてみた) ついでに頭0禁止にしてみた。 import List main = putStr $ unlines $ map format $ filter test $ perm [0..9] perm :: [Int] -> [[Int]] perm [] = [[]] perm xs = concat [map (x:) $ perm (delete x xs…

関数型宣言の追記&nlistToStringの一般化 (0〜9の数字を使って、掛け算して、Go!解けた。)

前出の nlistToString nl = concatMap show nl ですが、数値のリストを文字列にするために用意した関数でしたが、別に数値のリストじゃなくてもよいのでは?と思い、以下のようにしてみることに。 listToString :: [a] -> String listToString l = concatMap…

無名関数

ふつうのHaskellプログラミング p196Javaの無名クラスとか、C#の匿名メソッドに概念は近そう。試しに、nlistToStringを無名関数で実装してみる。 main = print $ (\xs -> concatMap show xs) [1..10] 結果はこう。 "12345678910" さくっと動きました。 が、…

続々・0〜9の数字を使って、掛け算して、Go!解けた。

改行が余分に出るのはナゼだろう、、 は、unlinesでリストの各要素に改行が付けられて、さらにputStrLnで改行が付いたためだったらしい。 main = 直後のputStrLnをprintにしてみると分かる。 "402 x 39 = 15678\n483 x 12 = 05796\n495 x 36 = 17820\n" とい…

ガード

ふつうのHaskellプログラミング p174関数のパターンマッチの他に、条件も書けるということらしいです。例えば、階乗を求めるプログラム。 main = print $ fact 5 fact :: Int -> Int fact n = if n == 1 then 1 else n * fact (n-1) 結果は120(5 * 4 * 3 * 2…