математика — предсказать следующее число и определить последовательность последовательности чисел

Привет, я делаю сценарий, чтобы предсказать следующий номер в безопасности, но я не могу заставить его работать …

Что мне нужно? Скрипт для прогнозирования следующего числа в последовательности, такой как вопросы математики для детей, но более обширный.

  • Пример 1:

    3 > 6 > 9
    

Здесь будет + 3 + 3шаблон "+3"

  • Пример 2 (мы усложним):

    4 > 10 > 5 > 11 > 6
    

Вот + 6 - 5 + 6 - 5шаблон "+6-5"

  • Ну что ж … Следующий пример сделает это очень сложно:

    2 > 16 > 8 > 13 > 104 > 52 > 57 > 456
    

Вот + 14 - 8 + 5 + 91 - 52 + 5 + 399.... но шаблон "* 8 / 2 + 5"

Сценарии должны вернуть следующий номер «возможно» и обнаруженный шаблон.

Это для образовательных целей.

-1

Решение

Я принял это как вызов, чтобы написать это на чистом PHP, так что мой класс результата таков:

class Predict {
private $nums = array();
private $rawPattern = array();

function __construct($nums) {
$this->nums = $nums;
$this->createPattern();
}

private function patternPart($num) {
if($num >= 0) {
$patternPart = "+{$num}";
} else {
$patternPart = "{$num}";
}

return $patternPart;
}

private function createPattern() {
foreach($this->nums as $key => $num) {
if($key > 0) {
$prev = $this->nums[$key - 1];
$diff = $num - $prev;

$this->rawPattern[] = $this->patternPart($diff);
}
}
}

function getPattern($del = ' ') {
$first = reset($this->rawPattern);

// When all values are same just print the first one
if(count(array_unique($this->rawPattern)) === 1 && end($this->rawPattern) === $first) {
return $first;
} else {
$resultPattern = array();
$patternToAppend = array();
$doCheckIndex = 0;

foreach($this->rawPattern as $key => $part) {
if($key == 0) {
$resultPattern[] = $part;
} else {
$checkNum = $this->rawPattern[$doCheckIndex];

if($checkNum == $part) {
$patternToAppend[] = $part;
$doCheckIndex++;
} else {
$patternToAppend[] = $part;
$doCheckIndex = 0;

if(!empty($patternToAppend)) {
$resultPattern = array_merge($resultPattern, $patternToAppend);
$patternToAppend = array();
}
}
}
}

return implode($del, $resultPattern);
}
}
}

Я попробовал это с вашими значениями, так что это результаты:

$nums1 = new Predict(array(3, 6, 9));
$nums2 = new Predict(array(4, 10, 5, 11, 6));
$nums3 = new Predict(array(2, 16, 8, 13, 104, 52, 57, 456));

echo $nums1->getPattern(); // prints +3
echo $nums2->getPattern(); // prints +6 -5
echo $nums3->getPattern(); // prints +14 -8 +5 +91 -52 +5 +399

Ну, я не лучший разработчик, но, кажется, работает. Просто попробуйте больше вариантов или что-то еще, и когда это не сработает, дайте мне знать (возможно, я найду еще раз).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]