Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   задача нахождения нат.чисел, запись которых есть одна из строгих последовательностей (https://javascript.ru/forum/misc/37438-zadacha-nakhozhdeniya-nat-chisel-zapis-kotorykh-est-odna-iz-strogikh-posledovatelnostejj.html)

Mirach 19.04.2013 17:45

задача нахождения нат.чисел, запись которых есть одна из строгих последовательностей
 
Здравствуйте. У меня есть такая задача:
Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.

У меня есть код, который считывает число и записывает цифры числа в массив:
var b = +prompt('введите число:');
var massiv = [];
for (var temp = b; Math.round(temp) != 0; temp /= 10, temp = Math.floor(temp)) {
      massiv.unshift(temp % 10);
}

Помогите пожалуйста дописать программу. Или подскажите как организовать нахождение этих чисел.
Спасибо!

Aetae 19.04.2013 18:28

Вообще не поятно чо вам надо: в коде одно, в задаче другое, подразумевали вы наверняка третье...
Например чтобы проверить введённое число, достаточно сделать так:
var digits = '0123456789 9876543210',
    num = +prompt('введите число:');;
if( ~digits.indexOf(num) ) alert('Норм: ' + num);
else alert('Печаль: ' + num);

with-love-from-siberia 19.04.2013 19:10

Aetae,
Я так думаю, что следующий пример описывает постановку проблемы:
Цитата:

Дано: 50
Найти:
а) "восходящие" - 12, 23, 34, 45
б) "нисходящие" - 10, 21, 32, 43
И так для любого другого заданного числа.

rgl 19.04.2013 19:14

with-love-from-siberia,
А я думаю по-другому. Строго возрастающая последовательность - это не последовательность, в которой каждая следующая цифра на 1 больше предыдущей, а последовательность, где каждая следующая цифра строго больше предыдущей (т.е. не "больше или равно" а "строго больше")
Пусть автор для начала уточнит условие.

Решать можно простым перебором, это годится для небольших чисел, но если граничное число большое и требуется эффективность, то можно применить более хитрый алгоритм, но тогда решение будет нетривиальным.

with-love-from-siberia 19.04.2013 19:27

rgl,
Согласен. Уточнение требуется.

Цитата:

Сообщение от Mirach
Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.

Цитата:

Сообщение от rgl
Строго возрастающая последовательность

Скорее всего Вы правы. Тогда решение должно быть:

Цитата:

Дано: 50
Найти:
а) "восходящие" - 12, 34
б) "нисходящие" - 10, 32

rgl 19.04.2013 22:47

with-love-from-siberia,
Я имел ввиду другое, дано 50, восходящие 0-9, 12-19, 23-29, 34-39, 45-49, нисходящие 0-9, 10, 20, 21, 30-32, 40-43, 50

with-love-from-siberia 19.04.2013 23:22

rgl, да... Без четкого определения не обойтись.

Aetae 19.04.2013 23:36

Цитата:

Сообщение от with-love-from-siberia (Сообщение 247275)
rgl, да... Без четкого определения не обойтись.

О чём я самого начала и сказал.)
А в пример привёл самое простое что пришло на ум в данных условиях.)

Demath 21.04.2013 17:01

Цитата:

Сообщение от Mirach
Здравствуйте. У меня есть такая задача:
Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.

Вот для возрастающих

<script type="text/javascript">
function Sequence(n)
{
    if (n<12) return 'Искомых чисел нет.';

    var i, k, a, b, t, A=[];

    for (i=12; i<=n; i++)
    { t = true;
      k = i;
      a = k%10;
      k = Math.floor(k/10);
      while (k>0 && t)
       { b = k%10;
         if (b>=a) t = false;
         else { a = b; k = Math.floor(k/10); }
       }
      if (t) A[A.length]=i;
    }
  
    return A;
}
</script>
<button onclick="alert( Sequence(50) )">Найти числа для n=50</button>

Цитата:

Сообщение от rgl
восходящие 0-9

Разве цифры этих чисел образуют строго возрастающие или строго убывающие последовательности?

rgl 22.04.2013 11:59

Цитата:

Сообщение от rgl (Сообщение 247272)
восходящие 0-9

Цитата:

Сообщение от Demath (Сообщение 247424)
Разве цифры этих чисел образуют строго возрастающие или строго убывающие последовательности?

Математик скажет "да", философ - "нет".
Аналогично оба ответят на вопрос: пустое множество - это множество?


Часовой пояс GMT +3, время: 08:51.