我试图编写一个Perl程序来确定7个字符的用户输入是否是回文。
而不使用任何数组、字符串或反转函数。
预期输出:
Enter in a 7 character item: 1111111
PALINDROME!
或者
Enter in a 7 character item: 1234567
NOT A PALINDROME!
这是我目前掌握的情况:
print "Enter in a 7 character item: \n";
my ($a, $b, $c, $d, $e, $f, $g);
chomp ($a=<>); chomp ($b=<>); chomp ($c=<>); chomp ($d=<>);
chomp ($e=<>); chomp ($f=<>); chomp ($g=<>);
if ($a~~$g && $b~~$g && $c~~$e){
print "PALINDROME!\n";
}
else{
print "NOT A PALINDROME! \n";
}
不幸的是,这给了我这样的结果:
Enter in a 7 character item:
1
1
1
1
1
1
1
PALINDROME!
如果任何人有建议,那将是非常感谢的。
我期待听到你的意见。谢谢!
4条答案
按热度按时间ukdjmx9f1#
在我看来这是正确的,毕竟
1111111
是回文!但是,智能匹配运算符不是一个非常有用的东西,并且您希望在这里测试字符串是否相等,因此使用
eq
而不是~~
。更好的是,我建议您允许用户输入整个字符串,因此
wkyowqbh2#
不使用
reverse
:用法:
g2ieeal73#
没有使用逆向,而是使用正则表达式(和递归)。
vx6bjr1n4#
变化
$B~~$g到$b~~$f也可能有帮助。