2009-08-01から1ヶ月間の記事一覧

平方根の計算

30分プログラム、その650。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_206にインスパイアされました。 上記ページからリンクされているパソコンなら演算が得意なのは理解出来ますが、現在100円クラス... - Yahoo!知恵袋に平方根の計算方法が紹…

OCaml Meeting Tokyo 2009に行ってきたよ

OCaml Meeting Tokyo 2009に行ってきました。 発表は全部uStreamで録画してたらしいので、そのうちどこかに動画が公開されると思います。 OCamlはじめの一歩(id:osiire) OCamlの紹介 速いよ、安全だよ、仕事で使ってるよ GUIもあるよ OCaml Golf の話(id:Kei…

LLTVに行ってきたよ

朝から生テレビ GaucheコンパイラはGaucheで書いてあるらしい LLフィーリングカップル わりとマジメなプログラムだった 渡る世間は雲ばかり マイクロソフトの人、Mac使ってるー。 でも、OSはWindowsだった 「時間がないので単体テストは書きませ...」「とい…

縦書き変換

30分プログラム、その649。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_208にインスパイアされて、縦書き変換を作ってみました。でも、日本語はできません。普通に書いててもつまんないよねー、とか思って、ArrowやらHUnitやらを使ってます。ど…

OCamlのGolfの問題をSchemeで解いてみる

30分プログラム、その648。Users Meeting - OCaml.jpのGolfコンペ用の問題(anarchy golf - Sum of Divisors for OCaml Golf Competition)が公開されました。 Golfにチャレンジするのは上記サイトでやるとして、せっかく問題があるんだから解いておきましょう…

ソートされた複数のCSVファイルを結合するスクリプト

30分プログラム、その647。ソートされた複数のCSVファイルを結合するスクリプト - pgyの日記に再チャレンジ! いろいろがんばってみたけど、どうもうまくいかない。やっぱり、iteratorは遅延リストの代わりにはならないよ - みずぴー日記に書いた制約がきびし…

PythonでCSV読み込み

30分プログラム、その646。PythonでCSV読み込んでみた。 ソートされた複数のCSVファイルを結合するスクリプト - pgyの日記をやろうとしたけど、うまくいかなかった。 とりあえず、CSV読み込み部分だけをどうぞ。 使い方 $ python csv-read.py data1.csv {'da…

行のシャッフル

30分プログラム、その645。行をシャッフルするワンライナー。今日、アンケート結果を誰がどう答えたかを分かりづらくするために、CSVから項目を取り出してシャッフルして出力するスクリプトを書きました。せっかくだし、そこからシャッフルする部分だけを取…

gauche.arrayを試してみた

30分プログラム、その644。gauche.arrayを試してみた。 Schemeで配列ってどうやって扱うんだろう、とふと疑問に思ったので、gauche.arrayを試してみました。SRFI-25に準拠してるらしいので、ほかのSchemeでも大差ないでしょう、たぶん。感想は、 配列の開始…

答えを与えると、ランダムに式を生成するプログラム

30分プログラム、その643。にインスパイアされて、答えからランダムに式を生成するプログラムを作ってみました。 例えば、42を与えると「1+41」とか「6*7」とかを生成してくれます。あと、どれくらいの深さまで部分式を展開するかも指定できるようにしました…

シードを固定した乱数

30分プログラム、その642。http://ja.doukaku.org/279/ via http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_201をやってみた。 タイトルの通りシードを固定した上で乱数を生成して、同じ値が生成されるかを確認してみる問題。そして、予想通りあっ…

だいたいの時刻を表示するコマンド

30分プログラム、その641。だいたいの時刻を表示するコマンドを作ってみました。 http://kodawari2007.blog108.fc2.com/blog-entry-533.htmlというオシャレアイテムは、時刻を"20 minutes past 22"(22時から20分が過ぎた)みたいに表示してくれるらしい。 キ…

SMLで階乗

30分プログラム、その640。SMLで階乗を書いてみた。 StandardMLは学部の授業で習ったけれども、一切記憶に残っていない。 さすがにそれはまずい気がするので、当時の教科書(プログラミング言語StandardML入門)をひっぱりだして、階乗のコードを何個か書いて…

anythingのcandidates-fileプラグイン用のファイルリストをgitから生成する

anything-match-pluginの制限→candidates-fileプラグイン推奨 - http://rubikitch.com/に移転しましたのcandidates-fileプラグイン、想像以上に便利です。で、これを使うにはファイルのリストを自前で用意する必要があり、以下のようなコマンドが紹介されて…

Hello,world祭り、もしくはエントリポイントの調査

各種言語のエントリポイントがどういう仕様になっているかを調べるために、ひたすらHello,worldを書いてみた。 C #include <stdio.h> main(){ puts("Hello,world!!"); } Java class Hello { public static void main(String[] args){ System.out.println("Hello,world</stdio.h>…

ファイル末尾の空白行の削除

30分プログラム、その639。ファイル末尾の空白行の削除。 行末の空白行の次に、ファイル末尾の空白行って嫌ですよね。なんとなく。 というわけで、ファイル末尾の空白行を削除するスクリプトを書いてみました。ファイルをその場(in place)で書き換える機能は…

cursesを試そう

30分プログラム、その638。cursesを試そう。 anarchy golf - Dancing KidsのDancingKidsがわりとかわいい。これをアニメーションにしたらおもしろいんじゃないかな、と思ったので、とりあえずcursesを調べてみた。 使い方 $ python hello.py ソースコード #!…

"あ"を"ぁ"に変換するスクリプト

30分プログラム、その637。"あ"を"ぁ"に変換するスクリプトを書いてみた。特に意味はない。 "A"を"a"にする関数があるんなら、"あ"を"ぁ"にする関数があってもいいんじゃない?と思ったのでやってみた。 最初は、文字単位に分割してmapするとか、正規表現を使…

ファイルを行数別に分類してカウントしてみる

30分プログラム、その636。ファイルを行数別に分類してカウントしてみる。 コードを書いてると、基本的に各ファイルの行数はばらばらになります。 というわけで、実際に、どれくらいばらけてるかを調べるために、行数ごとに分類してカウントするプログラムを…

一個のリストから何個もの情報をとりだすコードはどう書くのがいいんだろう

例えば、下の行数カウントプログラムは、次のように書くのが一番キレイだと思う。 -- xsが各ファイルの行数のリスト -- (<100行未満のファイルの個数>, <100行以上のファイルの個数>)を返す lineStatics :: [Int] -> (Int,Int) lineStatics xs = (length $ f…

偶数行だけを抜き出してみる

30分プログラム、その635。anarchy golf - even linesにインスパイアされました。 ボクのコードは改行を削っても130バイトだけど、Golfでやると37バイトになってしまうらしい。おそろしい話ですね。 使い方 $ gseq 0 10 | gosh 635-evenline.scm 0 2 4 6 8 1…

連続した空白行を検出するスクリプト

30分プログラム、その634。連続した空白行を検出するスクリプトを書いてみた。 連続した空白行は意図していれることもあるけど、たいていはうっかり改行をいれすぎちゃったときのほうが多い。 別にそれくらいいいじゃん、とかいう話はおいといて、とりあえず…

iteratorは遅延リストの代わりにはならないよ

Pythonのイテレータは、itertools — Functions creating iterators for efficient looping — Python 3.7.3 documentationみたいなモジュールがあるくらいだし、わりと遅延リストの代わりに使える。 でも、やっぱりイテレータはイテレータであって、遅延リス…

AppleLinesの出力

30分プログラム、その633。anarchy golf - apple linesにインスパイアされて、apple linesの出力をやってみました。 apple linesが何かは、例を見たほうが早いと思います。 $ perl apple.pl 30 apple************************* *apple**********************…

大文字・小文字の反転

30分プログラム、その633。anarchy golf - invert caseにインスパイアされました。 単語中の大文字を小文字に、小文字を大文字にする変換。例えば、Fooを与えるとfOOが得られる。 大文字化と小文字化をいい感じに組合せたらできないだろうか、と考えてみたけ…

Maybe型を返す関数を繋いで、最初のJustを手にいれたい

a -> Maybe bみたいな関数があって、最初のJustが欲しいことがある 要するに、 case f x of j@(Just _) -> j Nothing -> case g x of j@(Just _) -> j Nothing -> ... と同じことを簡単にやってくれる何かが欲しい。高階関数で実現するなら、 import Data.Li…

自然対数の底eの計算

30分プログラム、その632。自然対数の底eを計算してみよう。 wikipedia:ネイピア数曰く、にx=1を代入することで計算できるらしい。 sumの計算をどうするかがポイントだろうけど、とりあえずutil.streamを使って計算してみた。 使い方 ;; 第100項までを使って…

10進数をN進数に基数変換する

30分プログラム、その631。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_055にインスパイアされました。 上記のサイトと同様に、第1引数に整数、第2引数に変換したい基数を受け取って、文字列化した整数を返すようになっています。 使い方 # 8進…

Pythonでunfold

foldに似たreduceがあるなら、unfoldに似た関数があってもいいじゃない。 def unreduce(f,x): y = f(x) while y != None: yield y[0] y = f(y[1]) これで整数を各桁ごとに分解するコードが簡単に書けちゃうよ。 base = 10 # 10進数にしたときの各桁に分解す…