タグ

ブックマーク / qiita.com/lotz (7)

  • 動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita

    トロピカル半環と呼ばれる代数構造上のトロピカル行列を利用すると動的計画法を使ってグラフの最短経路の距離を計算するという問題が単純な行列積で解けてしまうらしい。そんな噂12を聞きつけて我々はその謎を解き明かすべく南国(トロピカル)の奥地へと向かった。 トロピカルな世界に行くためにはまずは代数を知る必要がある。要するに群・環・体の話だ。しかしこの記事の目的は代数学入門ではないので詳しい話は他の記事3に譲るとし、さっそく半環という概念を導入する。それは 半環は以下の性質を満たす二つの二項演算、即ち加法(和)"$+$" と乗法(積)"$\cdot$" とを備えた集合$R$を言う $(R, +)$ は単位元 $0$ を持つ可換モノイドを成す: $(a + b) + c = a + (b + c)$ $0 + a = a + 0 = a$ $a + b = b + a$ $(R, \cdot)$ は単

    動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita
  • gloss: 動かして遊んで学ぶHaskell - Qiita

    自己紹介 趣味はHaskellと人工知能 普段は半蔵門で働くエンジニア Twitter: @lotz84_(質問があればこちらまで) GitHub: @lotz84 Qiita: @lotz Haskell入門のあとにありがちなパターン by Twitterを巡回していてわかったHaskell初心者が躓きやすいポイント8つ (lotz調べ) もっと想像力を刺激するような 実装例が必要なのでは? gloss: Painless 2D vector graphics, animations and simulations. 出展: glossではじめるグラフィック描画 :: Haskell入門の次に読む記事 2Dグラフィックを簡単に描画できるライブラリ アニメーション シミュレーション マウスやキーボードのイベント処理 にも対応 目に見えるものがすぐに作れるので楽しい!✌('ω'✌ )三✌('

    gloss: 動かして遊んで学ぶHaskell - Qiita
  • Wizardモノイドとその仕組み - Qiita

    main :: IO () main = do -- 最初に全ての情報を入力してもらう putStrLn "名前は?" name <- getLine putStrLn "年齢は?" age <- getLine -- 最後に全てのアクションを実行する putStrLn ("名前: " ++ name) putStrLn ("年齢: " ++ age) この短いプログラムには 名前を聞いて最後に名前を表示する 年齢を聞いて最後に年齢を表示する という明らかなパターンがありますが、それぞれの「聞く」と「表示する」が入れ子になっているせいでうまく分割できません。そこで登場するのがWizardモノイドです。Wizardモノイドを使うと以下のように書けます。 import Data.Monoid ((<>)) name :: IO (IO ()) name = do putStrLn "名前は?"

    Wizardモノイドとその仕組み - Qiita
  • 作って学ぶBitcoin!ゼロから作るSPVウォレット - Qiita

    Bitcoinはもはや説明する必要がないくらいメジャーな存在になりました。その価格は2017/12/12現在で日円にして200万円を超えており1、技術的な知識を持っていない一般の人でも気軽に手に入れることができるようになりました。技術的な視点からみるとBitcoinそのものというよりもその基礎技術であるブロックチェーンが革命的なものであり単純な仮想通貨にとどまらない応用の可能性を秘めています。例えばEthereumはブロックチェーン上にプログラム(スマートコントラクト)をデプロイして実行できる環境であり、今年の12月にはCryptoKittiesというEthereumブロックチェーン上に実装されたゲームが大人気になりました。Lightning NetworkやPlasmaなどなど技術的な話題に尽きないのが盛り上がりを見せるブロックチェーン界隈の面白いところでありますが、今回はそのブロック

    作って学ぶBitcoin!ゼロから作るSPVウォレット - Qiita
  • Twitterを巡回していてわかったHaskell初心者が躓きやすいポイント8つ

    最近の趣味は「Haskellはいいぞ」と呟くかTwitter Search: Haskellを巡回して を押して回ることです 毎日巡回しているとHaskellに入門しようとするも細かいところに引っかかって前に進めないでいる人をちらほら見かけます。今回はそんな見回りの知見を活かしてHaskell初心者が躓きやすいポイントをまとめてみたいと思います。 1. 入門書は何がいいの? それはもうすごいH一択でしょう!…と言いたいところですが時々不満の声を聞くこともあります。確かにすごいHこと『すごいHaskellたのしく学ぼう!』は世界一わかりやすいHaskell入門書であることは間違いないと思いますが、逆に内容が平易すぎるため記述が冗長だと感じたり読み終わっても何か自分で作れるようになった気がしなかったりするかもしれません。なので僕は「プログラミングも初心者でHaskellから入門してみたい」

    Twitterを巡回していてわかったHaskell初心者が躓きやすいポイント8つ
  • Servant でアクセス制御のWeb DSLを作ってみる - Qiita

    この記事は CAMPHOR- Advent Calendar 2015 14日目の記事です 3期OBの@lotz84_です! CAMPHOR-ではHaskell人材の育成担当をしています Haskellって? 知らない人のために簡単な解説をしておくと、Haskellは純粋関数型のプログラミング言語で、強力な型と柔軟に扱える関数が特徴です。昔から存在する言語であり実用的にも使われていますがPHPJavaなどの他のプログラミング言語の影に隠れてそれほど知名度が高いわけでは無いと思います。しかし最近 Immutable や Stateless などをキーワードに関数型のプログラミング言語が再び注目されるようになってきています。 実際のHaskellのコードを見てみましょう。 quicksort :: Ord a => [a] -> [a] quicksort [] = [] quicksort

    Servant でアクセス制御のWeb DSLを作ってみる - Qiita
  • Stateモナドが便利に使えた! - Qiita

    最近HaskellでFlappyBirdを作っているのですが今までどう使っていいかわからなかったStateモナドをうまく使えた気がしたのでqiitaに残しておこうと思います。 Stateモナドは状態を扱える文脈とかReaderとWriterの随伴から出てくるとかそういうやつです。mtlに入ってるStateを使って簡単に説明してみます。 import Control.Monad.State add1 :: State Int () add1 = do n <- get put (n + 1) main = print $ execState add1 0 add1は単に1を足す関数です。ただしStateモナドを使って実装されていて詳細を見てみると 状態から数を取り出して 1を足して状態に詰め直す というようなプログラムになっています。 こんな簡単な例をみても何も良さがわからないと思うので今回

    Stateモナドが便利に使えた! - Qiita
    clavier
    clavier 2015/07/22
    Haskell - Stateモナドが便利に使えた! - Qiita
  • 1