Howdy world.org

自作のプログラムを配布してます

30分プログラム・ピックアップ

概要

はてなの日記でやっている30分プログラミングから、適当に抜粋しました。

ちなみに、現在のルールは、

抜粋ではなく全リストは 30分プログラム一覧にあります。

文字列操作

fortune

http://d.hatena.ne.jp/mzp/20070419/fortune

fortune用のデータを与えると、そこからランダムに表示する。

例えば、次のようなファイルを用意する。

アブラハムの子であるダビデの子、イエス・キリストの系図。
		-- マタイの福音書 1:1
%
アブラハムはイサクの父であり、イサクはヤコブの父、ヤコブはユダとその兄弟たちとの父、
		-- マタイの福音書 1:2
%

そして、それを与えると

$ ./fortune bible
アブラハムはイサクの父であり、イサクはヤコブの父、ヤコブはユダとその兄弟たちとの父、
		-- マタイの福音書 1:2

となる。

.historyの解析

http://d.hatena.ne.jp/mzp/20070908/history

シェルの~/.historyを解析し、よく使うコマンドを抽出する。

$ ./history_analizer ~/.history
    ls: *****************************************
    cd: ***********************************
  perl: *****************************
   mvn: ******************
  sudo: *********
   svn: ****

拡張子ごとのファイルリスト

http://d.hatena.ne.jp/mzp/20070716/bar

拡張子ごとにファイルの数を数える。

$ ./ext *
 *       :[=================      ] (bible,cat,db,dict,...)
 *.awk   :[==                     ] (ls.awk,rawk.awk)
 *.bmp   :[=                      ] (ChiPet.bmp)
...

郵便番号の検索

http://d.hatena.ne.jp/mzp/20070822/zip

郵便番号と住所の相互変換を行なう。郵便番号のデータは、 日本郵便のサイトからダウンロードできるので、それを利用する。

$ ./zip 4710852
愛知県豊田市御幸町

$ ./zip 御幸
4710852 : 愛知県豊田市御幸町
4430042 : 愛知県蒲郡市御幸町

ファイルのマージ

http://d.hatena.ne.jp/mzp/20070831/paste
http://d.hatena.ne.jp/mzp/20070902/paste

pasteコマンドの再実装。複数のファイルを一つにまとめる。

$ cat 01
000
111
222
333
444

$ cat 02
AAA
BBB
CCC
DDD

$ cat 03
aaa
bbb
ccc
ddd

$ ./paste 0[1-3]
000 AAA aaa
111 BBB bbb
222 CCC ccc
333 DDD ddd
444

ファイルの平均行数

http://d.hatena.ne.jp/mzp/20070506/wcavg

与えられたファイルの平均行数を求める。

$ ./wc_avg.scm msort.rb sieve.rb
53.5

[n-m]の展開

http://d.hatena.ne.jp/mzp/20071107/glob

[1-10]という形のグロブを展開する。

$ ./glob 'a[0-3].txt'
a0.txt a1.txt a2.txt a3.txt

$ ./glob 'a[00-03].txt'
a00.txt a01.txt a02.txt a03.txt

数値演算

3n+1問題

http://d.hatena.ne.jp/mzp/20070612/acm

与えられた数値に対して、次の操作を繰り返し行なう。

例えば10が与えられた場合には、

10 5 16 8 4 2 1

となる。

どんな入力に対しても、最終的には1になると考えられている。初期値が1になるまでの系列の長さを求めよ。この例の場合には、系列の長さはもちろん7になる。

その他

配列のシャッフル

http://d.hatena.ne.jp/mzp/20070827/shuffle

配列をシャッフルする。

irb> shuffle [1,2,3,4,5,6,7]
[4, 1, 3, 5, 7, 2, 6]
Copyright © 2007-2009 MIZUNO Hiroki / mzp.
http://howdyworld.org//30min.html
http://howdyworld.org/
このサイトについて