Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Логические задачи по циклам (https://javascript.ru/forum/misc/31344-logicheskie-zadachi-po-ciklam.html)

wawandas 04.09.2012 14:16

Логические задачи по циклам
 
Как и обещал выкладываю задачки по циклам, для развития логики и навыков работы с циклами ;)


1
/*
1. Написать скрипт, который запрашивает 2 числа, начало и конец диапазона, и в результате выдаёт сумму всех нечетных чисел в этом диапазоне.
*/

2
/*
2. Найти факториал числа, у пользователя запрашивается число, и в результате выдаётся факториал числа,(если ввести к примеру 5 то результат должен быть равен 120, 
потому что факториал 5 это 5*4*3*2*1)
*/

3
/*
3. Найти последовательность Хэеса, то есть пользователь вводит число и в результате должно быть выдано сообщение, с самой последовательностью, количеством шагов, 
которое понадобилось для нахождения этой последовательности, и вершиной последовательности, это максимальное число из этой последовательности. Последовательность 
Хэеса считается так: если ввели число 9, то проверяем его, если оно чётное, делим на 2, если нечетное, умножаем на 3 и прибавляем 1, и так до тех пор пока число не 
будет равно 1.


9*3+1=28
28/2=14
14/2=7
7*3+1=22
22/2=11
11*3+1=34
34/2=17
17*3+1=52
52/2=26
26/2=13
13*3+1=40
40/2=20
20/2=10
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1

Резкльтат:
Последовательность: 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Шагов 19
Вершина 52
*/

4
/*
4.Пользователь вводит подряд 20 разных чисел(ввод осуществляется всех чисел только в 1 переменную),нужно посчитать сколько было инверсий. Пример:
5 2 5 3 6 4 8 9 2 4 1 6 8 5 4 7 9 7 1 5 = 9 инверсий, к примеру 5 2 - это инверсия то есть то число которое стоит слева больше того числа которое справа.
*/

5
/*
5.Пользователь вводит диапазон нужно вывести на экран все простые числа из этого диапазона. Простыми числами называются числа, которые имеют всего 2 делителя, то есть 
делятся только на 1 и на самого себя! Пример простых чисел: 3,5,7,11,13,17,...

1. Посчитать сумму нечётных элементов массива.
2. Найти сумму элементов массива, элементы которого находятся между крайними отрицательными значениями.
3. Поменять местами элементы массива попарно.
4. Добавить отрицательный элемент массива в случайную позицию в массиве, затем слева от отрицательного элемента , отсортировать элементы по возрастанию, не затрагивая сам отрицательный элемент, а справа по убыванию, так же не затрагивая отрицательный элемент.
5. Посчитать в строке сколько букв, цифр и других символов.
6. Есть массив строк, найти в этом массиве самую короткую строку.
*/

6
/*
6. Дано произвольное целое число n. Написать программу, которая
разбивает число n на цифры и выводит их на экран;
подсчитывает сколько цифр в числе n;
находит сумму цифр числа n;
меняет порядок цифр числа n на обратный.
Пример: ввожу число 123
цифр в числе = 3
сумма = 6(это значение получили следующим образом 1+2+3)
обратный порядок = 321
*/


решения можно кидать прям сюда, для всеобщего обсуждения и возможных оптимизаций решений. Всем спасибо за внимание :victory:

ksa 04.09.2012 14:58

Интересно... :)
Кроме "математических" примеров больше фантазия не у кого не идет? :)

Цитата:

Сообщение от wawandas
выкладываю задачки по циклам

Такие задачки есть в любом учебнике и любой лабораторной методичке, любой препод тебе их на память расскажет... Т.е. они практически все "букварские"... У кого собрался развивать логику? :)

Dim@ 04.09.2012 16:08

wawandas,
как сказал ksa - букварские задачки - простые, но мне в лом делать

ksa 04.09.2012 16:24

Цитата:

Сообщение от Dim@
мне в лом делать

Потому как букварские... :D

Dim@ 04.09.2012 16:31

3
(function (){
var x = prompt("Введите число", "10");
x -= 0;
if (((x + "") == "NaN") || (x <= 0)) return;
for (var i = verh = 0, pos = new Array(); true; ++i){
 if (i == 0) pos.push(x);
 if (x % 2 == 0) x /= 2;
 else x = x * 3 + 1;
 if (x > verh) verh = x;
 pos.push(x);
 if (x == 1) break;
}
alert("Результат:\nПоследовательность: " + 
pos.join(" ") + 
"\nШагов: " + (i + 2) + 
"\nВершина: " + verh);
})();

Dim@ 04.09.2012 16:32

ksa,
да не не совсем - мне 3 понравилась, но она тоже ппц легкая

ksa 04.09.2012 16:38

Если есть у кого-то желание действительно начать развиваться... :D
Вот мои задачки по циклам:
1. Охота на лис
Цитата:

Цель игры состоит в том, чтобы как можно быстрее найти всех лис на игровом поле.
Игровое поле состоит из массива 10Х10. В нем случайным образом генерится 5 лис (лиса - определяется парой [X,Y]).
Игрок имеет возможность открыть любую клетку, щелкнув ее левой кнопкой мыши. Если в клетке находится лиса, то она показывается.
Если лисы нет, в клетке появится цифра, которая указывает, сколько лис находится "по пеленгу" (на горизонтали, вертикали и диагоналях клетки).
Игра заканчивается после поимки всех лис.
2. Морской бой
Цитата:

Думаю что правила в него известны :)
Для обоих игр можно реализовать варианты:
человек - человек
человек - комп
комп - комп

Dim@ 04.09.2012 16:42

ksa,
это уже на развитие DOOOOOOOOOOOOOOOOOOOM-а

ksa 04.09.2012 16:46

Dim@, там и циклов будет навалом... :)


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