狠狠撸

狠狠撸Share a Scribd company logo
数
@nipotan
数字の表现について
他言語を学ぶ際
躓きがちなのが「数」
海外に行った時など
小さい店で買物しても
いくらかよくわからない
米国では小切手を切る
ことが非常に多い
額面の書き足しを防ぐため
算用数字 + 命数
$5,199-
?ve thousand one hundred
and ninety-nine dollars only
書き間違えると
不渡りに…
文化圏による命数法の違い
? 西洋圏などは 3 桁区切りの千進法
? 区切られた中の三桁を読んで scale で繋ぐ
9876543210
billion million thousand
文化圏による命数法の違い
? 漢文化圏は 4 桁区切りの万進法
? 区切られた中の四桁を読んで大数で繋ぐ
9876543210
億 万
突然ですが
韓国語の話をしよう
韩国も汉文化圏
文化圏による命数法の違い
? 漢文化圏は 4 桁区切りの万進法
? 区切られた中の四桁を読んで大数で繋ぐ
9876543210
? ?
日本と韓国の
命数法の違い
日本と韓国の命数法
0 … 零、?、?
1 … 一、?
2 … 二、?
3 … 三、?
4 … 四、?
5 … 五、?
6 … 六、?
7 … 七、?
8 … 八、?
9 … 九、?
10 … 十、?
100 … 百、?
1000 … 千、?
10000 … 万、?
日本と韓国の命数法
億 → ?
兆 → ?
京 → ?
垓 → ?
禾予 → ?
穣 → ?
溝 → ?
澗 → ?
正 → ?
載 → ?
極 → ?
恒河沙 → ???
阿僧 → ???
那由他 → ???
不可思議 → ????
無量大数 → ????
违いはほとんど无い
私が知っている
たった一つの違い
10,000 の言い方
1 はじまりの言い方
10 → 一十、??
100 → 一百、??
1000 → 一千、??
10000 → 一万、??
100000000 → 一億、??
○
○ ○
韓国の命数法は
日本人にも覚えやすい!
とは言え…
韓国語の勉強。数字はだいぶだるい…
LINE 韓国語通訳
答え合わせに使ったら、だいぶ役立たず…
数字で苦労した経験から
アメリカ滞在してた頃を
ふと思い出した
数字をよしなにするモジュール
Lingua::EN::Numbers
実際、こんな感じで調べて小切手を切った
three hundred and eighty-nine million, three
thousand, eight hundred and ninety-seven
#!/usr/bin/env	
 ?perl	
 ?
	
 ?	
 ?
use	
 ?strict;	
 ?
use	
 ?warnings;	
 ?
use	
 ?Lingua::EN::Numbers	
 ?qw(num2en);	
 ?
	
 ?	
 ?
print	
 ?num2en(389003897),	
 ?"n";
韓国語版は?
全然求めてるやつではないのしか出てこない
日本語版は?
そういえば以前、Lingua::JA::Numbers (by 弾さん)
をブログでネタにした
試すと
三億八千九百万三千八百九十七
#!/usr/bin/env	
 ?perl	
 ?
	
 ?	
 ?
use	
 ?strict;	
 ?
use	
 ?warnings;	
 ?
use	
 ?Lingua::JA::Numbers;	
 ?
	
 ?	
 ?
print	
 ?num2ja(389003897),	
 ?"n";
日本語も韓国語も
あんまり変わらないんだから
韓国語のやつも作ろうぜ
Lingua::KO::Numbers
is available on github!
https://github.com/nipotan/p5-
Lingua-KO-Numbers
やってみた
??????????????
#!/usr/bin/env	
 ?perl	
 ?
	
 ?	
 ?
use	
 ?strict;	
 ?
use	
 ?warnings;	
 ?
use	
 ?Lingua::KO::Numbers;	
 ?
	
 ?	
 ?
print	
 ?num2ko(389003897),	
 ?"n";
ほとんど
Lingua::JA::Numbers
のコピペ!
しかも
韓国語初心者すぎて
合ってるのかわからない!!
折角だから、
もうちょっと遊ぼう
日韓英の数字読み
#!/usr/bin/env	
 ?perl	
 ?
	
 ?	
 ?
use	
 ?strict;	
 ?
use	
 ?warnings;	
 ?
use	
 ?utf8;	
 ?
use	
 ?UNIVERSAL::require;	
 ?
	
 ?	
 ?
binmode	
 ?STDOUT,	
 ?':utf8';	
 ?
	
 ?	
 ?
my	
 ?$voices	
 ?=	
 ?+{	
 ?
	
 ?	
 ?	
 ?	
 ?ja	
 ?=>	
 ?‘kyoko',	
 ?
	
 ?	
 ?	
 ?	
 ?ko	
 ?=>	
 ?'yuna',	
 ?
	
 ?	
 ?	
 ?	
 ?en	
 ?=>	
 ?‘allison',	
 ?
};	
 ?
	
 ?	
 ?
my	
 ?$lang	
 ?=	
 ?'en';	
 ?
	
 ?	
 ?
while	
 ?(1)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?my	
 ?$input	
 ?=	
 ?prompt($lang);	
 ?
	
 ?	
 ?	
 ?	
 ?if	
 ?($input	
 ?=~	
 ?/^(?:ko|ja|en)$/i)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?$lang	
 ?=	
 ?lc($input);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?print	
 ?"language	
 ?is	
 ?changed	
 ?to	
 ?$lang.n";	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?next;	
 ?
	
 ?	
 ?	
 ?	
 ?}	
 ?
	
 ?	
 ?	
 ?	
 ?if	
 ?($input	
 ?=~	
 ?/d/)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?my	
 ?$module	
 ?=	
 ?sprintf	
 ?"Lingua::%s::Numbers",	
 ?uc($lang);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?$module-?‐>use()	
 ?or	
 ?die	
 ?$@;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?my	
 ?$func	
 ?=	
 ?&{"$module::num2$lang"};	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?my	
 ?$num	
 ?=	
 ?$func-?‐>($input);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?print	
 ?$num,	
 ?"n";	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?system('/usr/bin/say',	
 ?'-?‐v',	
 ?$voices-?‐>{$lang},	
 ?$num)	
 ?&&	
 ?die	
 ?$^E;	
 ?
	
 ?	
 ?	
 ?	
 ?}	
 ?
}	
 ?
	
 ?	
 ?
sub	
 ?prompt	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?my	
 ?$lang	
 ?=	
 ?shift;	
 ?
	
 ?	
 ?	
 ?	
 ?print	
 ?"$lang>	
 ?";	
 ?
	
 ?	
 ?	
 ?	
 ?chomp(my	
 ?$input	
 ?=	
 ?<STDIN>);	
 ?
	
 ?	
 ?	
 ?	
 ?return	
 ?$input;	
 ?
}
もっと世界のナベアツ
#!/usr/bin/env	
 ?perl	
 ?
	
 ?	
 ?
use	
 ?strict;	
 ?
use	
 ?warnings;	
 ?
use	
 ?utf8;	
 ?
use	
 ?UNIVERSAL::require;	
 ?
	
 ?	
 ?
binmode	
 ?STDOUT,	
 ?':utf8';	
 ?
	
 ?	
 ?
(my	
 ?$lang	
 ?=	
 ?$ARGV[0]	
 ?||	
 ?'en')	
 ?=~	
 ?/^(?:ko|ja|en)$/i	
 ?||	
 ?	
 ?	
 ?
	
 ?	
 ?	
 ?	
 ?die	
 ?"Usage:	
 ?$0	
 ?[	
 ?ko	
 ?|	
 ?ja	
 ?|	
 ?en	
 ?]n";	
 ?
my	
 ?$module	
 ?=	
 ?sprintf	
 ?"Lingua::%s::Numbers",	
 ?uc($lang);	
 ?
$module-?‐>use()	
 ?or	
 ?die	
 ?$@;	
 ?
	
 ?	
 ?
$lang	
 ?=	
 ?lc($lang);	
 ?
my	
 ?$convert_func	
 ?=	
 ?&{"$module::num2$lang"};	
 ?
	
 ?	
 ?
my	
 ?$voices	
 ?=	
 ?+{	
 ?
	
 ?	
 ?	
 ?	
 ?ja	
 ?=>	
 ?'kyoko',	
 ?
	
 ?	
 ?	
 ?	
 ?ko	
 ?=>	
 ?'yuna',	
 ?
	
 ?	
 ?	
 ?	
 ?en	
 ?=>	
 ?'allison',	
 ?
};	
 ?
	
 ?	
 ?
for	
 ?my	
 ?$num	
 ?(1	
 ?..	
 ?40)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?my	
 ?$number;	
 ?
	
 ?	
 ?	
 ?	
 ?my	
 ?$cur_lang;	
 ?
	
 ?	
 ?	
 ?	
 ?if	
 ?($num	
 ?%	
 ?3	
 ?==	
 ?0	
 ?||	
 ?$num	
 ?=~	
 ?/3/)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?$number	
 ?=	
 ?$convert_func-?‐>($num);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?$cur_lang	
 ?=	
 ?$lang;	
 ?
	
 ?	
 ?	
 ?	
 ?}	
 ?
	
 ?	
 ?	
 ?	
 ?else	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?$number	
 ?=	
 ?$num;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?$cur_lang	
 ?=	
 ?'en';	
 ?
	
 ?	
 ?	
 ?	
 ?}	
 ?
	
 ?	
 ?	
 ?	
 ?print	
 ?$number,	
 ?"n";	
 ?
	
 ?	
 ?	
 ?	
 ?system('/usr/bin/say',	
 ?'-?‐v',	
 ?$voices-?‐>{$cur_lang},	
 ?$number)	
 ?&&	
 ?die	
 ?$^E;	
 ?
}
ちゃんと勉強してから
CPAN に age ます
以上。
質問?

More Related Content