Что делает этот код? - PullRequest
       0

Что делает этот код?

1 голос
/ 24 октября 2010
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 Ответ

1 голос
/ 24 октября 2010

Подумайте о датах и ​​о том, что написал Марсело. Вот скомпилированная 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...