作者: davi
日時: 2009/3/05(20:37)
Bruce.さん < こん??は でび@電源ファンうならせて 夜の闇の中再起動しまくり です

# トラブル対応の連続で死にそうでした。
# 自宅警備員は勝ち組、と確信しました。

On Tue, 03 Mar 2009 01:25:18 +0900
"Bruce." <kbk@...> wrote:

> > こういうの、一時的にフックして置いて、置換させないという
> > ような方法は何か無いのかなぁ…と、もう何年も探しています。
> > 
> > そこで思い出すのがsedの
> > 
> > y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
> > 
> > なんていう便利な命令です。

> ASCIIの範囲に限れば、思い切り単純です。
> たとえば
> ABCDE → vwxyz
> という置換を行う場合

> というテーブルを組み立てて、置換の対象となる文字列を頭からなめていって
> 
>  newstr[i] = work[oldstr[i]]
> 
> を順に文字列の終端までやるだけです。
> 文字集合が大きいものになるとこの手が使えない、使いにくいのは自明ですね。

work[oldstr[i]]は、「配列の配列」ですか?

でもこの例だと、大文字と小文字の場合は重複しないですよね?

> 事情が良くわかりませんが、

例えば、「Rot13をテーブル定義の置換でやる場合、どうすんの?」
ってことです。

先に置換しちゃったものを、その後の定義で、もう一度
置換されちゃうと困るよねぇ?、と。

trとかで、それが上手く動いているのが、どうしても理解も
納得もできないのですよ。

wikipediaにある「Pascalによる原理的実装」の例では、
バイナリそのものを演算していじっているようです。
テーブルによる置換の実装の例そのものではなさそう…。

--------------------------------------------

> 事情が良くわかりませんが、そこまである文字が出てくる「文脈」に
> 依存するのなら話は簡単じゃないと思いますが。

この話題のずっと先には、「翻訳ソフトは、内部でどんな
処理をしているんだろう?」という疑問があります。

そんな話題をabcでやるのが適切かどうかはわかりません。

また、今の所は、「自分で実装できるようになりたい!」という
よりも、「リクツとしては、どういう考え方なの?」という
探求心の段階なのですが。
(そりゃ、自分で実装できればカッコイイなぁ、とは思いますが、
オノレの“分”を知るということも大切ですな…。)


でび  http://davi.txt-nifty.com/1984/