function mystery($y, $m, $d) {
$a = 0;
$b = 0;
$c = 0;
if($m < 3) {
$a = $m + 10;
$b = ($y-1) % 100;
$c = ($y-1) / 100;
}
else {
$a = $m - 2;
$b = $y % 100;
$c = $y / 100;
}
$w = (700 + (((26*$a)-2)/10)+$d+$b+$b/4+$c/4-(2*$c))%7;
echo $w;
}
我的一个教程问题询问函数计算的内容。我可以通过并解释每一个计算,但我确信这不是我们所期望的。有没有明显的用途我没看到?
在我看来它可能是一个校验和算法,因为它似乎总是生成0到6之间的数字。
ps,它最初是用Java编写的,但是当我将它输入我的计算机进行测试时,为了简单起见,我把它移植到PHP。如果有人愿意,我可以重新输入Java版本。答案 0 :(得分:1)
想想日期和Marcelo发布的内容。这是可编译的java。尝试使用各种输入运行程序,看看你想出了什么。
class mys {
public static void main(String[] args) {
int y= Integer.parseInt(args[0]);
int m= Integer.parseInt(args[1]);
int d = Integer.parseInt(args[2]);
int a = 0;
int b = 0;
int c = 0;
if(m < 3) {
a = m + 10;
b = (y-1) % 100;
c = (y-1) / 100;
}
else {
a = m - 2;
b = y % 100;
c = y / 100;
}
int w = (700 + (((26*a)-2)/10)+d+b+b/4+c/4-(2*c))%7;
System.out.println(w);
}
}