SlideShare a Scribd company logo
1 of 39
Download to read offline
数
@nipotan
数字の表現について
他言語を学ぶ際
躓きがちなのが「数」
海外に行った時など
小さい店で買物しても
いくらかよくわからない
米国では小切手を切る
ことが非常に多い
額面の書き足しを防ぐため
算用数字 + 命数
$5,199-
five 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

Viewers also liked (6)

真・聴力検査 HACKS
真・聴力検査 HACKS真・聴力検査 HACKS
真・聴力検査 HACKS
 
livedoor's opened and shared technologies
livedoor's opened and shared technologieslivedoor's opened and shared technologies
livedoor's opened and shared technologies
 
色々なものを正規に表現してみよう
色々なものを正規に表現してみよう色々なものを正規に表現してみよう
色々なものを正規に表現してみよう
 
体重ウォッチにおけるRealmとSwiftTaskの活用
体重ウォッチにおけるRealmとSwiftTaskの活用体重ウォッチにおけるRealmとSwiftTaskの活用
体重ウォッチにおけるRealmとSwiftTaskの活用
 
HIC 06: Vyvoj anorganicke chemie
HIC 06: Vyvoj anorganicke chemieHIC 06: Vyvoj anorganicke chemie
HIC 06: Vyvoj anorganicke chemie
 
The monad fear
The monad fearThe monad fear
The monad fear
 

Similar to 数 (10)

詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回
 
実践Sass 後編
実践Sass 後編実践Sass 後編
実践Sass 後編
 
Okinawapm #1
Okinawapm #1Okinawapm #1
Okinawapm #1
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
 
20120127 nhn
20120127 nhn20120127 nhn
20120127 nhn
 
MTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT TokyoMTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT Tokyo
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話