这段代码有什么作用?

时间:2010-10-24 10:09:39

标签: php algorithm

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版本。

1 个答案:

答案 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);
    }
}