Skip to content

Instantly share code, notes, and snippets.

View karataev's full-sized avatar
:octocat:
¯\_(ツ)_/¯

Eugene Karataev karataev

:octocat:
¯\_(ツ)_/¯
  • Russia, Novosibirsk
View GitHub Profile
@karataev
karataev / promisePatterns.js
Created September 25, 2019 16:16
Promise patterns
const _ = require('lodash');
function series(arr, fn) {
let result = [];
return _.reduce(arr, (acc, item) => {
acc = acc
.then(() => fn(item))
.then(res => result.push(res));
return acc;
@karataev
karataev / helpers.js
Created November 20, 2019 05:18
Find the longest words from cubes with letters
const allWords = require('russian-words');
function getCubesLettersHeap(cubes) {
return cubes.reduce((acc, cube) => {
const letters = cube.split('');
letters.forEach(letter => {
acc[letter] = acc[letter]? acc[letter] + 1 : 1;
});
return acc;
}, {});
@karataev
karataev / ip.js
Created November 17, 2020 07:12
A prototype to find possible valid IP addresses from a string
function getValidIpAddresses(str) {
let result = [];
for (let i = 1; i < str.length; i++) {
let first = str.slice(0, i);
if (first > 255) continue;
let withoutFirst = str.slice(i);
for (let j = 1; j < withoutFirst.length; j++) {
let second = withoutFirst.slice(0, j);
if (second > 255) continue;
let withoutFirstSecond = withoutFirst.slice(j);
@karataev
karataev / walkTree.js
Created November 17, 2020 08:46
Walk a DOM tree and log a tag or text content
function padding(depth) {
return new Array(depth).fill(' ').join('');
}
function walk(node, depth) {
if (node.nodeType === 1) {
console.log(padding(depth) + node.tagName);
let children = Array.from(node.childNodes);
children.forEach(item => walk(item, depth + 1));
} else if (node.nodeType === 3) {