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) ? >

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA