たつをの ChangeLog : 2011-07-13

今年始めにあった「楽天ウェブサービスAPIコンテスト」[2011-01-25-4]
その第二回が開催されるようですよ!

第2回楽天ウェブサービスAPIコンテスト
URL: http://webservice.rakuten.co.jp/campaign/2011/0712/
応募期間:2011年7月12日(火)〜2011年8月31日(水)23:59

- 第2回楽天ウェブサービスAPIコンテスト 開催のお知らせ (RWS開発日記)
http://webservice.rakuten.co.jp/blog/2011/07/11/contestinfo_20110712/
2011年1月25日に開催させていただきました前回のコンテストの好評を受け、この度、第二弾「楽天市場のお気に入り商材を選んでWEBサイトをつくろう!」を開催することにいたしました。

時間的な余裕があれば参加したいけど、やっぱ無理かなあ…。

圧縮した郵便番号一覧を使って番号の実在判定をしてみる。

まずは郵便番号の一覧を作成。
「郵便番号データダウンロード - 日本郵便」から「住所の郵便番号(ローマ字)→全国一括」と「事業所の個別郵便番号」を入手し解凍。
7桁郵便番号だけを抜き出す。

■抽出手順:
perl -aF/,/ -lne '$F[1]=~s/\"//g;print$F[1]' ken_all_rome.csv > a
perl -aF/,/ -lne '$F[7]=~s/\"//g;print$F[7]' jigyosyo.csv >> a   
sort -u a > zc.txt

■郵便番号リスト(zc.txt):
0010000
0010010
0010011
...
9998524
9998525
9998531

2011年6月30日更新分だと140486個。ファイルサイズは1.1M。

これらは7桁の整数として見なすことができる。
ということで差分(前後の数の差)表記にして、差が1のが連続した場合はランレングスでさらに圧縮。
例:「5,3,1,1,1,1,1,1,1,21,1,1,7」→「5,3,x7,21,x2,7」

■圧縮ワンライナー:
perl -ne '$d=$_-$p;$s.="$d,";$p=$_;END{
$s=~s%,((1,){2,})%",x".(length($1)/2).","%ge;
$s=~s/,/\n/g;print$s
}' zc.txt > zc-c.txt

ファイルサイズは148Kに。
これだけのことで8分の1ほどに。

実際にこのファイルを読み込んで郵便番号が有効かチェックするプログラム。
読み込んだデータは差分から元の値に戻してビットアレイに格納して判定に使用します(まあハッシュでいいんですけどね)。

■コード(zc.pl):
#!/usr/bin/perl
use strict;
use warnings;

my $bitarray = "";

my $fn = shift @ARGV;
read_c($fn);

while (<>) {
    chomp;
    my $x = $_;
    if (vec($bitarray, $x, 1)) {
        print "yes\n";
    } else {
        print "no\n";
    }
}

sub read_c {
    my ($fn) = @_;
    open(my $fh, "<", $fn) or die;
    my @ns = <$fh>;
    close($fh);
    my $cur = 0;
    foreach my $n (@ns) {
        chomp $n;
        if ($n =~ /^\d+$/) {
            $cur += $n;
            vec($bitarray, $cur, 1) = 1;
        } elsif ($n =~ /^x(\d+)$/) {
            for (my $i = 0; $i < $1; $i++) {
                $cur += 1;
                vec($bitarray, $cur, 1) = 1;
            }
        }
    }
}

■実行例:
% cat a.txt
0000000
1000000
1111111
1500020
1500021
1500022
% ./zc.pl zc-c.txt < a.txt
no
yes
no
no
yes
yes

関連

- 郵便番号データダウンロード - 日本郵便
http://www.post.japanpost.jp/zipcode/download.html
- 電話番号、郵便番号にマッチする真の正規表現 (にぽたん研究所)
http://blog.livedoor.jp/nipotan/archives/51644244.html
- [を] Perl の vec() で bit vector の操作[2011-04-02-4]
- [を] Perlによるビットアレイのセーブ&ロード[2011-07-12-2]

先日のヘチマ[2011-07-04-3]、すくすく育ってますよ。
つるのために100円ショップの網を上からぶら下げています。

ヘチマ

それはさておき、妻がヘチマ用のラベルを作ってくれました。

なぞの植物と発言へまち

「発言へまち」と書かれています。
「へちま」ではなく「へまち」なのですね。
あと「なぞの植物」なるものも…。

ヘチマ なぞの植物

なんでしょうねえ、気になるなあ。
なんてったって謎ですからねえ。

毎週水曜日にお届けしている恵比寿・代官山の私の観測範囲内の個人的なニュースです。よろしくおねがいします。

たこ公園の芝生が緑になったよ!


しばらくぶりにタコ公園に行ったら、芝生が緑になってました。
水まきのおかげですね。

たこ公園、芝生あおあお! #ebisu

やっぱ緑の芝生は気持ちいい!
公園自体はまだ未完成だけど(一部工事中)、だんだんと都会のオアシスになりつつあるなあ。

「ひいらぎ」でタイヤキのハネ


たこ公園の近くにある「ひいらぎ」でたい焼き休憩。
たいやきを買ったときに「たい焼きのはね」なるものを頂きました。
無料です。

ひいらぎ たいやきのはね

たい焼きを焼いたときに出る端っこですね。
餃子のパリパリみたいなイメージでしょうか。
軽いおつまみに良いかも。

ウェスティンホテルの七夕ディスプレイ


七夕企画で、恵比寿ガーデンプレイスのウェスティンホテルのロビーに笹(ではなく竹)が飾られています。
震災の復興支援の募金をして、金または銀の紙で鶴を折って、願いを書きます。
あとで飾ってもらえるそうです。

ウェスティンの七夕飾り ウェスティンの七夕飾り ウェスティンの七夕飾り

ウェスティンホテル東京 | Westin Initiative
http://www.westin-tokyo.co.jp/initiative/index.html#150
1Fロビーにフラワーアーティストの前谷 裕一氏による七夕をイメージした美しい竹林のディスプレイが登場します。募金にご協力いただいたお客様には折り紙をプレゼント。被災された方への応援メッセージがこめられた折鶴は、竹林に飾られます。

7月31日(日)まで飾られているそうですよ。

バックナンバー

- 恵比寿・代官山観測範囲ニュース Vol.1[2011-03-02-4]
- 恵比寿・代官山観測範囲ニュース Vol.2[2011-03-09-1]
- 恵比寿・代官山観測範囲ニュース Vol.3[2011-03-16-1]
- 恵比寿・代官山観測範囲ニュース Vol.4[2011-03-23-1]
- 恵比寿・代官山観測範囲ニュース Vol.5[2011-03-30-2]
- 恵比寿・代官山観測範囲ニュース Vol.6[2011-04-13-2]
- 恵比寿・代官山観測範囲ニュース Vol.7[2011-05-11-2]
- 恵比寿・代官山観測範囲ニュース Vol.8[2011-05-18-3]
- 恵比寿・代官山観測範囲ニュース Vol.9[2011-05-25-5]
- 恵比寿・代官山観測範囲ニュース Vol.10[2011-06-08-1]
- 恵比寿・代官山観測範囲ニュース Vol.11[2011-06-15-1]
- 恵比寿・代官山観測範囲ニュース Vol.12[2011-06-22-1]
- 恵比寿・代官山観測範囲ニュース Vol.13[2011-07-06-2]

たつをの ChangeLog
Powered by chalow