Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как создать многомерную матрицу????? (https://javascript.ru/forum/misc/24912-kak-sozdat-mnogomernuyu-matricu.html)

Даша Соколова 18.01.2012 19:13

Как создать многомерную матрицу?????
 
Как создать функцию чтобы создавала многомерную матрицу, например:

var border = Matrix(8,8)


возвращает двумерную матрицу 8 на 8
а если передать

Matrix(2,8,8,8,8)
создаст пятимерную матрицу 2 на 8 на 8 на 8 на 8

B@rmaley.e><e 18.01.2012 19:22

Взять и написать. Интересуют конкретные ответы — задавайте конкретные вопросы.

Даша Соколова 18.01.2012 19:29

Цитата:

Сообщение от B@rmaley.e><e
Взять и написать.

Очевидно что мой вопрос подразумевает ввиду. И если для тебя это не очевидно, то у меня для тебя плохие новости.
На всякий случай задам конкретный вопрос чтобы и тебе было очевидно: Как конкретно создать функцию возвращающую многомерные матрицы? А если точнее , то какие буквы написать в теле этой функции? Перечислите пожалуйста набор букв которые я должна туда вписать, либо назовите порядок действий, а буквы для вписывания я сама подберу.

nerv_ 18.01.2012 19:36

Даша Соколова, я не заметил, чтобы B@rmaley.e><e обращался к Вам на "ты".
Цитата:

Сообщение от Даша Соколова
какие буквы написать в теле этой функции? Перечислите пожалуйста набор букв которые я должна туда вписать, либо назовите порядок действий, а буквы для вписывания я сама подберу.

Изучить javascript. Начать можно здесь.

Даша Соколова 18.01.2012 19:41

Цитата:

Сообщение от nerv_
Изучить javascript. Начать можно здесь.

При чем тут изучение javascript? Мне нужен способ создать функцию возвращающую многомерные матрицы. И я думала в этом топике будут отписываться те, кто имеет желание мне помочь. А пока тут одни тролли и кэпы. И я обратилась к вам за помощью, вы намеренно притворяетесь ненормальными или трудно признать что не можете?
Лично я не могу, потому что выразительность языка не позволяет мне это сделать.

B@rmaley.e><e 18.01.2012 19:47

Цитата:

Сообщение от Даша Соколова
Лично я не могу, потому что выразительность языка не позволяет мне это сделать.

Как я уже говорил, задаёте конкретные вопросы — получаете конкретные ответы.
Цитата:

Сообщение от Даша Соколова
вы намеренно притворяетесь ненормальными или трудно признать что не можете?

Ваша задача очень похожа на учебную. Видимо, дали её Вам для того, чтобы Вы чему-нибудь научились. Вот мы и не желаем мешать Вашему обучению, делая всю работу за Вас. Помочь, указав направление развития — всегда пожалуйста, сделать всю работу за Вас — только в соответствующем разделе форума.

Даша Соколова 18.01.2012 19:57

Да знаю я про ваше "Пишите код мы покажем ошибку"
Ну хорошо. Пришлю вам вопрос конкретный:
Функции рисующие матрицы я сделать могу , выразительность языка это позволяет(цикл в цикле), но функцию делающую матрицы с произвольным порядком выразительность языка не позволяет.

было предпринято 2 попытки, первая:

Наполнять массив массивами столько раз, сколько передано аргументов, и длинны массивов делать равными значением аргументов. но выразительная способность языка, как я уже говорила, не позволяет динамически получать доступ к свойству.

Вторая попытка это наполнять матрицу с конца, то есть с самых дочерних её элементов, Засовывая и размножая их по родительским. Ну и естественно создавая родительские. Но выразительность языка не позволила сделать и это.

B@rmaley.e><e 18.01.2012 20:02

Цитата:

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

Что Вы имеете в виду?
var a = {b : {c : {d : 5}}};
var t = a.b.c;
alert(a.b.c.d);
t.d = 10;
alert(a.b.c.d);


Цитата:

Сообщение от Даша Соколова
Но выразительность языка не позволила сделать и это.

Это не очень конкретно.

Даша Соколова 18.01.2012 20:05

Цитата:

Сообщение от B@rmaley.e><e
Что Вы имеете в виду?

Попробуйте ради развлечения создать то что я попросила, для себя, и поймете в чем дело. Нужно определенное количество раз делать

[][][][] и сколько вот таких доступов должно быть (в данном случае 4) должно определяться числом. такого нет.

B@rmaley.e><e 18.01.2012 20:25

var n = +prompt('Сколько?', 13), a = [];
for (var i = 0, t = a; i < n; ++i) t = t[0] = [];
alert(JSON.stringify(a))
Для реализации Вашей задачи не хватает только стека, с помощью которого можно было бы возвращаться на верхние уровни. А стек и возвраты — это как раз про рекурсию. Проще всего сделать рекурсивный вариант. И, да, я его сделал. И мне хватило выразительности языка.

Octane 18.01.2012 20:46

Одноразовая почта на nwldx.com, ip 178.204… Livaanderiamarum, сколько можно плодить аккаунтов?!

trikadin 19.01.2012 00:23

Цитата:

Сообщение от Octane
Livaanderiamarum, сколько можно плодить аккаунтов?!

Да-да... Баним?)

Даша Соколова 19.01.2012 00:46

Вот что у меня получилось, но у нас условие что нужно использовать только нативные обьекты js. JSON вроде не нативный.

function Matrix() {
var matrix = new Array(arguments[arguments.length - 1])
for ( var i = arguments.length - 2; i >= 0; i--) {
var temp = new Array(arguments[i])
for ( var j = 0; j < temp.length; j++) {
temp[j] = JSON.parse(JSON.stringify(matrix))
}
matrix = temp
}
return matrix
}

matrix = Matrix(3,4,5,6,7,8,92,4,34)

создаст девятимерную матрицу с соответствующими длинами сторон.
Подскажите как реализовываеться стек на js. Что массивом это я догадалась а как его использовать?

Даша Соколова 19.01.2012 00:47

Octane что? 10 минут мейл это почта на которой я зарегистрировалась, а форум ваш я читаю уже давно, ровно как и сайт. Просто сейчас возник вопрос и пришлось регистрироваться.

Даша Соколова 19.01.2012 00:53

B@rmaley.e><e,
спасибо огромное за наводку! Читаю сейчас про стек. У меня вопрос к вам один, вы наполняли матрицу от родиьелей к детям, или создавали детей и копировали их в родителей?

Даша Соколова 19.01.2012 01:19

Ребят, ну помогите пожалуйста........

Даша Соколова 19.01.2012 02:17

Все поняла, для перебора используем цикл только в нем используем не счетчик, а используем стек! Можете показать примера кода парни.. Очень прошу...

FINoM 19.01.2012 03:30

Цитата:

Сообщение от Даша Соколова
Можете показать примера кода парни..

Сначала сиськи в доказательство того что ты не Ливандериаквариум.

Даша Соколова 19.01.2012 03:50

Я вообще не энаю кто это :)

Gvozd 19.01.2012 04:44

TITS OR GTFO

Даша Соколова 19.01.2012 06:06

Цитата:

Сообщение от Gvozd (Сообщение 151355)
TITS OR GTFO

А что если этот ваш ливанаквариум девушка или он уже пенис показывал :) ?
Вроде программисты, а такие озабоченные. А если по теме, мне кто нибудь поможет?

Gvozd 19.01.2012 06:24

Цитата:

Сообщение от Даша Соколова
А что если этот ваш ливанаквариум девушка или он уже пенис показывал ?

Он парень, как и ты.
В интернете нету девушек, по-определению, до тех пор, пока не доказано обратное
Цитата:

Сообщение от Даша Соколова
А если по теме, мне кто нибудь поможет?

Для того чтобы создать матрицу размерности N:
0) Создаем линейный массив размером, равным первому аргументу функции
1) Если N(количество аргументов функции) = 1, то заполняем массив нулями, или чем нужно
Иначе, заполняем матрицами размерностью (N-1), вызвав рекурсивно текущую функцию со всеми аругментами кроме первого
2) ВОзвращаем заполненный массив

FINoM 19.01.2012 06:28

Цитата:

Сообщение от Gvozd
В интернете нету девушек, по-определению, до тех пор, пока не доказано обратное

:lol:

B@rmaley.e><e 19.01.2012 07:13

Цитата:

Сообщение от trikadin
Да-да... Баним?)

Да.

devote 19.01.2012 09:53

Цитата:

Сообщение от B@rmaley.e><e
Да.

да не, думаю рано пока...

trikadin 19.01.2012 16:14

Цитата:

Сообщение от devote
да не, думаю рано пока...

Ну да...

Даша Соколова 20.01.2012 05:10

сдала через рекурсию

Даша Соколова 20.01.2012 05:11

За что баним?

trikadin 21.01.2012 04:00

Даша Соколова, пока не баним) Но мы следим за вами))

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

Зато здесь очень уважают вежливых воспитанных людей, желающих учиться самостоятельно. К сожалению, за вами данных качеств не было замечено (потому что иначе бы вы сюда не написали - чтобы понять, как написать многомерные матрицы на JS, достаточно прочитать статью про матрицы на Википедии и учебник по JS (в принципе, можно даже не весь - основы и раздел про массивы)). А после намёка на то, что это можно сделать самостоятельно - вы начали обвинять собеседника в низких интеллектуальных способностях. Согласитесь, это как минимум неуважительно. После того, как вы начали кидаться и на остальных, участники данного форума небезосновательно предположили, что вы - один из клонов известного местного блаженного под ником Livanderiaamarum. Ну, а просьба показать сиськи - это просто специфика компьютерных форумов ;) Вот и всё, надеюсь, в дальнейшем вы будете более спокойны и адекватны.

Ах да - ещё здесь плюют ядом в тех, кто как-то пытается намекнуть на несовершенство языка.

Даша Соколова 21.01.2012 15:29

Цитата:

Сообщение от trikadin
достаточно прочитать статью про матрицы на Википедии и учебник по JS (

Я умею писать матрицы уже года 3. Суть в том что я не знала про рекурсию и стеки. Прочитала сама в гугле и сделала. Вы все тут заносчивые. на вас бы посмотрела как бы вы мысли формулировали будь вы на месте тех кто просит о помощи. Царями себя возамнили. Такое чувство что мы ищите причины чтобы не помогать, люди разные и каждый просит по разному, и если вдруг кто-то попросил помощь не по шаблону который угоден вам, а это и не шаблон во все а просто оправдывсаался для своей совести, то вы язвите и играете словами за место того чтобы помочь человеку. и Любая просьба помочь в написании кода встречает фразу "ооо, мне нужно руки напрячь, вам в раздел работа" нет чтобы просто не отписываться раз помочь не собираетесь.
Вот мне помог тут один человек из всех, остальные язвили и стебались, и он по началу тоже. Советовали начально изучить жс и все в таком роде. Хотя жс к матрицам не имеет отношения. Естественно я воспринимаю это как нападки в мой адрес и как стеб.

Даша Соколова 21.01.2012 15:33

с рекурсией проблема, что не так в этом коде?

function Matrix() {
	if (arguments.length > 1) {
		var q = Array.prototype.shift.call(arguments)
		var matrix = new Array(q)
		for ( var i = 0; i < matrix.length; i++) {
			matrix[i] = Matrix.apply(null, arguments)
		}
		return matrix;
	} else {

		return new Array(arguments[0])
	}
}

Gvozd 21.01.2012 16:10

Цитата:

Сообщение от Даша Соколова
с рекурсией проблема, что не так в этом коде?

Все в порядке - код рабочий и правильный.
Наверно вас смутило, то что на alert(Matrix(3,3,2)), вам выдало такой набор запятых ,,,,,,,,,,,,,,,,,, как буд-то массив линейный?

На самом деле массив вполне нормальный, трехуровневый, и все такое.
Для того чтобы работать/отлаживать JS вам необходимо освоить средства отладки в барузерах.
Сейчас для каждого браузера есть встроенный, либо доступный в виде отдельного плагина инстурментарий разработчика.
Например Firebug для Firefox
В частности вы можете выводить отладочную информацию(в любом инструменте разработчика) через console.log(), и в консоли отобразится структура объекта

Даша Соколова 21.01.2012 17:49

Gvozd,
да, спасибо меня мутил не алерт.
Меня смутило то что вывела консоль.


function Matrix() {
	if (arguments.length > 1) {
		var q = Array.prototype.shift.call(arguments)
		var matrix = new Array(q)
		for ( var i = 0; i < matrix.length; i++) {
			matrix[i] = Matrix.apply(null, arguments)
		}
		return matrix;
	} else {

		return new Array(arguments[0])
	}
}

console.log(Matrix(3,3,3))

Даша Соколова 21.01.2012 17:54

Ой, точно работает! Значит у меня хром подглючивал. Ну бывает у него.
Спасибо большое Gvozd за навродку на рекурсию ^^

Хотела написать лапка получилось папка )
А есть еще какие то приемы которые мне нужно знать?

Kolyaj 21.01.2012 19:37

Фига у nemo титьки :blink:

monolithed 21.01.2012 20:30

Изоморф :D

melky 21.01.2012 22:17

упс. так значит, я ошибался

monolithed 21.01.2012 22:19

Цитата:

Сообщение от melky
упс. так значит, я ошибался

в чем?

melky 21.01.2012 22:21

я думал, что это andmeriemarum (или как его там. авка тоже с котом)

или это он и есть? он же кидал ссылку на профиль вконтакте. надурил?

манера разговора та же самая ведь)

monolithed 21.01.2012 22:21

Цитата:

Сообщение от melky
я думал, что это andmeriemarum

Он и есть. Или ты думаешь, что немо за ночь сиськи отростил? :D


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