トップページ⇒tech
32コメント9KB

ろーまじ/ひらがな あるごりずむ

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
ろーまじからひらがなにかえるあるごりずむかんがえてんだけどさー
なんかいいのないかねー
ぼいんみつけて, わけて, switch でひとつひとつやるしかないんかねー...
0002デフォルトの名無しさんNGNG
2げっと〜
0003デフォルトの名無しさんNGNG
16ビット右にシフト
00041NGNG
konnnichiha --> こんにちは
てなぐあいにさ.
ていうか,いますでにはんぶんできてんだけど,なんかすげーながくてさ..
0005デフォルトの名無しさんNGNG
junnichi -> じゅんいち
kodemmacho -> こでんまちょう
shinjuku, sinjuku => しんじゅく

あたりがめんどくさそうだね。
いれぎゅらーなのは、きりすてりゃいいんだろうけど。
00061NGNG
ああそうかー... そんなんもあんだ <こでんまちょう
いまげんざいのだと [こでっまちょう] になるぞー
0007デフォルトの名無しさんNGNG
平仮名読みにくい
0008デフォルトの名無しさんNGNG
ローマ字<->ひらがな変換テーブルを作って
前方一致検索と組み合わせたら?
0009デフォルトの名無しさんNGNG
促音の処理はテーブルにするより処理にしたほうがいいすな。
テーブルだといろんな方式のローマ字つづりすべてに対応しやすいしね。

あとこんな書き方もある。

hon'ya -> ほんや

「ん」を nn と書かせるのは変という考え方もあるので
その場合はオプションが欲しいかもね。

konnichiha -> こんにちは
0010デフォルトの名無しさんNGNG
IMのソース見てみたらどうだろ
0011デフォルトの名無しさんNGNG
速い話がさ、単語と一緒にローマ字のスペルも一緒に記録しときゃいいんだよ。
0012デフォルトの名無しさんNGNG
> ぼいんみつけ
0013デフォルトの名無しさんNGNG
Perl書法 増井 俊之
http://www.amazon.co.jp/exec/obidos/ASIN/4756102816/

にオートマトン使ってやるのが載ってたよ。
00141NGNG
すげーありがと
"オートマトン ローマ字" でgoogleいったらたっぷりでてきたよ
00151NGNG
でも どれみてもそれなりに改良すべきてんありそうだなー
ちーとがんばってみるか
0016Riva ◆RivaByXA NGNG
class alphamap{
private:
int key;//受理状態か否かを保持
alphamap *alpha[256];
char[2];//Shift-JIS-CODE
public:
alphamap *δ(alphamap *status,ASCII-CODE);
};

のような構造を作ってみては?
00171NGNG
[*status] かいせつしてくれるとちとうれしい
00181NGNG
いや, ごめん りかいしたわ. さんくす
0019デフォルトの名無しさんNGNG
参考になるかわかんないけど、むかしjperl用に作ったのがあるんで載せとくよ。
デフォルトでは「anna→あんな」と変換するが
-n オプションをつけると「あんあ」になる。仕組みはアホみたいに簡単。

begin 755 romm.gz
M'XL("+7Y1#P``W)O;6T`C9=)D]M4%(77\:]XV`VR*^[![@W!-`4K6&>13>BB
M9+5LR;$E(\OQD/*/:3`)8S/3S8P))$`S]L!,&@A-H`/%]`=X[QSY26JSP`O7
MN7HZW[W6>_>6G+MEL=L)%IN^9387JZZWV&C;03.3RPD1^*V6*"TLB7E1.G7J
M]L5265[&RFF_939<,7^7N,\-S'.F9PK+]\[;0>CZGF@'?CTP8<UD,O+VQ%IH
M5INV6+-KKN>J"YF<NJ,F4XEET;3#T`XZF5MEN"Q6,D)^\O@6QKF!:12-\5/C
MZT9112ZCAQEU&1TRLAE=8N0SNF$4(U3'`6J3J(X#U*;46.MR[9!K-J-+C'Q&
M"=0@A6)5FZRJ,TBA!BG48`9EL:H)41:KFK`JBU5-B+)8U80HBU5-DJA!"L6J
M)JS*&J10@Q1J,(,*4ZB055TA*NP`]0YK#%/@,)%4HY*YPME<'G-M,Y='PC9S
M>:1OD^X1M4V41]1V`N40M4.40]0.40Y1.T0Y1.T0Y1"UDT"UB#H@JD74`5$M
MH@Z(:A%U0%2+J(,$*B#JB*B`J".B`J*.B`J(.B(J(.H(J(A5)VN#K#I9&V35
MR=H@JT[6!EEULC82936(VB*J0=0640VBMHAJ$+5%5(.HK01JF$(-4ZAA"C5,
MH8:SJ#6>M:LTKPWB*+JARER[S%7E#;N\O<I<N\Q59:Y=YJHRUVXB5YNH/:+:
M1.T1U29JCZ@V47M$M8G:2VY,GZSK[(H^W8?3"/??B**PJR#CRP:MA8J>A>74
M+"P?GX7(\`3&&^<@)#(]#8DBGX7TD>/Y>&3!_"*FD)Y\!EOY94B87X6D^?6X
MAV%^$PVL!Y01ZCE@A#!?@:3YO;B_8?X`+<O>AH3Y0TB8/X*D^>.XHV'^!$W*
M;H:$>1\2YB\A:?Y&FVLP[X_7U?6:RP"[6XL!-9O7L;,U(O;'C\6#`)!KZ&T.
M`4@`OH<$X`=(VG^,6Q_F7]'-;'M(F&]"POP;),V_)YH=[B?1OVQT2+B?@83[
M.4BZ7XA[$N:7T&;L1TB87X&$^35(FM^(9T-J-,3V1FHLI*8"$:E6!N0M]#$0
M;T,"\2XD`%<A:7\_;G.8/T7GLL4A8?X<$N:O(&G^-FYLF#]#K[*I(6'^`A+F
MKR%I_B[1RG#CT/3AQI'IP_T()-SXV7VZX^/",?"3NLIY\B<DS#]#POP7),V_
M:',/YC_4U1[,%YF[9S-`RAY=?\<[?5:NKJ,%AJM*XJ$,YY54/RO'-O04XY^I
M*S%US&CJ8.B4C@V=JG)=5D!+JS6M:EK5M7*T:D1J.K_T0DLK3ZNV5H%6':W"
M-.J\7NAIU==JH-5PJB(?GN]#:@6/=ZP4MN:B4GC*CRK%1_QX5*%(/#<#CQ5=
M4U0*L`6EL%/8"IS/5?6UKDY;ULA**1+C7FV)>GU6;\CY;"<,7*^>+8@[N%71
M>S,W)^`[=^@+)WKGEN_.G6Y5^\4%<.<"L2(,H\+`E,'<`V>75J/8E?$2=<]Q
MFW9>7KE3;KM7#YW\G%DH2,H)MR;R<WWE5"_B%V0269E<+4I_42P71KA+?G*B
M98:6DWAU/Q&5L"#-_4H4NN+DBEB6T4C8S4Z*7CY.+\_2R_^#7OY/>NDXO31+
M+TT/?0HN(HYGJPTK5$0R66F:S-:LT`G\;MT19K.9!,VDKP!Q4@&P":-HSRJ9
M$4]#RW2C/T5M,Y`)+/DGS/361-.5I?AM_&=";?><OO>,W%=A/RB/HF?$/TM%
MHN8'EMU1IR5UB%3SJXOJ'".S_/=3"_-W*YBJ#3NB;AJI0R1O0ET\*;QI>LK4
I04J9<;DM#W`H;M-'>LY-+<A'B0<[M8PRO)Z]W\M6,O\"&9206(L.````
`
end
0020UサクNGNG
なんじゃ
こりゃああああ!
0021デフォルトの名無しさんNGNG
uuencode も知らんのか。
俺は ish が好きだけど。
0022デフォルトの名無しさんNGNG
rubyプログラミング入門に載ってたのをコピペ

# 50音変換表作成プログラム
#
# Hiragana 2次元配列 を作り、
# ローマ字とひらがなを表示
#
# % ruby make_table.rb > roma2hira.tbl

$KCODE = "euc" # このファイルの文字コード sjis|euc
Siin = [""] + "kstnhmrwgzdbp".scan(/./) # 子音の配列 ""は、"あ"段
Boin = "aiueo".scan(/./) # 母音の配列
Hiragana = "あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
まみむめも
らりるれろ
わいうえを
がぎぐげご
ざじずぜぞ
だぢづでど
ばびぶべぼ
ぱぴぷぺぽ
".collect{ |line| line.chop.scan(/./) }

Siin.each_with_index do |s, i|
Boin.each_with_index do |b, j|
puts s + b + " " + Hiragana[i][j]
end
end

print "ya や
yu ゆ
yo よ
n ん
"
0023デフォルトの名無しさんNGNG
# 50音変換表作成プログラム(拗音編)
#
# % ruby make_table-yo.rb >> roma2hira.tbl

$KCODE = "euc"
Siin1 = "kstnhmrgzdbp".scan(/./)
Boin1 = "auo".scan(/./)
Hiragana1 = "きしちにひみりぎじぢびぴ".scan(/./)
Yoon = "ゃゅょ".scan(/./)

Siin1.each_with_index do |s, i|
Boin1.each_with_index do |b, j|
puts s + "y" + b + " " + Hiragana1[i] + Yoon[j]
end
end
0024デフォルトの名無しさんNGNG
# ローマ字ひらがな変換プログラム
Romaji = []   # ローマ字の配列
Roma2Hira = {} # ローマ字ひらがな変換表

File.foreach("roma2hira.tbl") do |line|
 roma, hira = line.split # ローマ字とひらがなの分離
 Romaji.push roma    # ローマ字の貯蔵
 Roma2Hira[roma] = hira # {ローマ字=>ひらがな}変換表に追加
end

Roma_reg = Regexp.new(Romaji.join("|")) # ローマ字を|でつなげて正規表現に

def roma2hira(r)
 r.gsub(Roma_reg) {|x| Roma2Hira[x]}  # Roma2Hiraにしたがって書き換え
end

if $0 == __FILE__   # このスクリプトを動かすならここは真
 ARGF.each do |line|
  if line == "\n"
   break
  end
  print roma2hira(line)
 end
end
00251NGNG
OK! あとは促音だけだ 促音なんだよー
00261NGNG
まてまて よくかんがえたら "っん" って ありえないけーすなのか?
で, うえのけーすでは "kodenma" もしくわ "kodennma" をrequireするものだとすれば...
おお, OK. わかってきた.
00271NGNG
せつめいぶそくだったな.
"っん" ->ありえない というより
"nn" はまずむじょうけんで "ん" だとかんがえていいってこと.
あ, もうだれもきいてないね...
0028デフォルトの名無しさんNGNG
きいてるよー
0029デフォルトの名無しさんNGNG
kanna、○かんな、×かんあ
00301NGNG
デフォルトで
an -> あん
ann -> あん
anna -> あんあ
annna -> あんな
annma->あんま
amma -> あっま

だとして, いわかんあるとおもう?
00311NGNG
あ, あるのね, やっぱり...
0032デフォルトの名無しさんNGNG
>>29
kannan →艱難, 勘案
■ このスレッドは過去ログ倉庫に格納されています