02.05.2018, 16:40
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Aetae,
А если ему потом понадобится то же самое из 6 или более символов уже пирамида упавшая на бок получится.
чем жуток код рони?
|
|
02.05.2018, 16:43
|
Интересующийся
|
|
Регистрация: 01.10.2017
Сообщений: 20
|
|
рони,
Спасибо работает.
Aetae,
мне не для препода, хучу как раз сделать что-то типа брутфорса строки.
j0hnik,
Тоже думал про циклы но не получилось
|
|
02.05.2018, 16:56
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
VSEM-DOBRA,
все проще простого
var arr = ['A','B','C','D','E'], a =[], x=[];
for(var k = 0; k<arr.length; k++){
a[0] = arr[k];
for(var l = 0; l<arr.length; l++){
a[1] = arr[l];
for(var m = 0; m<arr.length; m++){
a[2] = arr[m];
for(var n = 0; n<arr.length; n++){
a[3] = arr[n];
x.push(a.join(''));
}
}
}
}
console.log(x);
|
|
02.05.2018, 17:02
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
VSEM-DOBRA,
брутфорс ваш будет быстрей работать не со строками, а с массивом.
и лучше не пушить, а проверять на лету и успешно забывать если не тот.
1) берем вашу строку делаем из нее массив,
2) генерируем с помощью цикла новый массив сверяем его с текущем, если не подходит, успешно забываем. если подходит останавливаем цикл.
|
|
02.05.2018, 17:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
шифровка из центра ...
<script>
var arr = ['A','B','C','D','E'];
function fn(e, k) {
for (var f = [], c = e.length, g = 0;; g++) {
var b = g.toString(c),
a = k - b.length;
if (0 > a) {
break;
}
0 < a && (b = Array(++a).join("0") + b);
for (var h = "", d = 0; d < k; d++) {
a = parseInt(b[d], c), h += e[a];
}
f.push(h);
}
return f;
};
document.write(fn(arr, 4).join('<br>'));
</script>
Последний раз редактировалось рони, 02.05.2018 в 17:11.
|
|
02.05.2018, 17:47
|
Интересующийся
|
|
Регистрация: 01.10.2017
Сообщений: 20
|
|
рони,
Спасибо
j0hnik,
Да, вы правы, буду над этим работать.
|
|
02.05.2018, 18:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
<script>
var arr = ['A','B','C','D','E'];
function fn(e, k) {
for (var f = [], c = e.length, g = 0;; g++) {
var b = g.toString(c);
if (b.length > k) break;
b = [...b.padStart(k,"0")].reduce((a,d) => (d = parseInt(d, c), a + e[d]),"");
f.push(b);
}
return f;
};
document.write(fn(arr, 4).join('<br>'));
</script>
|
|
02.05.2018, 18:21
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
<script>
var arr = ['A','B','C','D','E'];
var x = 0;
function fn(e, k) {
for (var f = [], c = e.length, g = 0;; g++) {
var b = g.toString(c);
if (b.length > k) break;
b = [...b.padStart(k,"0")].reduce((a,d) => {
x++;
return (d = parseInt(d, c), a + e[d]);
},"");
f.push(b);
}
console.log(x);
return f;
}
document.write(fn(arr, 4).join('<br>'));
</script>
Рони, не многовато ли итераций??
как то можно ведь оптимизировать?
Последний раз редактировалось j0hnik, 02.05.2018 в 18:32.
|
|
02.05.2018, 18:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
j0hnik,
один цикл, куда ещё оптимальней?
как преобразовать строку "0000" в "AAAA" можешь предложить своё решение, знаю только replace, не уверен что это оптимально.
|
|
02.05.2018, 18:33
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
рони,
да цикл то один, а циклические методы не считаете?
|
|
|
|