){
@F=split;
for(@F){
for(uc$_){
push @iroha,$_;
die $_ unless defined($hira{$_});
die $_ unless defined($kata{$_});
}}}
print'';
for(@iroha){
printf " %d",&dec($kata{$_});
#,' ',&dec($kata{$_})-&dec($hira{$_});
}
print'
';
for ('A'..'Z') {
next if $_ eq 'I';
push @go_coordinates,$_;
}
for(1..100){
push @go_coordinates,""; #pad
}
#10 stored as 0
@numerals_hex=qw/5341 4E00 4E8C 4E09 56DB 4E94 516D 4E03 516B 4E5D/;
for(@numerals_hex){
push @numerals,("".&dec($_).";");
}
print qq();
print "Iroha | Num | Jnum | Hira | Hira decimal | Hira hex | Kata | Kata decimal | Kata hex | Go | Zero |
";
for($i=0;$i<@iroha;++$i){
$v=$iroha[$i];
$iindex{$v}=$i;
print ""
,"$v | "
,"",$i+1," | "
,"",&japanese_number($i+1)," | "
,"",&dec($hira{$v}),"; | ",&dec($hira{$v})," | U+",$hira{$v}," | "
,"",&dec($kata{$v}),"; | ",&dec($kata{$v})," | U+",$kata{$v}," | "
,"$go_coordinates[$i] | "
,"$i | "
,"
";
}
print "
";
print qq();
print "Iroha | Num | Jnum | Hira | Hira decimal | Hira hex | Kata | Kata decimal | Kata hex | Go | Zero |
";
for$v(sort {&dec($hira{$a}) <=> &dec($hira{$b})} @iroha){
$i=$iindex{$v};
print ""
,"$v | "
,"",$i+1," | "
,"",&japanese_number($i+1)," | "
,"",&dec($hira{$v}),"; | ",&dec($hira{$v})," | U+",$hira{$v}," | "
,"",&dec($kata{$v}),"; | ",&dec($kata{$v})," | U+",$kata{$v}," | "
,"$go_coordinates[$i] | "
,"$i | "
,"
";
};
print "
";
sub dec {
my $s=shift;
unpack "n",(pack "H*",$s);
}
sub japanese_number {
my $i=shift;
my $out;
$ones=$i % 10;
$tens=($i-$ones)/10;
if($tens){
if($tens>1){
$out=$numerals[$tens];
}
$out.=$numerals[0]; #ten;
}
if($ones){
$out.=$numerals[$ones];
}
$out;
}