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

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

義母がチケットを持っているからいこうと誘われ、のこのこついて行った。
11穀米のリゾットというコース(1.7K)。



全体的に量が少ないという周りの意見であったが、ランチだったらこのぐらいの分量でいいかなとも思う。あと、サラダのあとがなかなか出てこなくて多少持て余した。
17012010 Haskell
mixiの課題丸投げから「10000以下の完全数を求める」
[n|n <- [1..10000],sum [x | x <- [1..(n `div` 2)], n `mod` x == 0] == n]
16012010 life
Haskell勉強会の皆様お疲れ様でした。次回もよろしくお願いします。
Twitter飲みの皆様お疲れ様でした。次回もよろしくお願いします。
hydeout productions 2nd Collections16012010 Haskell
$ 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)
数字の連番くっつけたいときはそういうリストを用意してまぜ合わせる。
15012010 music
IDMさも感じさせられるが、僕の中では有機っぽい音
A Moment To Myselfはヤバイ、パネェ。Personaもいい曲だと思う。重低音が響くスピーカーでのraveだったらオチる。
15012010 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には書影がない。
15012010 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:玉手箱:組合せを参考にした
ノスタルジーを誘うダウンビートなトラック満載。
Afterglowsomaの透明感が好き。ユルユル。