Ken пре 2 дана
родитељ
комит
0b31430a2c
2 измењених фајлова са 28 додато и 39 уклоњено
  1. 1 39
      app/Http/Controllers/api/Home.php
  2. 27 0
      app/Services/PcIssueService.php

+ 1 - 39
app/Http/Controllers/api/Home.php

@@ -77,44 +77,6 @@ class Home extends Controller
         return view('home', ['menu' => $menu]);
     }
 
-    function getMatchingNumbers($target)
-    {
-        // 定义从1到80的数字
-        $numbers = range(1, 80);
-        $bestMatch = null;
-
-        // 暴力法:随机选取20个不重复数字,并计算对应的3个数字
-        for ($i = 0; $i < 100000; $i++) { // 限制尝试次数,避免死循环
-            shuffle($numbers); // 随机打乱数字
-            $selectedNumbers = array_slice($numbers, 0, 20); // 取前20个数字
-
-            // 按照从小到大的顺序排序
-            sort($selectedNumbers);
-
-            // 计算第一个数字
-            $firstSum = $selectedNumbers[1] + $selectedNumbers[4] + $selectedNumbers[7] + $selectedNumbers[10] + $selectedNumbers[13] + $selectedNumbers[16];
-            $firstDigit = $firstSum % 10; // 取个位数
-
-            // 计算第二个数字
-            $secondSum = $selectedNumbers[2] + $selectedNumbers[5] + $selectedNumbers[8] + $selectedNumbers[11] + $selectedNumbers[14] + $selectedNumbers[17];
-            $secondDigit = $secondSum % 10;
-
-            // 计算第三个数字
-            $thirdSum = $selectedNumbers[3] + $selectedNumbers[6] + $selectedNumbers[9] + $selectedNumbers[12] + $selectedNumbers[15] + $selectedNumbers[18];
-            $thirdDigit = $thirdSum % 10;
-
-            // 计算最终结果
-            $result = $firstDigit + $secondDigit + $thirdDigit;
-
-            // 如果符合目标结果,返回这组数字
-            if ($result === $target) {
-                $bestMatch = $selectedNumbers;
-                break; // 找到一个匹配的结果后,结束循环
-            }
-        }
-
-        return $bestMatch;
-    }
 
     public function test()
     {
@@ -123,7 +85,7 @@ class Home extends Controller
         $target = intval($target);
 
 
-        $matchingNumbers = $this->getMatchingNumbers($target);
+        $matchingNumbers = PcIssueService::getMatchingNumbers($target);
         if ($matchingNumbers !== null) {
 //            echo "找到的数字是:" . implode(", ", $matchingNumbers);
         } else {

+ 27 - 0
app/Services/PcIssueService.php

@@ -112,4 +112,31 @@ class PcIssueService extends BaseService
         $winningNumbers[2] = $sum % 10;
         return $winningNumbers;
     }
+
+
+    //根据指定0-27的数字 得到20个数字
+    public static function getMatchingNumbers($target): array|null
+    {
+        $numbers = range(1, 80);
+        $bestMatch = null;
+        for ($i = 0; $i < 100000; $i++) {
+            shuffle($numbers);
+            $selectedNumbers = array_slice($numbers, 0, 20);
+            sort($selectedNumbers);
+            $firstSum = $selectedNumbers[1] + $selectedNumbers[4] + $selectedNumbers[7] + $selectedNumbers[10] + $selectedNumbers[13] + $selectedNumbers[16];
+            $firstDigit = $firstSum % 10;
+            $secondSum = $selectedNumbers[2] + $selectedNumbers[5] + $selectedNumbers[8] + $selectedNumbers[11] + $selectedNumbers[14] + $selectedNumbers[17];
+            $secondDigit = $secondSum % 10;
+            $thirdSum = $selectedNumbers[3] + $selectedNumbers[6] + $selectedNumbers[9] + $selectedNumbers[12] + $selectedNumbers[15] + $selectedNumbers[18];
+            $thirdDigit = $thirdSum % 10;
+            $result = $firstDigit + $secondDigit + $thirdDigit;
+            if ($result === $target) {
+                $bestMatch = $selectedNumbers;
+                break;
+            }
+        }
+        return $bestMatch;
+    }
+
+
 }