Entries from 2013-12-01 to 1 month

プログラミングHaskell 第7章の練習問題

import Data.Char type Bit = Int -- リスト内包表現(list comprehension)[f x | x <- xs, p x]を高階関数で書きなおす lcomp :: (a -> b) -> (a -> Bool) -> [a] -> [b] lcomp f p xs = map f (filter p xs) all' :: (a -> Bool) -> [a] -> Bool all' p = a…

【Haskell】mapとfilterをfoldrで書く

map関数というのは、関数fとリスト[x0, x1, x2, ...]を引数にとって、[f x0, f x1, f x2, ...]を返す関数です。 filter関数というのは、関数pとリストLを引数にとって、Lの要素xiにpを作用させたものp xiがTrueのものだけを集めたリストL'を返す関数です。ま…

Haskellの関数foldrの型について

sum :: Num a => [a] -> a sum [] = 0 sum (x : xs) = (+) x (sum xs) sum = foldr (+) 0 --よって foldr :: (a -> b -> b) -> a -> [a] -> b --sumの場合はb=aだけど、b /= aのときってどんなとき? --そうだlengthを考えてみよう length :: [a] -> Int leng…

プログラミングHaskell 第6章の練習問題

{-# LANGUAGE NPlusKPatterns #-} import Data.Char pow :: Int -> Int -> Int pow a 0 = 1 pow a (n + 1) = pow a n * a myLength :: [a] -> Int myLength [] = 0 myLength (x:xs) = 1 + myLength xs myDrop :: Int -> [a] -> [a] myDrop 0 xs = xs myDrop …

Haskellでマージソート

merge :: Ord a => [a] -> [a] -> [a] merge [] xs = xs merge xs [] = xs merge (x:xs) (y:ys) | x <= y = x : merge xs (y:ys) | otherwise = y : merge (x:xs) ys halve :: [a] -> ([a], [a]) halve xs = (take n xs, drop n xs) where n = length xs `di…

プログラミングHaskell 第5章の練習問題

import Data.Char --2乗の和 sumsqr :: Int -> Int sumsqr n = sum [i^2 | i <- [1..n]] --ある要素のみからなるリストを生成する myReplicate :: Int -> a -> [a] myReplicate n x = [x | i <- [1..n]] --ピタゴラス数のリストを生成する pyths :: Int -> […

sshdの設定

sudo apt-get install ssh sudo vi /etc/ssh/sshd_config PermitRootLoginをnoに設定 sudo vi /etc/hosts.allow sshd: ALLを追加

xサーバが起動しなくなったと思ったら

仕事でsimvisionという波形ソフトを使っている。 teratermをアンインストールして、再びインストールしたら、simvisionで画面が表示されなくなった。 xサーバとしては、xmingを利用していた。原因はteratermの設定にあった。 teratermをアンインストールした…

Haskellでシーザー暗号

--指定文字の個数を数える関数 count :: Char -> String -> Int count c xs = length [c'| c' <- xs, c' == c] --小文字を整数に変換する関数 let2int :: Char -> Int let2int c = ord c - ord 'a' --整数を小文字に変換する関数 int2let :: Int -> Char int…

意味不明な意味のあるものについて

駅のホームで待っていると、線路わきのコンクリートに、白いチョークで不思議な模様が書かれているのを発見した。四角や丸や直線が複雑に絡み合った模様だ。僕は、それは誰かが真面目に描いたものだと感じた。しかも、ある種の高度な知性がそれを描いたと感…

Haskellで位置をリストにする

--位置をリストにする関数 --positions 1 [3, 2, 1, 3, 1]の値は[2, 4] positions :: Eq a => a -> [a] -> [Int] positions x xs = [j| (i, j) <- zip xs [0..n], i == x] where n = length xs - 1