Skip to content

Instantly share code, notes, and snippets.

View gkucmierz's full-sized avatar
💻

Grzegorz Kućmierz gkucmierz

💻
View GitHub Profile
@gkucmierz
gkucmierz / escape_regexp.js
Created October 29, 2016 04:48
Escape string for RegExp
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
}
@gkucmierz
gkucmierz / group_by.js
Last active November 21, 2016 10:13
Group array elements
function groupBy(arr, fn) {
fn = fn || ((o) => o);
let g = [];
let v = [];
for (let i = 0; i < arr.length; ++i) {
let val = fn(arr[i]);
let idx = g.indexOf(val);
if (idx === -1) {
g.push(val);
@gkucmierz
gkucmierz / flatten_array.js
Created November 1, 2016 12:11
Flatten array from desired level
// Flatten array from desired level
let flattenArray = function(arr, lvl = 0) {
if (!(arr instanceof Array)) return lvl === 0 ? arr : [arr];
if (lvl > 0) {
return arr.map((el) => flattenArray(el, lvl-1));
} else {
return arr.reduce((arr, el) => {
return arr.concat(flattenArray(el, lvl-1));
}, []);
@gkucmierz
gkucmierz / new_generator.js
Last active November 25, 2016 00:36
Implementation of new generator creation from string
let Generator = (function*(){}).constructor;
// function Generator(...a) {
// let [args, body] = a;
// if (a.length === 0) [args, body] = [[], ''];
// if (a.length === 1) [args, body] = [[], a[0]];
// return new Function(`return function*(${args.join(',')}){${body}};`)();
// }
@gkucmierz
gkucmierz / pascals_triangle.js
Created December 9, 2016 00:48
Return pascal`s triangle to desired depth
function pascalsTriange(depth) {
let last = [1];
let res = [];
for (let i = 0; i < depth; i++) {
let n = [];
for (let j = 0; j < i + 1; j++) {
n[j] = (last[j-1] || 0) + (last[j] || 0);
}
res.push(n);
last = n;
const flatten = arr => arr.reduce((res, el) => [...res, ...(Array.isArray(el) && flatten(el) || [el])], [])
// get skin names from this address
// http://www.agarioguide.com/skins/
$$('.wp-caption-text span').map(el=>el.innerHTML).join('|');
// declare skin names:
let skins = '2ch.hk|4chan|8ch|9gag|Argentina|France|Austria|ayy lmao|Bait|Bangladesh|Belgium|Bosnia|Botswana|Brazil|Bulgaria|Byzantium|Cambodia|Canada|Chile|China|cia|Confederate|Croatia|Denmark|Doge|ea|Earth|Estonia|European Union|German Empire|Germany|Greece|Hitler|Hong Kong|Hungary|Imperial Japan|India|Indiana|Indonesia|Iran|Iraq|Ireland|Facepunch|Italy|Jamaica|Japan|KC|Latvia|Lithuania|Luxembourg|Maldivas|Mars|Matriarchy|Mexico|Moon|NASA|Agario|Netherlands|Nigeria|Receita Federal|North Korea|Norway|Origin|Pakistan|Patriarchy|Peru|Pewdiepie|Piccolo|Facebook|Pokerface|Poland|Portugal|Prodota|Prussia|Qing Dynasty|Quebec|IRS|Reddit|Romania|Russia|Sanik|Satanist|Scotland|Sealand|Sir|French Kingdom|Steam|Feminism|Finland|Stussy|Sweden|Switzerland|Taiwan|Texas|Thailand|Tsarist Russia|Tumblr|Australia|Austria|Turkey|Ukraine|United Kingdom|USA|USSR|Vinesauce|
@gkucmierz
gkucmierz / matrix_rorate_transpose_flip.js
Created December 12, 2016 11:49
Operations on matrices: rotate CW/CCW, flip Horizontal/Vertical, transpose
function transpose(arr) {
let [h, w] = [arr.length, arr[0].length];
let res = [];
for (let x = 0; x < w; ++x) {
res[x] = [];
}
for (let y = 0; y < h; ++y) {
for (let x = 0; x < w; ++x) {
res[x][y] = arr[y][x];
}
@gkucmierz
gkucmierz / bitmarket_depth_svg.js
Created January 3, 2017 19:15
Get long and short positions value from bitmarket
// https://www.bitmarket.pl/graphs/BTCPLN/depth.svg
alert([].map.call(document.querySelectorAll('.legend'),n=>n.innerHTML).filter(t=>t[0]=='Σ').join`\n`)
var deepEach = function callee(obj, fn, chain) {
chain = chain && chain + '.' || '';
// chain += '.';
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
if (typeof obj[i] === 'object') {
callee(obj[i], fn, chain + i);
} else {
fn(obj[i], i, chain + i);
}