我正在努力教自己在编程方面做得更好。部分原因是我在报纸和杂志上发现了一些难题并试图找到编程解决方案
今天我看到了一个关于数字的谜题,当数字乘以2-9的数字时,它们会被颠倒过来。给出的例子是1089 * 9 = 9801。
我已经开始在php中编写程序来查找适用的数字并将它们添加到数组中。
首先,我创建了一个循环来循环显示可能的数字。然后我将每个数字反转并创建一个函数来比较编号和反转数字。然后,该函数返回符合条件的数字,并将它们添加到数组中。
这就是我到目前为止......
<?php
function mul(){ // multiply number from loop
for($i=2;$i<=9;$i++){
$new = $num * $i;
if($new == $re){
return $new;
}
else{
return;
}
}
}
$arr = array();
for ($num = 1000; $num <10000; $num++) { //loop through possible numbers
$re = strrev($num); // get reverse of number
func($re,$num); //multiply number and return correct numbers
$arr.push($new); //add to array??
}
?>
我仍然是非常新的PHP,我发现理解编程,任何关于更合理的方式来做这个难题的指针将非常感激。
答案 0 :(得分:3)
这是我的嵌套循环解决方案。又快又脏。
$result = array();
for ($i = 1000; $i < 5000; $i++) {
for ($m = 2; $m < 10; $m++) {
if ($i*$m == (int)strrev($i)) {
$result[] = array($i, $m);
}
}
}
var_dump($result);
我想扩展这一行:
if ($i*$m == (int) strrev($i)) {
一方是$i*$m
,简单,多重。
另一方面,我们有(int)strrev($i)
,意思是“Take $i
,将其转换为字符串,然后将其反转。然后将其转换回int
。
如果计算结果为true,则会将包含$i
和m
的数组插入$result
数组。
答案 1 :(得分:0)
我也在寻找准备面试的逻辑问题。感谢分享这个问题。我已经解决了这个问题但是使用了Java.I使用了非常基本的概念。我希望你能理解并将其转换为php。
public static boolean processNumber(int number)
{
for(int i=2;i<=9;i++)
{
int reverseNumber=number*i;
boolean status=checkReverse(reverseNumber,number);
if(status)
{
return true;
}
}
return false;
}
public static boolean checkReverse(int reverseNumber,int numberOriginal)
{
int number=reverseNumber;
int reverse=0,digit;
do
{
digit=number%10;
number=number/10;
reverse=reverse*10+digit;
}while(number>0);
if(reverse==numberOriginal)
{
return true;
}
else
{
return false;
}
}
答案 2 :(得分:0)
build