数学=>;PHP到Perl
我是一名PHP开发人员,我想知道是否有人能帮我将这段代码转换成Perl脚本 我今天编写了以下PHP代码:数学=>;PHP到Perl,php,perl,math,Php,Perl,Math,我是一名PHP开发人员,我想知道是否有人能帮我将这段代码转换成Perl脚本 我今天编写了以下PHP代码: <?php for ($i = 1; $i > $i++; $i++) { $cut = strlen($i)/2; $a = substr($i,0,$cut); $b = strrev($a); $som = $a + $b; if((strrev($a) == $b) && (strrev($som) == $s
<?php
for ($i = 1; $i > $i++; $i++) {
$cut = strlen($i)/2;
$a = substr($i,0,$cut);
$b = strrev($a);
$som = $a + $b;
if((strrev($a) == $b) && (strrev($som) == $som) && ($a > 10000)) {
echo $a . " + " . $b . " = " . $som . "\n";
}
}
?>
它的作用是:
如果你记住这个公式:$a+$b=$c基本上
- 将$i减半,反转2st部分并存储为$b,将未反转的第一部分存储为$a
- 将$a和$b添加到$c中,并检查$c是否反向等于$c
- 输出“回文”,如下所示: 1248+8421=9669
- 使用
获取输入的长度length
以剪切输入substr
检查它是否是回文reverse
- 定义子例程中的功能
- 避免使用
和$a
作为变量名$b
- 最好确保输入是数字
使用严格;使用警告编码>编码时
考虑到Zaids的建议和很少的思考,一些小的变化:
use strict;
for(my $i = 1;$i > 0;$i++)
{
my $input = $i;
my $firstHalf = substr($input,0,length($i)/2,'');
my $sum = $firstHalf + $input;
if(($firstHalf == reverse($input)) && (reverse($sum) == $sum) && ($firstHalf > 1000)) {
print $firstHalf . " + " . $input . " = " . $sum . "\n";
}
}
当使用
use warnings
时,我得到了一个关于添加的警告,我必须看看这个。$I>$I++
?没想到会把这看成是有条件的…是的。。形成无限循环的奇怪方式。我应该解决这个问题。可能解决了重复问题。我们希望您至少尝试一下转换代码,并提供一个示例,说明您取得了多大进展。期望社区为您的客户完成转换是不公平的。谢谢。你的算法不正确。在这里查看正确的解决方案:非常感谢,这很有魅力!
use strict;
for(my $i = 1;$i > 0;$i++)
{
my $input = $i;
my $firstHalf = substr($input,0,length($i)/2,'');
my $sum = $firstHalf + $input;
if(($firstHalf == reverse($input)) && (reverse($sum) == $sum) && ($firstHalf > 1000)) {
print $firstHalf . " + " . $input . " = " . $sum . "\n";
}
}