カテゴリー: その他のプログラミング

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HaskellでProject Eulerに挑戦してみた

id:gomi-boxに触発されて、Project Eulerに挑戦してみた。

Project Eulerみたいな、アルゴリズム的なものを書いて一人でくねくねする遊びは、Haskellとの相性が良すぎる。

コードは続きで。

続きを読む

[Haskell] Monad周りで自分なりに考えてみたこと

Haskellを真面目に勉強し始めて10日ほど経つ。一応、Yet Another Haskell Tutorialをだいたい読み終わったわけだが、最後のモナドの章だけは断念した。日本語で何回説明されてもわからないものを英語で説明されてもわかるわけがない。

とはいえ、一応Haskellの文法などは勉強してみて、モナドについてもいろいろと聞きかじってみたわけで、自分なりに「モナドってこんなものなのかな?」っていうようなものはつかめたような気がする。なので、自分なりの理解やら疑問やらをメモっておこうかと思う。

自分の考えの整理のために書き連ねるので、もし間違っていたり考え違いをしているところがあれば (そんなところばっかだろうけど) 、容赦なく突っ込んでもらいたい。

続きを読む

そういえばTsukuba.Rに行ってきたんだった

なんか興奮してHaskellとか書いてたけど、一昨日Tsukuba.Rに参加して、Rを勉強してきたんだった。そこで、syou6162先生に教わったsapply()を使ってfizzbuzzを書いてみよう。

↓な感じ。

fizzbuzz <- function(x, y) {
    sapply(x:y, function(n) {
        ifelse(n %% 15, ifelse(n %% 3, ifelse(n %% 5, n, "Buzz"), "Fizz"), "FizzBuzz")
    })
}

sapply()を使ったから、for文が消えて少しRっぽくなった気がするけど、いまいち芸がない。もう少し工夫ができそう。

続きを読む

Haskellっぽいfizzbuzz書けた!

昨晩、突然ひらめいてHaskellでfizzbuzzを書いてみた。

fizzbuzz :: Integer -> Integer -> [String]
fizzbuzz x y | x > y           = []
             | (mod x 15) == 0 = "FizzBuzz" : fizzbuzz (x + 1) y
             | (mod x 3)  == 0 = "Fizz"     : fizzbuzz (x + 1) y
             | (mod x 5)  == 0 = "Buzz"     : fizzbuzz (x + 1) y
             | otherwise       = (show x)   : fizzbuzz (x + 1) y

codepadで実行

なんかすごくHaskellっぽいコードを書けたような気がするんだけどどうだろう?少なくとも、依然書いた↓のfizzbuzzよりは手続き色が抜けてるんじゃないかな?

続きを読む

XREAでMTOS (Movable Type Open Source)を導入してみた

XREAのサーバーにMovable Typeを導入するというのは何回もやってきたことなのだが、今回はSSHを使ってやってみた。シェルをほとんど使ったことがなかったから苦戦したが、以前よりもかなり早く導入できるようになった。

今までは、シェルを知らなかったから、↓のようなすごく非効率的なことをやっていた。

  1. MTOSのダウンロードページからZIPをダウンロードする。
  2. ZIPを展開
  3. FTPでアップロード (2000ファイル近くある上に、しばしば失敗する)
  4. ちまちまと権限を設定

今回はXREAのサーバーにSSHで接続してやってみた。

続きを読む

[Java] こういうときどうすればいいの?

例えば、数値を分数のまま四則演算する有理数クラスが↓のようになっていたとします。

public class Rational {

    private int numerator = 0;
    private int denominator = 1;

    public Rational(int numerator, int denominator) { ... }

    public Rational add(Rational x) { ... }
    public Rational subtract(Rational x) { ... }
    public Rational multiply(Rational x) { ... }
    public Rational divide(Rational x) { ... }

}

当然、このクラスを使う側では↓のようなコードを書くわけですね。

Rational add(Rational x, Rational y) {
    return x.add(y);
}

続きを読む

20年の眠りを醒ましてしまったようだ

コンパイラ関係の本を読んで勉強したくて、大学の図書館で探してみた。

とはいうものの、文系単科大学の図書館だからコンパイラ関係の本など探してもほとんどない。

やっとの思いで見つけたのが↓。

1981年刊行とのことだったが、とりあえず借りてみた。

↓貸出期限票を見たところ、俺は20年の眠りを醒ましてしまったらしい。

DATE DUE: '83.2.19 - '85.9.17 - '08.4.7

しかし、目次を見てみると、用語や内容は現在と大きくは変わらないっぽい。言語処理系の本は古い本ほど良いという話は本当だったんだな。

TeXで新しいフォントを使うためのバッチファイル

TeXでアームド・レモンというフォントを使えるようにするために使ったバッチファイルをメモ。アームド・レモンのTTFファイル(ArmedLemon.TTF)はC:\WINDOWS\Fontsにインストール済み。

@echo off

set FONT=ArmedLemon
set TEXDIR=C:\LaTeX

set FONTDIR=%TEXDIR%\share\texmf\fonts

copy "%FONTDIR%\tfm\ptex\jis.tfm" "%FONTDIR%\tfm\ptex\%FONT%.tfm"

cd "%FONTDIR%\vf\ptex"
"%TEXDIR%\bin\makejvf.exe" "%FONT%" "%FONT%"
move "%FONT%.tfm" "%FONTDIR%\tfm\dvips"

echo %FONT% H %FONT%.ttf>>"%FONTDIR%\map\dvipdfm\base\cid-x.map"

"%TEXDIR%\bin\mktexlsr.exe"

PDFで表示するだけならこれだけで充分っぽい。なぜこれで充分なのかはまだわかっていない。時間と余力があるときに解説エントリを書ければいいなと思っている。

LaTeX で多書体 --- 任意のフォントを扱う方法」というサイトを参考にした。

LaTeXで文系論文を書いてみる

以前、DocBookで文系論文を書いてみるというようなこと言っていたが、結局それは断念してしまった。FOPの日本語組版のレベルが低すぎて使い物にならない上に、DocBook XSLも基本的には英語圏向けであまり日本語環境に向いているとは言えなかったから。なので、結局はTeXを使ってレポートを書くことにした。今さらTeXというのも古臭い感じがして嫌なのだが、他に良い選択肢がないので仕方がない。

ということで、今度はWindows XP上にLaTeX環境を構築するにあたってのメモ書きを残しておこうと思う。

ちなみに、TeXに入門するまでの間に、86世代の人たちにだいぶお世話になった。この場を借りて感謝。

続きを読む

DocBookで文系論文を書いてみる 3日目

前回までで、一応XMLファイルをXSLを使ってPDFに変換できる環境まではできたと思う。だから今日は、DocBook文書をXSLを使ってPDFに変換してみる。

ということで、やるべきことは以下の2点

  • DocBook文書をXSL-FOに変換するためのXSLTを手に入れる
  • XSLTにパラメータを渡して、実際の出力をコントロールするためのXSLTを作成する

ということで、順番に説明していく。

続きを読む

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。