Skip to content

Instantly share code, notes, and snippets.

View lysenko-sergey-developer's full-sized avatar
💯

Sergey Lysenko lysenko-sergey-developer

💯
View GitHub Profile
@lysenko-sergey-developer
lysenko-sergey-developer / cycleLinkedList.js
Last active June 26, 2019 21:40
cycle double linked list on js
cycleLinkedList = (values) => (
values
.map((value) => ({
value,
}))
.map((value, index, cLL) => {
let prev, next;
if(index === 0) {
prev = cLL[cLL.length - 1]
next = cLL[index + 1]
@lysenko-sergey-developer
lysenko-sergey-developer / directSearch.js
Created June 24, 2019 10:50
direct search substring
function directSearch(string, subString) {
for(let i = 0; i + subString.length - 1 < string.length; i++) {
let isSubstring = false
for(let j = 0; j < subString.length; j++) {
isSubstring = string[i+j] === subString[j]
if (!isSubstring) break
}
if(isSubstring) return true
}
function callPromisesSync(arrayOfProimiseFunc) {
return arrayOfProimiseFunc.reduce((prevPromise, promise) => {
return prevPromise.then(promise)
}, Promise.resolve())
}
// test
const arrayOfProimiseFunc = [
() => new Promise((resolve, reject) => setTimeout(() => resolve(console.log('first')), 3000)),
@lysenko-sergey-developer
lysenko-sergey-developer / copyObjectDeep.js
Last active June 18, 2019 15:59
copy object deep, work only with es5 structures
// my variant
function copyObjectDeep(object) {
function copyArray(array) {
return array.map((item) => {
if ((item instanceof Object) && !(item instanceof Array)) {
return createNewObject(item)
} else if (item instanceof Array) {
return copyArray(item)
}
class EventEmitter {
handlers = []
on(eventName, handler) {
this.handlers[eventName] = handler
}
emit(eventName, ...args) {
console.log('s')
this.handlers[eventName](...args)
function montyHall(reRandom) {
const prize = Math.trunc(Math.random() * 3 + 1)
const variants = Array.from({ length: 3 }, (v, k) => ({ index: k + 1, value: false }))
const prizeVariant = variants.find(variant => variant.index === prize)
prizeVariant.value = true
const choice = Math.trunc(Math.random() * 3 + 1)
const removedElem = variants.find(variant => variant.index !== choice && !variant.value)
const newVariants = variants.filter(variant => removedElem.index !== variant.index)
const generateTypesFromObject = ({ fullTypeSchema, data }) => (
Object.keys(data).reduce((ac, key, index, { length }) => (
ac += index === length - 1 ? `$${key}: ${fullTypeSchema[key]}` : `$${key}: ${fullTypeSchema[key]}, `
), '')
)
const generateVariablesFroObject = ({ data }) => (
Object.keys(data).reduce((ac, key, index, { length }) => (
ac += index === length - 1 ? `${key}: $${key}}` : `${key}: $${key}}, `
), '')
_getTotal = () => {
if (this.props.filters) {
return this.props.filters.reduce((a, b) => {
if (b.count) a += b.count;
return a;
}, 0);
}
return 0;
}
@lysenko-sergey-developer
lysenko-sergey-developer / remove.py
Created January 3, 2019 00:25
remove files with "@" symbols in directory and subdirs
# remove files with "@" symbol in name, also remove files in sub folders
# date: 2019-01-03, author: https://github.com/lysenko-sergey-developer
import os
import re
def remover(folder_path):
target_files = os.listdir(path=folder_path)
for file in target_files:
result = re.findall(r'@', file)
cur_path = folder_path + "/" + file
@lysenko-sergey-developer
lysenko-sergey-developer / decoder.py
Created December 25, 2018 21:40
decoder filenames from cp1251 to ut8
# decoder filenames from cp1251 to ut8
# date: 2018-12-25, author: https://github.com/lysenko-sergey-developer
import os
files = os.listdir(path=".")
for file in files:
valid_utf8 = True
try:
result = file.encode("cp1251").decode("utf8")