DEV Community

Dominic Myers
Dominic Myers

Posted on • Originally published at drmsite.blogspot.com on

Free course: The 7-Day JavaScript Challenge

Scrimba are running a week-long JavaScript challenge, so I jumped in.

Day 1

Initial attempt:

function addBorder(array) {const l = Array.from({length: array[0].length + 2 }, () => '\*').join(''); array = array.map((x) => x.padStart(x.length + 1, '\*').padEnd(x.length + 2, '\*')) array.push(l) array.unshift(l)return array;}

After I'd thought about it:

const addBorder = a => ['\*'.repeat(a[0].length), ...a, '\*'.repeat(a[0].length)].map(e => `\*${e}\*`)

Day 2

const addTwoDigits = n => (''+n).split('').reduce((a,c) => ~~a +~~ c)

Day 3

const firstDuplicate = ns => {const s = new Set();for(n of ns){if(s.size === s.add(n).size) return n }return -1}

Day 4

const sumAllPrimes = n => Array.from({length: n-1}, (\_, k) => k+2).reduce((a, c) => a += !'1'.repeat(c).match(/^1?$|^(11+?)\1+$/) ? c : 0)

Day 5

const evenDigitsOnly = n => (''+n).split('').every(n => !(~~n % 2))

Day 6

const makeArrayConsecutive = n => Math.max(...n) - Math.min(...n) - [...new Set(n)].sort().reduce((a, c) => c > Math.min(...n) && c < Math.max(...n) ? a + 1 : a, 0) - 1

Alternatively:

const makeArrayConsecutive = n => ([...new Set(n)].sort()[[...new Set(n)].length - 1] - [...new Set(n)].sort()[0] + 1) - [...new Set(n)].length

Day 7

const properNounCorrection = s => s === s + '' && s.length ? String.fromCharCode(...[...s].map((\_, i) => !i ? s.charCodeAt(i) - (s.charCodeAt(i) >= 97 && s.charCodeAt(i) <= 122 ? 32 : 0) : s.charCodeAt(i) + (s.charCodeAt(i) >= 65 && s.charCodeAt(i) <= 90 ? 32 : 0))) : ''

Think that's all of them now.

Top comments (0)