var http = require('http');
var maxSimRequests = 10; // сколько запросов активно одновременно
var urls = []; // массив ссылок которые надо проверить
var urlsInWork = urls.splice(0, maxSimRequests);
if (urlsInWork.length === 0 || maxSimRequests < 1) return;
urlsInWork.forEach(requestFn);
var voidInterval = setInterval(() => {
// впринципе можно и без интервала обойтись, не помню зачем его делал
}, 10);
function requestFn(url) {
http.get(url, (response) => {
let { statusCode } = response;
if (statusCode === 200) {
// что то делаем с response
} else if (statusCode === 404) {
urlDone(url);
} else {
setTimeout(() => {
requestFn(url);
}, 1000);
};
}).on('error', (err) => {
// какойто хендл ошибки
urlDone(url);
});
};
function urlDone(url) {
urlsInWork = urlsInWork.filter(u => u !== url);
if (urls.length > 0) {
let nextUrl = urls.pop();
urlsInWork.push(nextUrl);
requestFn(nextUrl);
} else if (urlsInWork.length === 0) {
clearInterval(voidInterval);
};
};
var users = [
{
id: 1,
items: [
{ id: 124, price: 1 },{ id: 31, price: 1 },{ id: 32, price: 1 },
],
},
{
id: 2,
items: [
{ id: 345, price: 1 },{ id: 2, price: 1 },{ id: 166, price: 1 },
],
},
];
function usersFindOne(itemsArr) {
return users.find(u => {
return u.items.every(item => itemsArr.includes(item.id));
});
};
console.log(usersFindOne([124, 32, 31]));
console.log(usersFindOne([345, 111, 166, 2]));
var largeImg = cv.imread('./largeImg.jpg'); // загружаем какое-то большое изображение
// либо можно сгенерировать new cv.Mat(new Array(15360).fill( new Array(15360).fill([0,0,0]) ), cv.CV_8UC3);
var blockSideSize = 2048; // размер стороны в пикселях, он же и оффсет, т.е. блоки у нас 2048х2048
for (let x = 0; x < 3; x++) {
for (let y = 0; y < 3; y++) {
// тупо попиксельно заменяем каждый цвет
let block = cv.imread(`./blocks/block_${x}-${y}.jpg`);
for (let y1 = 0; y1 < blockSideSize; y1++) {
for (let x1 = 0; x1 < blockSideSize; x1++) {
largeImg.set((y * blockSideSize + y1), (x * blockSideSize + x1), block.at(y1, x1));
};
};
};
};
cv.imwrite('./ResultLargeImage.jpg', largeImg);
apples = 5;
basket = 0;
basket = apples; // тупо присваем в корзину яблоки
basket += apples; // прибавляем яблок к тем, что уже есть корзине
basket = basket + apples; // тоже самое что и выше
const blacklist = Files.readFileSync('./blacklist.txt', 'utf8').split(/\r?\n/);
const users = Files.readFileSync('./users.txt', 'utf8').split(/\r?\n/).filter((user) => {
var idx = blacklist.indexOf(user);
if (idx === -1) {
return true;
} else {
blacklist.splice(idx, 1); // тут я не уверен в профите уменьшения блеклиста, потому что это надо будет перестраивать индексы, так что можно просто сделать return blacklist.indexOf(user) === -1;
return false;
};
});
function fearNotLetter(str) {
var missingLetter;
str.split('').map(v => v.charCodeAt(0)).forEach((v,i,arr) => {
if (!missingLetter && arr[++i]) {
if ((++v) !== arr[i]) {
missingLetter = String.fromCharCode(v);
};
};
});
return missingLetter;
}
console.log(fearNotLetter("bcdf"));
function fearNotLetter(str) {
var missingLetter;
Array(str.length).fill(str.charCodeAt(0)).map((v,i) => v + i ).forEach(v => {
if (!missingLetter && !str.includes(String.fromCharCode(v))) {
missingLetter = String.fromCharCode(v);
};
});
return missingLetter;
}
console.log(fearNotLetter("stvwx"));