잡식[雜食]

8,145,060개의 로또 번호 DB에 때려 넣다.

쏘리다이 2019. 12. 9. 08:51

DB 용량만 8GB 나온다.  그냥 보는것 만으로 컴퓨터 하드디스크 긁는 소리가 조만간 사망할거처럼 들린다.

전날 밤샘하며 삽질한거 모두 지워 버리고 새로 시작해서 1시간만에 8,145,060개의 데이터를 DB에 올렸다.

$i=0;

for ($b1 = 1; $b1 <= 40; $b1++) {
  for ($b2 = $b1+1; $b2 <= 41; $b2++) {
    for ($b3 = $b2+1; $b3 <= 42; $b3++) {
      for ($b4 = $b3+1; $b4 <= 43; $b4++) {
        for ($b5 = $b4+1; $b5 <= 44; $b5++) {
          for ($b6 = $b5+1; $b6 <= 45; $b6++) {
            $i++;
            $test = array( $b1,$b2,$b3,$b4,$b5,$b6 );

            $return = uniqueCombination($test);

            sort($return);

            print_r(array_map(function($v){ return implode(",", $v); }, $return));

          }
        }
      }
    }
  }
}

function uniqueCombination($in, $minLength = 1, $max = 2000) {
    $count = count($in);
    $members = pow(2, $count);
    $return = array();
    for($i = 0; $i < $members; $i ++) {
        $b = sprintf("%0" . $count . "b", $i);
        $out = array();
        for($j = 0; $j < $count; $j ++) {
            $b{$j} == '1' and $out[] = $in[$j];
        }
        count($out) >= $minLength && count($out) <= $max and $return[] = $out;
        }
    return $return;
}

DB에 넣는 부분은 삭제했다.  대량의 데이터를 처리하는 나름의 노하우이기 때문에... 나도 먹고는 살아야지...

uniqueCombination 함수는 6개의 번호에서 나올수 있는 조합을 얻기 위해 추가 했다.

어제 말했던 1,6번 조합 같은 번호가 연속적으로 나올수가 있어 검증을 하기위해...

원했던 자료가 잘 나왔고 그래서 바로 DB에 넣을 수 있었다.

이제 888회까지의 당첨 번호를 넣어야 한다.

시간 단 축을 위해 로또 사이트에서 파일을 받아 처리할 생각이다.

시작은 했지만 앞으로 가야할 길이 너무나 멀어 보인다.  힘내자. 먹고 살려면...