Дзен-трансгуманист,
маленький универсальный преобразователь к одномерному виду :write: :dance: 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])]) |
рони,
Чёто не то наворочено. :) |
А разномерный массив-это правильно?
|
Цитата:
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(', ')); |
вот это действительно наркомания :)
|
массив с массивами...указательный массив.
В яваскрипте нет названия для такого массива? Ссылочный массив пусть будет или тоже неправильно? А то какая-то "непонятина" получается. |
Цитата:
Цитата:
Во-вторых, счет идет с нуля, последний индекс = размер-1. Я там продемонстрировал, что приведенная в пример формула дает корректный порядок индексов. Естественно, последнее число было на единицу меньше общего размера. И наконец, я бы даже не догадался, что эта функция должна вычислять размер, если бы начал читать тему с этой страницы. :) Что там за d = 5? |
Цитата:
Цитата:
<!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> |
Цитата:
Обфускация концептуально необходима? :D |
// 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 измерений. Но для примера, думаю, достаточно. :) |
Часовой пояс GMT +3, время: 16:59. |