そこで今回、無理やり使うべきシチュエーションを考えました。
回文ってご存知ですか?「留守に何する」のように反対から読んでも同じになる文章のことですね。
「るすにな」に「るすにな」を反転した語をつけると「るすにななにする」となります、「な」が一個多いのでそれをとれば「るすにな」から「るすになにする」ができます。
data A;
BASE='たいやき';
KAIBUN=cats(BASE,ksubstr(strip(kreverse(BASE)),2));
run;
proc print;
run;
これで関数にかけるワードから回文を生成するプログラムができました。
日本語は2byte文字なんでkreverse関数になります。revesrseで反転させてから
とりあえず前後空白を飛ばして、substr(同じく今回はksubstr)で2文字目以降全範囲を取得して
cats関数で元データと空白を入れずに結合しているという感じです。
これで回文はいくらでもつくれますが、その生成された文章が、文章として意味をなしているかが
重要でそれを判断できるのはプログラムでは難しいです。
けど、僕は本当は、プログラムに、人間が見て感動するようなすごい回文を生成させてみたいです。それには言語の構造を解釈できるようにプログラムを組まなければいけないのでしょうね、
いつか本腰を入れて取り組んでみたいです。
0 件のコメント:
コメントを投稿