Linuxコンソール上で文字列の回文判定を行う
Pocket

ふと、コンソール上でワンライナーで文字列の回文判定を行うにはどうすればよいのだろう?と思ったので調べてみた。
以下のようにすることで、回文判定を行うことができる。

perlの場合、アルファベットならもっと短くできるのだけど、日本語も対応させるとちょっと長くなってしまった。

Sponsored Links

echo "あいうえお" | awk '{ split($1,a,""); for(i=1;i<=length($1)/2;i++) if (a[length($1)-i+1]==a[i]) f=0; else {f=1}; print f}' # 返り値が0なら回文、1なら回文ではない
echo "あいうえお" | perl -lne 'use Encode decode;$str=decode("UTF-8", $_);print 0 if $str eq reverse($str)' # 返り値が0なら回文

20160702_132505000000

[root@BS-PUB-CENT7-01 ~]# echo "あいうえお" | awk '{ split($1,a,""); for(i=1;i<=length($1)/2;i++) if (a[length($1)-i+1]==a[i]) f=0; else {f=1}; print f}' # 返り値が0なら回文、1なら回文ではない
1
[root@BS-PUB-CENT7-01 ~]# echo "あいうえおえういあ" | awk '{ split($1,a,""); for(i=1;i<=length($1)/2;i++) if (a
[length($1)-i+1]==a[i]) f=0; else {f=1}; print f}' # 返り値が0なら回文、1なら回文ではない
0
[root@BS-PUB-CENT7-01 ~]# echo "あいうえお" | perl -lne 'use Encode decode;$str=decode("UTF-8", $_);print 0 if $str eq reverse($str)' # 返り値が0なら回文
[root@BS-PUB-CENT7-01 ~]# echo "あいうえおえういあ" | perl -lne 'use Encode decode;$str=decode("UTF-8", $_);print 0 if $str eq reverse($str)' # 返り値が0なら回文
0

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。