Arduinoでつぶやく

etherシールド買ったので早速つぶやいてみた

1263726722 1263726728

ProductName Arduinoをはじめようキット

スイッチサイエンス / ¥ 4,200 ()


ProductName Arduinoイーサネット・シールド

スイッチサイエンス / ()


ProductName Arduinoをはじめよう
Massimo Banzi
オライリージャパン / ¥ 2,100 ()
通常4~6日以内に発送

茶華でランチ

義母がチケットを持っているからいこうと誘われ、のこのこついて行った。

和風ダイニング 茶華

11穀米のリゾットというコース(1.7K)。

1263717781 1263717799

1263717775 1263717787

1263717793

全体的に量が少ないという周りの意見であったが、ランチだったらこのぐらいの分量でいいかなとも思う。あと、サラダのあとがなかなか出てこなくて多少持て余した。

10000までの完全数をもとめる(Haskell)

mixiの課題丸投げから「10000以下の完全数を求める」

[n|n <- [1..10000],sum [x | x <- [1..(n `div` 2)], n `mod` x == 0] == n]

Haskell勉強会+twitter飲み

Haskell勉強会の皆様お疲れ様でした。次回もよろしくお願いします。

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ¥ 2,814 ()
在庫あり。

Twitter飲みの皆様お疲れ様でした。次回もよろしくお願いします。

  • perlの話ができてよかった。DBIxで話が通じた
    • やっぱなんかサービス作っとかないと。
  • @Muchico 今度Arduinoでなんか遊べたらいいですね。遊びましょう。
  • @moa02 今度、沼津〜三島グルメめぐりでもしましょう。行きたいところは結構あります。お酒も前向きに検討する方向で。
  • @suamagoma あべし乙です。あとmooです。
  • ココイチフラグw
  • 職場が近いという事実
  • @canna 帰りに話してたのはこれです。Imaginary Folkloreは僕のlast.fmチャートでは堂々の一位です。

ProductName hydeout productions 2nd Collections
オムニバス,hydeout productions,emancipator,Shing02,Uyama Hiroto,DSK,Nujabes,clammbon by nujabes,Pase Rock,C.L.Smooth,Substantial,Five Deez
インディーズ・メーカー / ¥ 3,000 (2007-11-11)
在庫あり。

行番号付きでソースを出力(Haskellで)

mixiの課題丸投げから

$ runhaskell mixi100116.hs mixi100116.hs
1: import System
2: 
3: main = do
4:   file:_ <- getArgs
5:   content <- readFile file
6:   mapM_ putStrLn $ withNum 1 $ lines content
7:   where 
8:     withNum n [] = []
9:     withNum n (x:xs)  = ((show n) ++ ": " ++ x) : (withNum (n+1) xs)

追記

zipWithがあるじゃないか。忘れてた。

1: import System
2: 
3: main = do
4:   file:_ <- getArgs
5:   content <- readFile file
6:   mapM_ putStrLn $ zipWith (\n x -> show n ++ ": " ++  x) [1..]  (lines content)

数字の連番くっつけたいときはそういうリストを用意してまぜ合わせる。

Paradolia / Alex Smoke

IDMさも感じさせられるが、僕の中では有機っぽい音

ProductName Paradolia
Alex Smoke
Soma Recordings / ¥ 1,805 (2006-04-18)


A Moment To Myselfはヤバイ、パネェ。Personaもいい曲だと思う。重低音が響くスピーカーでのraveだったらオチる。

迷路のやつをHaskellで解いてみる(完)

昨日の続きここを参考にした。

import Monad
maze = ["**************************",
        "*S* *                    *",
        "* * *  *  *************  *",
        "* *   *    ************  *",
        "*    *                   *",
        "************** ***********",
        "*                        *",
        "** ***********************",
        "*      *              G  *",
        "*  *      *********** *  *",
        "*    *        ******* *  *",
        "*       *                *",
        "**************************"]

type Pos = (Int,Int)
type Path = [Pos]

findPos :: [String] -> Char -> Pos
findPos mz c =
    let y = findY mz c 0
        x = findX (mz!!y) c 0
    in (x,y)
    where
      findY :: [String] -> Char -> Int -> Int
      findY [] _ _     = error (c : " not found\n")
      findY (x:xs) c n | c `elem` x = n
                       | otherwise  = findY xs c (n+1)
      findX :: String -> Char -> Int -> Int
      findX (x:xs) c n | x == c     = n
                       | otherwise  = findX xs c (n+1)

canMove :: [String] -> Pos -> Bool
canMove mz (x,y) | mz !! y !! x == '*' = False
                   | otherwise             = True

nextSteps :: [String] -> Pos -> [Pos]
nextSteps mz (x,y) = filter (canMove mz) [(x-1,y),(x+1,y),(x,y-1),(x,y+1)]

getAllPaths :: [String] -> Pos ->  Pos -> [Path]
getAllPaths mz st gl = getPath mz gl [ x : [st] | x <- nextSteps maze st]

getPath :: [String] -> Pos -> [Path] -> [Path]
getPath _ _ [] = fail "no Path"
getPath mz p1 ap@(path:queue)
    | p0 == p1 =  (return (reverse path)) `mplus` (getPath mz p1 queue)
    | otherwise = getPath mz p1 ( queue ++ [ x : path | x <- nextSteps mz p0, not (or (map (x `elem`) ap))])
    where p0 = head path


start = findPos maze 'S'
goal  = findPos maze 'G'
allpath = getAllPaths maze start goal

path全体で一度通った位置を再度通らないようにしないと終わらなかった。

「若い農力がアグリビジネスを変える!」に参加してみた

f-Biz主催のセミナーは初参加。若い農力がアグリビジネスを変える!というわけで、異分野すぎる気もするがまぁいいやということで。

実際参加者の6割は農業従事者だったらしい。

さて、パネラー討論でライスボディがオヤジギャグ的なネーミングセンスだったとかいう藤田さんのそういう話の流れで、小出さんがライスボディを最初においたのは富士川SAで、野菜作りも富士宮だから富士は藤田さん歓迎ムードですよ的な返しをしてたんだけど、そこで,「"ふじ"た」だけにというオヤジカウンターを返さなかったのが残念で仕方がない、悔やまれた。感想はそこに尽きる(嘘)。

あと、最初はシブヤ米って萌米みたいにパッケージングいじってマーケティングの手法で情報に付加価値くっつけてるだけなんじゃないの?とか思って聞いてたんだけど、エドウィンとの提携の話あたりを聞いてると、もう少し農業をたんに何かをつくるだけじゃなくて、そこに関わるものの営みもふくめて広く考えているんだなと思った。パッケージングも、他の商品ではごく普通にやられてるようなことがやられてないからそういう風に映るのかと認識を改めた。

あとは、味はリピーターになるかどうかの重要な要件だけど、最初にリーチするかどうかはあんま関係ないくて、リーチするためのパッケージングとかストーリー構築が重要っていうのも刺さった。思うに、酒屋ではじめての酒を選ぶのもじつはラベルに気合がはいってるかどうかだったりするもんな。で、酒屋さんはセレクトショップ的なとこを好んで使うので、情報も一緒に飲んでるっていわれれば納得なんだけど、セレクトショップ的な米屋さんて利用した事ないね。まぁ、実家が田舎で随時精米したての米が送付されてくるという体制が整っているからなんだけど。

結局、農業を単なる生産業として捉えるだけではなくて、もう少し生産の上流、下流、それに関わるヒトを見据えて再定義してるなぁと感じさせられたセミナーだった。航空を輸送じゃなくてサービス体験と再定義したとかいう話とダブった。「ちがった側面から農業を見る」ということを何度か藤田さんが話してたのも印象に残った。

農業を再定義するって言う話を含めて、どう生きるかという事に関しては農人日記が非常に刺激的だ。

僕もそろそろ、人生を再定義する時期にきているのだろうとつくづく感じる今日この頃であった。

アグリズムは明日新刊がでるらしいんだけど惜しいことにamazonには書影がない。

ProductName Agrizm (アグリズム) 2010年 03月号 [雑誌]

農業技術通信社 / ¥ 780 ()
近日発売 予約可

ProductName Agrizm(アグリズム) 2009年 12月号 [雑誌]

農業技術通信社 / ¥ 780 ()
在庫あり。

ProductName ギャル農業 (中公新書ラクレ)
藤田 志穂
中央公論新社 / ¥ 735 ()
通常5~6日以内に発送

Haskellで覆面算を解く

どう書くは知ってる言語で解くのは楽しいけど、習い始めの言語はつらい。というわけで、mixiの課題丸投げあたりをチョイスすることが多い。

覆面算を解くというのがあったのでやってみた。XYZ + WXYZ + WXYZ + VWXYZ + VWXYZ = UVWXYZを満たす文字をそれぞれ求める。

題意からU=1は自明なんだけどあえて力技で。

-- XYZ + WXYZ + WXYZ + VWXYZ + VWXYZ = UVWXYZ
-- 4*Z + 4*10*Y + 4*100*X + 3*1000*W + 10000*V = 100000*U

check :: [Int] -> Bool
check (u:v:w:x:y:z:_) = 10000*v + 3000*w + 400*x + 40*y + 4*z == 100000*u

notDup :: [Int] -> Bool
notDup (x:xs)= notDup' x xs
    where notDup' _ [] = True
          notDup' x yy@(y:ys) | x `elem` yy = False
                              | otherwise   = notDup' y ys

sol :: [[Int]]
sol = filter check $ filter notDup
      [[u,v,w,x,y,z]|u <- [0..9], v <- [0..9], w <- [0..9], x <- [0..9], y <- [0..9], z <- [0..9]]

全通りの組み合わせを作ってから数字がダブっている組み合わせを除いた。

結局、組み合わせを最初から使えばいいので、0から9の数字の中から6つを選んで、それらの入れ替えをしながらチェックをするのもやってみた。

import List


check :: [Int] -> Bool
check (u:v:w:x:y:z:_) = 10000*v + 3000*w + 400*x + 40*y + 4*z == 100000*u

comb :: [Int] -> Int -> [[Int]]
comb _ 0     = [[]]
comb [] _     = []
comb (x:xs) n = map (x:) (comb xs (n-1)) ++ comb xs n

permutation [] = [[]]
permutation xs = concat [map (x:) $ permutation (delete x xs) | x <- xs]

sol = filter check $ concatMap permutation (comb [0..9] 6)

combとpermutationはProgramming:玉手箱:組合せを参考にした

Afterglow / Vector Lovers

ノスタルジーを誘うダウンビートなトラック満載。

ProductName Afterglow
Vector Lovers
Vital / ¥ 2,204 (2007-10-09)
一時的に在庫切れですが、商品が入荷次第配送します。配送予定日がわかり次第Eメールにてお知らせします。商品の代金は発送時に請求いたします。

somaの透明感が好き。ユルユル。