Daniil
чекните потом?
Andrew
https://github.com/cd48b153/hashmap-contest
Andrew
гляньте тут
Lupusregina[beta]
Andrew
)
Andrew
https://github.com/flesler/hashmap
Lupusregina[beta]
выкрасть код то любой может
Daniil
да эт полюбэ
Daniil
но подсмотреть полезно
Daniil
каждый раз встречаюсь с интересными решениями
Егор 🐟
Так-с, @igorz :D
Lupusregina[beta]
каждый раз встречаюсь с интересными решениями
const hashFn = (key) => {
let hash = 1;
let tmp = 0;
for(let i = 0; i < key.length; i++) {
tmp ^= key[i].charCodeAt();
tmp <<= 1;
hash ^= tmp;
}
return hash;
};
class HashMap {
constructor(hashFn, arrSize = [8, 16, 20]) {
this.hashFn = hashFn;
this.arrSize = arrSize.slice();
this.size = 0;
this.table = [];
this.length = 0;
this.array = [];
this._resize();
}
_resize() {
this.size = this.arrSize.shift();
if ( !this.size )
throw new Error("Max size");
this.table = Array(1 << this.size).fill(null);
for(let i = 0; i < this.array.length; i++)
this._add(this.array[i][0], i);
}
_add(key, i) {
const index = this.hashMod(this.hashFn(key), this.size);
if ( !this.table[index] ) {
this.table[index] = [i];
return;
}
this.table[index].push(i);
}
hashMod(hash, numBits) {
return hash & ~(1 << numBits);
}
has(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return false;
for(const i of sub)
if ( this.array[i][0] === key )
return true;
return false;
}
get(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return null;
for(const i of sub)
if ( this.array[i][0] === key )
return this.array[i][1];
return null;
}
set(key, value) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = (this.table[index] = this.table[index] || []);
for(const i of sub)
if ( this.array[i][0] === key ) {
this.array[i][1] = value;
return;
}
sub.push(this.array.length);
this.array.push([key, value]);
if ( this.array.length >= (1 << this.size) )
this._resize();
}
del(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return false;
let j = 0;
for(const i of sub) {
if ( this.array[i][0] === key ) {
sub.splice(j, 1);
this._moveLast(i);
return true;
}
j++;
}
return false;
}
_moveLast(i) {
const lastI = this.array.length-1;
const last = this.array[lastI];
const sub = this.table[ this.hashMod(this.hashFn(last[0]), this.size) ];
sub[ sub.indexOf(lastI) ] = i;
this.array[i] = last;
this.array.length--;
}
}
Вот что я сделал. Только фун-я хеша не эфективная. Также возможны ошибки
Syntax Highlight Bot
const hashFn = (key) => {
let hash = 1;
let tmp = 0;
for(let i = 0; i < key.length; i++) {
tmp ^= key[i].charCodeAt();
tmp <<= 1;
hash ^= tmp;
}
return hash;
};
class HashMap {
constructor(hashFn, arrSize = [8, 16, 20]) {
this.hashFn = hashFn;
this.arrSize = arrSize.slice();
this.size = 0;
this.table = [];
this.length = 0;
this.array = [];
this._resize();
}
_resize() {
this.size = this.arrSize.shift();
if ( !this.size )
throw new Error("Max size");
this.table = Array(1 << this.size).fill(null);
for(let i = 0; i < this.array.length; i++)
this._add(this.array[i][0], i);
}
_add(key, i) {
const index = this.hashMod(this.hashFn(key), this.size);
if ( !this.table[index] ) {
this.table[index] = [i];
return;
}
this.table[index].push(i);
}
hashMod(hash, numBits) {
return hash & ~(1 << numBits);
}
has(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return false;
for(const i of sub)
if ( this.array[i][0] === key )
return true;
return false;
}
get(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return null;
for(const i of sub)
if ( this.array[i][0] === key )
return this.array[i][1];
return null;
}
set(key, value) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = (this.table[index] = this.table[index] || []);
for(const i of sub)
if ( this.array[i][0] === key ) {
this.array[i][1] = value;
return;
}
sub.push(this.array.length);
this.array.push([key, value]);
if ( this.array.length >= (1 << this.size) )
this._resize();
}
del(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return false;
let j = 0;
for(const i of sub) {
if ( this.array[i][0] === key ) {
sub.splice(j, 1);
this._moveLast(i);
return true;
}
j++;
}
return false;
}
_moveLast(i) {
const lastI = this.array.length-1;
const last = this.array[lastI];
const sub = this.table[ this.hashMod(this.hashFn(last[0]), this.size) ];
sub[ sub.indexOf(lastI) ] = i;
this.array[i] = last;
this.array.length--;
}
}
Вот что я сделал. Только фун-я хеша не эфективная. Также возможны ошибки
Lupusregina[beta]
const hashFn = (key) => {
let hash = 1;
let tmp = 0;
for(let i = 0; i < key.length; i++) {
tmp ^= key[i].charCodeAt();
tmp <<= 1;
hash ^= tmp;
}
return hash;
};
class HashMap {
constructor(hashFn, arrSize = [8, 16, 20]) {
this.hashFn = hashFn;
this.arrSize = arrSize.slice();
this.size = 0;
this.table = [];
this.length = 0;
this.array = [];
this._resize();
}
_resize() {
this.size = this.arrSize.shift();
if ( !this.size )
throw new Error("Max size");
this.table = Array(1 << this.size).fill(null);
for(let i = 0; i < this.array.length; i++)
this._add(this.array[i][0], i);
}
_add(key, i) {
const index = this.hashMod(this.hashFn(key), this.size);
if ( !this.table[index] ) {
this.table[index] = [i];
return;
}
this.table[index].push(i);
}
hashMod(hash, numBits) {
return hash & ~(1 << numBits);
}
has(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return false;
for(const i of sub)
if ( this.array[i][0] === key )
return true;
return false;
}
get(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return null;
for(const i of sub)
if ( this.array[i][0] === key )
return this.array[i][1];
return null;
}
set(key, value) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = (this.table[index] = this.table[index] || []);
for(const i of sub)
if ( this.array[i][0] === key ) {
this.array[i][1] = value;
return;
}
sub.push(this.array.length);
this.array.push([key, value]);
if ( this.array.length >= (1 << this.size) )
this._resize();
}
del(key) {
key = `${key}`;
const index = this.hashMod(this.hashFn(key), this.size);
const sub = this.table[index];
if ( !sub )
return false;
let j = 0;
for(const i of sub) {
if ( this.array[i][0] === key ) {
sub.splice(j, 1);
this._moveLast(i);
return true;
}
j++;
}
return false;
}
_moveLast(i) {
const lastI = this.array.length-1;
const last = this.array[lastI];
const sub = this.table[ this.hashMod(this.hashFn(last[0]), this.size) ];
sub[ sub.indexOf(lastI) ] = i;
this.array[i] = last;
this.array.length--;
}
}
Вот что я сделал. Только фун-я хеша не эфективная. Также возможны ошибки
а, тут в хашьмод ошибка, надо return hash & ((1 << numBits) - 1);
Lupusregina[beta]
const hashFn = (key) => {
let hash = 1;
let tmp = 0;
for(let i = 0; i < key.length; i++) {
tmp ^= key[i].charCodeAt();
hash ^= tmp;
tmp <<= 3;
}
return hash;
};
вот получше функция хеша, 50-60% заполнения
Syntax Highlight Bot
Lupusregina[beta]
лол. Это даже работает, всего в 4-10(для записи) и в 3-5(для чтения) раз медлннее нативного мап(если я не допустил ошибки во время теста канешн)
Lupusregina[beta]
Lupusregina[beta]
😕
Oleg
кто-то пользовался jexl? как создать функцию с помощью addTransform так, чтоб в неё можно было передать объект, а не только строку?
Oleg
как мне в строке ({"a":"qdqwe", b: "dddd"}) найти именно части с :"xxxx"? с помощью регулярок, да?
Oleg
мне нужно будет потом заменить эти кавычки.
Dmitry
Веб-сервис помощи парикмахерам в закупке рабочего оборудования
Dmitry
Веб-каталог какой-нибудь)
Igor
проектирование и разработка программного обеспечения для придумай сам с использованием веб-фреймворка django
Igor
ну тогда Разработка веб-сервиса для парикмахеров с использованием React
Igor
у тебя тз для чата нечеткое)
Gabriel
Ребят, есть проблема:
В браузере при логине я получаю одноразовый пароль на почту, но когда делаю логин скриптом ответ от сервера практически такой же, но код не приходит
Gabriel
В чем может быть проблема? Я даже не знаю как это гуглить
Gabriel
Привет.
Он и так не отличим от браузерного, те же заголовки
Gabriel
Поэтому я и не понимаю в чем дело.
Gabriel
при первичном входе отправляется одноразовый код на почту. В браузере респонс такой: {"success":false,"requires_twofactor":false,"message":"","emailauth_needed":true,"emaildomain":"gmail.com","emailsteamid":"76561198978786005"}
и код приходит на почту.
В ноде ответ такой:
{ success: false,
requires_twofactor: false,
message: '',
emailauth_needed: true,
emaildomain: '',
emailsteamid: '76561198978786005' }
Gabriel
Вот почему ключ emaildomain пустой я не понимаю
Gabriel
Порядок тот же, запросов наотсылал больше 5, сайт https://store.steampowered.com
Gabriel
Разница в том, что в браузере откуда невозьмись в request появляются cookie от стима, откуда они берутся я понять не могу
Gabriel
Именно
Gabriel
После того как зашифровал посылаю на роут dologin
Gabriel
Непонятна проблема с отправкой кодов при условии, что куки тащатся в jar, запросы сформированы верно и шифрование тоже
Gabriel
Тогда не подскажешь где хранятся кукисы?
Gabriel
В этом твоем puppeteer)
Gabriel
1. С шифрованием маялся 2 дня, когда неверно зашифровано, сервер шлет со специфическим сообщением
2. Заголовки сравнивал, не добавлял accept: gzip... потому что так не работает
Gabriel
Спасибо
Denisio
от клавиатуры зависит
Denisio
сколько нажатий одновременно она может обрабатывать
Denisio
например можно нажать одновременно a s и они будут генерировать поток as
Denisio
а вот 5 клаивш нажмешь однвременно - и уже всё
Denisio
причем зависит какие именно 5 клавиш
Denisio
ну флаги ставить
Denisio
это только с shift,ctrl,alt
Denisio
с ними такое прокатит
Rustem
подскажите как выдернуть data из https://jsonp.afeld.me/?callback=myCallback&url=http://www.cbr.ru/scripts/XML_daily.asp?date_req=02/03/2002 . в настоящий момент получают response ч/з axios и вся инфа идет строкой
Denisio
может проще дернуть xml и разобрать, чем использовать сторонний сервис
Rustem
например как??? тут сплитовать не вариант, хз чет голову не приходит ни чего
stay
Rustem
ну да там XML, который потом я буду преобразовывать в JSON
Rustem
я не нашел у ЦБ РФ JSON формата( только xml
Denisio
У них ещё и cors нету
Rustem
https://yarnpkg.com/ru/package/xml2js мне к этому хотелось подвести, вот только для этого пакета нужно переменную подготовить с чистым XML
Rustem
спасибо, хорошу ссылку прислал, но там JSON не позволяет исторические разрезы делать и металлов я там не нашел(, но в любом случае спасибо
Rustem
шутишь) я картинки в дизайне на красивые графики меняю)
Sergey
Как регулярной зцепить в строке <select:lorem 342 ipsum> всё, что между <select: и >?
Sergey
Такая вот /<select:.*>/gm цепляет все остальные > в строке
Sergey
Это псевдокод для парсера
Sergey
Надо регулярка, которая выцедил всё между <select: и >, не зацепая остальные >
Sergey
Тогда оно мне матчит всё, включая select: и >
Sergey
А мне именно между select: и > содержимое надо
Anonymous
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=0000000000000000&ev=PageView&noscript=1"
/></noscript>
Подскажи плиз, как вынести 0000000000000000 :)
Anonymous
Агась
Syntax Highlight Bot
Anonymous
Денис
Как сделать второй вариант переключения?
Денис
Денис
У меня сейчас все мертво, переключение идет, но анимаций никаких, но как его сделать?
Demetrio
Sergey
Есть ли аналог ChildNode.replaceWith() изменяющего не тукущую ноду, а создающую новый nodelist с изменённой?
Name
Есть необходимость подписывать документы в браузере с ЭЦП.
Требуется поддержка всех ОС и ИЕ, Хром, Фокс, Сафари.
Посоветуете решения?
Sergey
Взял неживой NodeList buffer = outputContainer.querySelectorAll("input,select,textarea");
Хочу заменить ноды на другие шаблоны (с живым NodeList это прокатывает) http://prntscr.com/ojrxfz
В результате старый NodeList не меняется, а в новый результат node.replaceWith() летит undefined http://prntscr.com/ojrxy2
Что ему не нравится?!