回文を作成するプログラム_reverse関数を使ってみたい

reverse関数というものがあって、ABCをCBAのように、反転させてくれるといいます。ヘルプやマニュアルで存在とその機能は何回も目にしていたのですが、実践で一度も使ったことありませんでした。
そこで今回、無理やり使うべきシチュエーションを考えました。
回文ってご存知ですか?「留守に何する」のように反対から読んでも同じになる文章のことですね。
「るすにな」に「るすにな」を反転した語をつけると「るすにななにする」となります、「な」が一個多いのでそれをとれば「るすにな」から「るすになにする」ができます。

data A;
 BASE='たいやき';
 KAIBUN=cats(BASE,ksubstr(strip(kreverse(BASE)),2));
run;

proc print;
run;






これで関数にかけるワードから回文を生成するプログラムができました。

日本語は2byte文字なんでkreverse関数になります。revesrseで反転させてから
とりあえず前後空白を飛ばして、substr(同じく今回はksubstr)で2文字目以降全範囲を取得して
cats関数で元データと空白を入れずに結合しているという感じです。

これで回文はいくらでもつくれますが、その生成された文章が、文章として意味をなしているかが
重要でそれを判断できるのはプログラムでは難しいです。

けど、僕は本当は、プログラムに、人間が見て感動するようなすごい回文を生成させてみたいです。それには言語の構造を解釈できるようにプログラムを組まなければいけないのでしょうね、
いつか本腰を入れて取り組んでみたいです。

0 件のコメント:

コメントを投稿