13.02.2014, 22:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
Дзен-трансгуманист,
маленький универсальный преобразователь к одномерному виду
function x(c) {
for (var d = 5, a = 0, b = 0; b < c.length; b++) a *= d, a += c[b], d++;
return a
};
alert([x([4]),x([4,5]),x([4,5,6]),x([4,5,6,7])])
|
|
13.02.2014, 22:21
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
рони,
Чёто не то наворочено.
__________________
Гейзенберг, возможно, читал этот тред.
|
|
13.02.2014, 22:22
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
А разномерный массив-это правильно?
|
|
13.02.2014, 22:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
Сообщение от Дзен-трансгуманист
|
Чёто не то наворочено.
|
также выдаёт i или что-то нетак?
function m(c) {
for (var d = 5, a = 0, b = 0; b < c.length; b++) a *= d, a += c[b], d++;
return a
};
var i=[];
for (var x=0; x<5; x++) for (var y=0; y<6; y++) for (var z=0; z<7; z++) i.push(m([x,y,z]));
console.log(i.join(', '));
|
|
13.02.2014, 22:35
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
вот это действительно наркомания
|
|
13.02.2014, 22:41
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
массив с массивами...указательный массив.
В яваскрипте нет названия для такого массива?
Ссылочный массив пусть будет или тоже неправильно?
А то какая-то "непонятина" получается.
|
|
13.02.2014, 22:41
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
Сообщение от dima***
|
А разномерный массив-это правильно?
|
Нет, это словесный каламбур.
Сообщение от рони
|
также выдаёт i или что-то нетак?
|
[4,5] - 29? Что не так?
Во-вторых, счет идет с нуля, последний индекс = размер-1.
Я там продемонстрировал, что приведенная в пример формула дает корректный порядок индексов. Естественно, последнее число было на единицу меньше общего размера.
И наконец, я бы даже не догадался, что эта функция должна вычислять размер, если бы начал читать тему с этой страницы. Что там за d = 5?
__________________
Гейзенберг, возможно, читал этот тред.
Последний раз редактировалось Дзен-трансгуманист, 13.02.2014 в 22:45.
|
|
13.02.2014, 22:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
Сообщение от Дзен-трансгуманист
|
[4,5] - 29? Что не так
|
а что здесь неправильно? 5 * 6 = 30 -- от 0 до 29
Сообщение от Дзен-трансгуманист
|
Во-вторых, счет идет с нуля, последний индекс = размер-1
|
у меня всё тоже
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<script>
function m(c) {
for (var d = 5, a = 0, b = 0; b < c.length; b++) a *= d, a += c[b], d++;
return a
};
for (var x=0; x<5; x++) for (var y=0; y<6; y++) document.write('['+ x +','+ y +'] : '+m([x,y])+'<br>');
</script>
</body>
</html>
Последний раз редактировалось рони, 13.02.2014 в 23:21.
|
|
13.02.2014, 23:21
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
Сообщение от рони
|
а что здесь неправильно?
|
Не понимаю, какая связь между [4,5] и 5*6
Обфускация концептуально необходима?
__________________
Гейзенберг, возможно, читал этот тред.
Последний раз редактировалось Дзен-трансгуманист, 13.02.2014 в 23:25.
|
|
13.02.2014, 23:23
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
// Multidimensional to single dimension representation
var m2sdim = ( function () {
var argNames = 'abcdefghijklmnopqrstuvwxyz'.split('');
return function ( /* arguments */ ) {
var dimension = arguments.length;
var fnSource = argNames[0];
var size = +arguments[0];
for ( var i = 1; i < dimension; i++ ) {
fnSource = '(' + fnSource + '*' + +arguments[i] + '+ +' + argNames[i] + ')';
size *= +arguments[i];
}
var fn = Function.apply( null, argNames.slice( 0, dimension ).concat( 'return ' + fnSource ));
fn.size = size;
return fn;
};
})();
var test = m2sdim(5,6,7,8);
console.log([
test.toString(),
test(0,0,0,1),
test(0,0,1,0),
test(0,1,0,0),
test(1,0,0,0),
test.size // размер массива
].join('\n'));
Как можно догадаться, тут максимум на 26 измерений. Но для примера, думаю, достаточно.
__________________
Гейзенберг, возможно, читал этот тред.
Последний раз редактировалось Дзен-трансгуманист, 13.02.2014 в 23:30.
|
|
|
|