タグ

ブックマーク / differentialengine.wordpress.com (7)

  • 千円を崩す方法(Haskell)

    次のような問題を考えてみましょう: 千円を両替して崩す方法は何通りあるだろうか.ただし,一円玉,五円玉,十円玉,五十円玉,百円玉,五百円玉を自由に(好きなだけ)使って良いものとする. まず問題を一般化し,つぎのように考えます.によって「円を一円玉で崩す方法の数」を表すことにします.(と言ってもならば常になのですが). また,によって「円を一円玉と五円玉で崩す方法の数」を, によって「円を一円玉と五円玉と十円玉で崩す方法の数」を, によって「円を一円玉と五円玉と十円玉と五十円玉で崩す方法の数」を, によって「円を一円玉と五円玉と十円玉と五十円玉と百円玉で崩す方法の数」を, 最後にによって「円を一円玉と五円玉と十円玉と五十円玉と百円玉と五百円玉で崩す方法の数」を表すことにします. このように定式化すると,クイズの答えはと表されます.あとはこの具体的な数値を求めれば良いわけです. さて,はを「n

    千円を崩す方法(Haskell)
  • Haskell の QuickCheck を自動化する

    ライブラリを開発していると、複数のテストを一挙に回したくなるかもしれませんね。そんなときはこうします。 {-# LANGUAGE TemplateHaskell #-} import Data.List import Test.QuickCheck -- 与えられた2つのリストを連結する cat :: (Eq a) => [a] -> [a] -> [a] cat [] ys = ys cat (x:xs) ys = x : (xs `cat` ys) -- cat が結合律を満たすかどうかのテスト prop_cat xs ys zs = (xs `cat` ys) `cat` zs == xs `cat` (ys `cat` zs) -- 最初のリストから二番目のリストの要素を除去したリストを作る sub :: (Eq a) => [a] -> [a] -> [a] sub [] ys

    Haskell の QuickCheck を自動化する
  • Makefile自己文書化の仕組み(メモ)

    Makefileを自己文書化するという翻訳記事を見つけた. Makefileをこんな風に作ったとする: help: @grep -E '^[0-9a-zA-Z_-]+[[:blank:]]*:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[1;32m%-30s\033[0m %s\n", $$1, $$2}' foo : bar.cc baz.cc ## compiles foo bar : aaa.cc bbb.cc ddd.cc baz : hoge.h poyo.cc ## makes baz $ make すると help が実行されて baz makes baz foo compiles foo のように出力される.この help ターゲットに書かれてるワンライナーが

    Makefile自己文書化の仕組み(メモ)
    hikazoh
    hikazoh 2016/04/08
  • Makefile で basename や strip を使う(自分用メモ)

    こんな Makefile があったとします: .PHONY : aaa aaa : bbb.hs ghc bbb.hs ./bbb Makefile に少し慣れてくると,$< を使って .PHONY : aaa aaa : bbb.hs ghc $< ./bbb のように書くかもしれませんが,今度は ./bbb の箇所が気になります.しかし,コマンド basename を使って ### DOES NOT WORK .PHONY : aaa aaa : bbb.hs ghc $< ./$(basename .hs $<) としてやってもうまくいきません.先頭に空白が残るからです.そこで Make のコマンド strip を使って aaa : bbb.hs ghc $< ./$(strip $(basename .hs $<)) としてやると,期待した通りの動作になります.

    Makefile で basename や strip を使う(自分用メモ)
    hikazoh
    hikazoh 2016/03/30
  • D ドライブをバックアップする(自分用メモ)

    WindowsマシンのD ドライブ(1TB HDD)がそろそろ古くなってきたので、1TB SSDに換装しました。あまりやらないことなので、自分用に手順を記録しておくことにします。記事自体は長く見えますが、作業ログを垂れ流してるだけなので実質的な内容は少ないです。(昔作った手順書をよくわからずになぞってるので、意味不明なことをしているかもしれません。) ※なお、Cドライブ(起動ドライブ)をバックアップするときの手順とは細かいところが違うのでこの記事は参考になりません。 準備: 1. 裸族のお立ち台(でもなんでもいいですが手軽なやつが望ましい)に新しいSSDをセットする 2. ubuntu usb をPCに刺して起動する(usbから起動するとHDDにインストールするかい?みたいな事を聞かれますが「試すだけ」みたいなのを選択しましょう)。usb からの起動をするときに、F11だったりF8だったり

    D ドライブをバックアップする(自分用メモ)
  • メモ:Haskellの二項演算子風型構成子

    元ネタ:http://stackoverflow.com/questions/19197339/haskell-data-constructor-meaning (:->)という外国の顔文字みたいな型構成子が気になってHaskell2010を調べたがよくわからず、上のStackoverflowでようやくわかった。 そのまんまの引用だが data Rose a = a :> [Rose a] deriving (Eq, Show) というサンプルが挙げられている。(この例の元ネタは”A rose is a rose is a rose” だろうか)。 最初が:で始まる記号列を型構成子に使えることは知らなかった。忘れそうなのでメモしておく。

    メモ:Haskellの二項演算子風型構成子
  • 行列式を行列のべき乗のトレースたちの多項式として表すこと

    物理のを読んでいたら、 行列についての次のような公式が出てきた: 気になってネットで調べると, 行列のとき、次の関係式が成り立つのだそうだ: 一般の の場合はどうなるのか気になって考えた. 一般に, 次正方行列 は(適当に取った)ユニタリ行列 によって,対角成分が の固有値であるような上三角行列に変換できる: ユニタリ行列の性質から,任意の自然数 に対して 固有多項式はユニタリ変換で不変なので,その 次の項を比較することで次を得る: よって,行列のべき乗のトレースが固有値のニュートン多項式になっていることがわかる.ここで, 変数の 次ニュートン多項式 さて, 変数の 次基対称式 は次のように定義されるのだった: 特に, となることに注意する.行列式もトレースも,ユニタリ変換で上三角化した行列の対角成分だけで決まる.このことから「行列式を行列のべき乗のトレースたちの関数として表す問題」は

    行列式を行列のべき乗のトレースたちの多項式として表すこと
  • 1