@countZer0

Как найти числа из трех последовательно восходящих цифр?

Возьмите все числа от 1 до 10000 (включительно). Выбросьте из этой последовательности все числа, где встречаются последовательности из трех последовательно восходящих цифр (например 012 или 678). Найдите сумму оставшихся чисел.

По идее, я делаю это с помощью while, но как определить последовательные числа хз.
Помогите разобраться.
  • Вопрос задан
  • 186 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
<?php
function isSequence3($num) {
	if ($num < 123) return false;
	
	$digits = str_split($num);
	$seq = 1;
	
	for($i=1; $i<count($digits); $i++) {
		if ($digits[$i] == ($digits[$i - 1] + 1)) $seq++;
		else $seq = 1;
	}
	
	return $seq > 2;
}

$sum = 0;

for ($n=1; $n<=10000; $n++) {
	if (isSequence3($n)) $sum += $n;
}

printf("Sum: %d", $sum);


PHP Sandbox
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
function isSeq3(int $number) : bool
{
  $prevDigit = 0;
  $seqLen = 0;
  while ($number > 0) {
    $digit = $number % 10;
    if ($digit === $prevDigit - 1) {
      $seqLen += 1;
    } else {
      $seqLen = 1;
    }
    if ($seqLen === 3) {
      return true;
    }
    $number = intdiv($number, 10);
    $prevDigit = $digit;
  }
  return false;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы