Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тут собираем годные задачи (javascript) (https://javascript.ru/forum/offtopic/32201-tut-sobiraem-godnye-zadachi-javascript.html)

Maxmaxmахimus 07.10.2012 14:04

Тут собираем годные задачи (javascript)
 
Этот пост будет пополняться лучшими задачами которые мы будем писать в каментах)
а пока тут пусть полежит ссылочка на это видео http://www.youtube.com/watch?v=KaqC5FnvAEc

__________________________________________________

Задача № 0

Создать переменную видимую только в блоке (аналог let в ECMA6).

for ( var i = 0; i < 10; i++ ){
    var ololo = i; // сделать так чтобы ololo  был виден только в блоке с циклом

}

// но не тут
window.ololo // undefined




__________________________________________________

Задача № 1

Составить функцию, которая продолжала бы числовую последовательность (арифметическую).

Например :

var mySequence = continueSequence([  1, 4, 7, 10  ]);
 
mySequence(); // 13
 
mySequence(); // 16




__________________________________________________

Задача № 2

Реализовать функцию для сложения чисел, которые превышают Number.MAX_VALUE
plus(    "1e500", "1e500" ); // "2e500"



(экпоненциальный вид для краткости. думаю, все знают про них)

DjDiablo 07.10.2012 17:53

Интересная задача которая возникла пока с 2d игрался.
Определение коллизий 2х спрайтов.

Принадлежность точки прямоугольнику, это элементарно.

а вот столкновение двух прямоугольников как определить ?
придумал вот такое алгоритм.
Идея в том что, разница между двумя крайними точками системы из двух столкнувшихся прямоугольников,будет всегда меньше суммы ширин, двух прямоуоугольников. Если условие выполняется для высоты и ширины, значит есть пересечение.

r=function(x,y,w,h,x1,y1,w1,h1){
			    var sx=x<x1?x:x1,
			        sy=y<y1?y:y1,
			        ex=x+w>x1+w1?x+w:x1+w1,
			        ey=y+h>y1+h1?y+h:y1+h1;
                return ex-sx<w+w1 && ey-sy<h+h1;
 
			    //if (ex-sx<w+w1 && ey-sy<h+h1)return true;
			    //else return false
			}

                        // true
			alert(r(
				0,0,100,100, 
				50,50,100,100
			));
                        // false
			alert(r(
				0,0,100,100, 
				150,50,100,100
			));

                        // true
			alert(r(
				51,51,100,100, 
				50,50,100,100
			));


                        // (один квадрат внутри другого) true
			alert(r(
				0,0,100,100, 
				50,50,10,10
			));

Maxmaxmахimus 07.10.2012 17:57

Просто проверяешь принадлежит ли каждая вершина многоугольника к другому, если ни одна не принадлежит, то проверяешь пересекаются ли их отрезки друг с другом.

melky 07.10.2012 18:23

Задача № 0

Составить функцию, которая продолжала бы числовую последовательность (арифм.).

Например :
var mySequence = continueSequence([  1, 4, 7, 10  ]);

mySequence(); // 13

mySequence(); // 16


Maxmaxmахimus 07.10.2012 19:07

Цитата:

Сообщение от DjDiablo
Идея в том что, разница между двумя крайними точками системы из двух столкнувшихся прямоугольников,будет всегда меньше суммы ширин, двух прямоуоугольников. Если условие выполняется для высоты и ширины, значит есть пересечение.

только для выпуклых?

Цитата:

Сообщение от melky
Задача № 0

разве для этого не придется писать ИИ?

Gozar 07.10.2012 19:28

Ссылка битая, новая ссылка:

http://www.youtube.com/watch?v=kKJRPPA6NBQ

Maxmaxmахimus 07.10.2012 19:36

Эту не выбрал потому что там концовку ждать долго

DjDiablo 07.10.2012 20:07

Цитата:

только для выпуклых?
что такое выпуклый прямоугольник в 2D пространстве?

Был бы многоугольник веротно пришлось бы бить на треугольники.
Алгоритм вроде тесты проходит, но в движок встроить неудаётся.

DimaJS 07.10.2012 20:17

Цитата:

Сообщение от DjDiablo
что такое выпуклый прямоугольник ?

да, это прикольно - сделать невыпуклый прямоугольник :D , впрочем кажется на какой то другой плоскости это вроде можно сделать (хотя не знаю );)

Maxmaxmахimus 07.10.2012 20:35

Стоп так ты про прямоугольники паришься? так это вообще не задача даже О_О это же слишком сложно для простых умов..

Я то думал ты про многоугольники.

Цитата:

Сообщение от DjDiablo
Был бы многоугольник веротно пришлось бы бить на треугольники.

я уже рассказал что надо было бы делать если бы это был многоугольник.


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