Skip to content

Instantly share code, notes, and snippets.

View devNoiseConsulting's full-sized avatar

Michael Flynn devNoiseConsulting

View GitHub Profile
@devNoiseConsulting
devNoiseConsulting / dp20171128.js
Created November 28, 2017 13:55
Reliably Terrible Sort - PhillyDev Slack #daily_programmer - 20171128
let reliablyTerribleSort = function(unSortedArray) {
let sign = 1;
let flipSignSort = function(a, b) {
sign *= -1;
return a - sign * b;
};
return unSortedArray.slice().sort(flipSignSort);
};
let test = [1, 2, 3, 4];
@devNoiseConsulting
devNoiseConsulting / dp20171127.js
Created November 27, 2017 18:03
Anagram Maker - PhillyDev Slack #daily_programmer - 20171127
// The permutations function is based off the answer found at
// https://stackoverflow.com/a/17917159
// Converted to a more ES6 solution.
// Note: permutations will return duplicates, filtering was removed as it seem
// to increase the run time for larger strings.
let permutations = function(string, start = '') {
if (string.length == 1) {
return [string];
} else {
return string.split('').reduce((acc, l, i, arr) => {
@devNoiseConsulting
devNoiseConsulting / dp20171115.js
Last active November 27, 2017 18:03
Goodstein's Theorem - PhillyDev Slack #daily_programmer - 20171115
let baseNotation_raw = function(number, base) {
return new Array(Math.ceil(Math.log(number) / Math.log(base)) + 1)
.fill(0)
.map((v, i) => Math.pow(base, i))
.reverse()
.reduce((acc, v, i) => {
acc[i] = Math.floor(number / v);
number = number % v;
return acc;
}, []);
@devNoiseConsulting
devNoiseConsulting / dp20171114.js
Created November 14, 2017 19:52
Hereditary Base Notation - PhillyDev Slack #daily_programmer - 20171114
let baseNotation_raw = function(number, base) {
return new Array(Math.ceil(Math.log(number) / Math.log(base)) + 1)
.fill(0)
.map((v, i) => Math.pow(base, i))
.reverse()
.reduce((acc, v, i) => {
acc[i] = Math.floor(number / v);
number = number % v;
return acc;
}, []);
@devNoiseConsulting
devNoiseConsulting / dp20171113.js
Last active November 14, 2017 19:55
Base Notation - PhillyDev Slack #daily_programmer - 20171113
let baseNotation_raw = function(number, base) {
return new Array(Math.ceil(Math.log(number) / Math.log(base)) + 1)
.fill(0)
.map((v, i) => Math.pow(base, i))
.reverse()
.reduce((acc, v, i) => {
acc[i] = Math.floor(number / v);
number = number % v;
return acc;
}, []);
@devNoiseConsulting
devNoiseConsulting / dp20171110.js
Last active November 11, 2017 15:50
Reverse Words In Place - PhillyDev Slack #daily_programmer - 20171110
let reverseWordsInPlace_1 = function(phrase) {
return phrase
.split(/(\W+)/)
.map(
v =>
v.match(/\w/)
? v
.split('')
.reverse()
.join('')
@devNoiseConsulting
devNoiseConsulting / dp20171108.js
Created November 8, 2017 15:25
iOS Sum Bug - PhillyDev Slack #daily_programmer - 20171108
'use strict';
// Note: The .sort() is doing a string sort and not a numeric sort. If a larger
// number is present and the array is not properly sorted, the array is not the
// match we want.
let iOSSum_1 = function(arr) {
let targetArray = [1, 2, 3];
if (
@devNoiseConsulting
devNoiseConsulting / dp20171106.js
Created November 6, 2017 14:56
Transpose Text From Standard Input II - PhillyDev Slack #daily_programmer - 20171106
// Based off of a previous solution
// https://gist.github.com/devNoiseConsulting/81a5d1236d7219f1bcd7dc2161081434
const readline = require('readline');
let transposeArray = function(array) {
return array[0].map((col, i) => array.map(row => row[i]));
};
function transposeText(textArray) {
@devNoiseConsulting
devNoiseConsulting / dp20171103.js
Created November 3, 2017 13:54
Return Overlap II - PhillyDev Slack #daily_programmer - 20171103
'use strict';
let returnArtistOverlap = function(artists1, artists2) {
let size = artists1.length - 1;
return artists1.map(v => artists2.indexOf(v)).reduce((acc, v, i) => {
if (v !== -1) {
acc.set(artists1[i], size - v + (size - i));
}
return acc;
}, new Map());
@devNoiseConsulting
devNoiseConsulting / dp20171102.js
Created November 2, 2017 13:35
Return Overlap - PhillyDev Slack #daily_programmer - 20171102
'use strict';
let returnOverlap = function(artists1, artists2) {
return artists1.map(v => artists2.indexOf(v)).reduce((acc, v, i) => {
if (v !== -1) {
acc.set(artists1[i], v + i);
}
return acc;
}, new Map());
};