Perlで回文をチェックするコード
概要
回文とは、初めから読んでも末尾から読んでも同じ発音となる文字列のことである。
ある文字列が回文か否かをチェックするPerlのコードを書いたのでここに記載する。
なお、元ネタは文字列の中から回文を抽出するという試験問題である。
Palindrome.pl
#!/usr/bin/perl
# 回文チェック
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
# text, ch
sub FindChar {
my @param = @_;
my $tmp = index($param[0], $param[1]);
if ($tmp == -1) {
return (0);
}
return ($tmp);
}
# text, size
sub IsPalindrome {
my @param = @_;
my $l = 0;
my $r = $param[1] - 1;
while ($l < $r) {
if (substr($param[0], $l, 1) ne substr($param[0], $r, 1)) {
return (0);
}
$l++;
$r--;
}
return (1);
}
sub Main {
my $input;
while (1) {
print "Input > ";
$input = <STDIN>;
chomp($input);
print "\n";
if (IsPalindrome($input, length($input))) {
print $input . " is Palindrome.\n";
}
else {
print $input . " isn't Palindrome.\n";
}
print "Continue (y/n) ? > ";
$input = <STDIN>;
chomp($input);
if ($input ne "y") {
last;
}
}
}
Main();
exit(0);
Console
Input > jskny
jskny isn't Palindrome.
Continue (y/n) ? > y
Input > しんぶんし
しんぶんし is Palindrome.
Continue (y/n) ? >
最近のコメント