ランダムっぽく生成した郵便番号が示す場所を眺めてみる修行
10 進数 7 桁の数値をランダムっぽく生成して、それを郵便番号としてその場所がどこになるのか眺めてみた。
郵便番号のデータは郵便番号データダウンロード - 日本郵便から。
use strict; use warnings; use Encode; use Math::Trig qw( pi ); my $NUMBER_OF_ZIPS = 100_000; my $PI = pi(); my $zip_base = $PI; use KEN_ALL; sub next_zip { my $zip = substr($zip_base, 2, 7); $zip_base *= $PI; $zip_base -= int($zip_base); $zip_base *= 10; return $zip; } sub fire { my ($i, $zip) = @_; my ($pref_code, $city_code, $town) = $KEN_ALL::town_of{$zip}; if ($pref_code) { my $pref_name = $KEN_ALL::pref_name_of{$pref_code}; my $city_name = $KEN_ALL::city_name_of{$pref_code.$city_code}; print encode('shiftjis', "$i\t$zip $pref_name$city_name$town\n"); } } for my $i (1..$NUMBER_OF_ZIPS) { my $zip = next_zip(); fire($i,$zip); }
encode はたまたま shiftjis。
$ perl nantoka.perl > nantoka.txt $ wc -l 1216 nantoka.txt
10 万件のうち、1216 件だけが実際の町域が対応する郵便番号だったっぽい。1.2 %。ふーん。
$ head nantoka.txt 17 4101126 静岡県裾野市桃園 31 3400053 埼玉県草加市旭町 198 5710047 大阪府門真市栄町 296 9501407 新潟県新潟市南区鷲ノ木新田 456 0782513 北海道雨竜郡北竜町三谷 459 9814323 宮城県加美郡加美町石原 597 7372314 広島県江田島市沖美町美能 626 3193704 茨城県久慈郡大子町上野宮 662 6011103 京都府京都市左京区花脊八桝町 752 5140836 三重県津市野崎垣内岩田 $ tail nantoka.txt 99361 4750031 愛知県半田市阿原町 99521 0891321 北海道河西郡中札内村東一条北 99534 8980076 鹿児島県枕崎市金山町 99535 9550803 新潟県三条市月岡 99546 5900946 大阪府堺市堺区熊野町東 99554 0410804 北海道函館市赤川町 99823 1636001 東京都新宿区西新宿住友不動産新宿オークタワー(1階) 99861 0295621 岩手県和賀郡西和賀町沢内鍵飯 99872 2390812 神奈川県横須賀市小原台 99878 7940832 愛媛県今治市八町西
行ったことないところばっかりだなあ。
44943 1520011 東京都目黒区原町
あ、ここは行ったことあるぞ。