Цитата:
---- 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, время: 03:36. |