Цитата:
---- https://www.codewars.com/users/Alexandroppolus |
Цитата:
function crack(login) {
console.log('login:', login);
var n=0;
var pass = ''
for( var len=0; len<28; len++ ) {
var probes = []
var list = [0,1,2,3,4,5,6,7,8,9] //список цифр для подстановки
var probe=0
do {
probe+=2
var a = []
for( n in list ) {
var nn = pass+n
var hr1, hr = process.hrtime()
for( var i=0; i<12000+(len*100*probe); i++ ) {//<--подобрать кол-во расшифровок
login(nn)
}
hr1 = process.hrtime()
hr1 = String(hr1[0]).slice(-1) + String(hr1[1]).padStart(9, '0')
hr = String(hr[0]).slice(-1) + String(hr[1]).padStart(9, '0')
var t = Number(hr1) - Number(hr)
a[n] = t
}
var max = Math.max.apply(null, a.filter(n=> n!=undefined))
var pass_probe = pass + a.indexOf(max)
var next = true
probes[pass_probe] = Number(probes[pass_probe] || 0) + 1
//надо чтоб число несколько раз оказалось самым долгим:
if( probes[pass_probe] > 2 ) {
next = false
pass = pass_probe
}
//console.log( 'PASS:', pass_probe )
//удалить индекс с самым маленьким временем выполнения:
var del_list = []
var min = Math.min.apply(null, a.filter(n=>n != undefined));
del_list.push(min)
if( probes[pass + a.indexOf(min)] == undefined ) delete( list[ a.indexOf(min) ] );
//ещё раз
var min = Math.min.apply(null, a.filter(n=>n != undefined && del_list.indexOf(n) == -1));
del_list.push(min)
if( probes[pass + a.indexOf(min)] == undefined ) delete( list[ a.indexOf(min) ] );
//третий раз
var min = Math.min.apply(null, a.filter(n=>n != undefined && del_list.indexOf(n) == -1));
del_list.push(min)
if( probes[pass + a.indexOf(min)] == undefined ) delete( list[ a.indexOf(min) ] );
//4-ый
//var min = Math.min.apply(null, a.filter(n=>n != undefined && del_list.indexOf(n) == -1));
//del_list.push(min)
//if( probes[pass + a.indexOf(min)] == undefined ) delete( list[ a.indexOf(min) ] );
} while( next )
}
//последние четыре цифры быстрее подобрать влоб:
for( i=0; i<=9999; i++ ) {
if( login(pass + String(i).padStart(4, '0')) ) break
}
return pass + String(i).padStart(4, '0')
//return '12345678901234567890123456789012';
}
|
Белый шум,
:) действительно успевает один крякнуть. назовем ваш код "Вредоносный процесс" |
вот еще мне понравилась
Уровень сложности 4Kyu (Мидл) На входе многомерные массивы вида
array = [[1,2,3],
[4,5,6],
[7,8,9]]
array = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
Содержимое может быть произвольное, не обязательно цифры. на выходе надо получить массивы вида 1) [1,2,3,6,9,8,7,4,5]; 2) [1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10] тоесть выходной массив собирается по спирали по часовой стрелке. ![]() |
Цитата:
Змейка робот |
Интересная ката 6kyu (новичок+)
Напишите код который позволит стабильно выводить true в консоль. var guess = // ваш код // ваш код console.log(Math.floor(Math.random() * 100 + 1) == guess);// проверка |
j0hnik,
var guess = function() {
var b = Math.random,
a;
Math.random = function() {
a = b();
guess = Math.floor(100 * a + 1);
return a
}
}();
console.log(Math.floor(Math.random() * 100 + 1) == guess);// проверка
console.log(Math.floor(Math.random() * 100 + 1) == guess);// проверка
console.log(Math.floor(Math.random() * 100 + 1) == guess);// проверка
|
рони,
Ок, работает, можно даже чуть проще Math.random = () => 0; var guess = 1 |
Цитата:
а тот вариант "без травматизма" :) недавно по работе пришлось таким же образом пропатчить некоторые встроенные функции. Так что это имеет практический смысл. |
Alexandroppolus,
Для ката это без разницы. |
| Часовой пояс GMT +3, время: 01:27. |