Skip to content

Commit 19872e5

Browse files
committed
✨ Add episode 25
1 parent 1e6a220 commit 19872e5

7 files changed

+1186
-0
lines changed

.eslintrc.js

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
module.exports = {
2+
'env': {
3+
'commonjs': true,
4+
'es6': true,
5+
'node': true
6+
},
7+
'extends': 'eslint:recommended',
8+
'globals': {
9+
'Atomics': 'readonly',
10+
'SharedArrayBuffer': 'readonly'
11+
},
12+
'parserOptions': {
13+
'ecmaVersion': 2018
14+
},
15+
'rules': {
16+
'indent': [
17+
'error',
18+
2
19+
],
20+
'linebreak-style': [
21+
'error',
22+
'unix'
23+
],
24+
'quotes': [
25+
'error',
26+
'single'
27+
],
28+
'semi': [
29+
'error',
30+
'always'
31+
],
32+
'no-console': 0
33+
}
34+
};

episode_025/README.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Episode 25
2+
3+
## 7 kyu
4+
5+
* https://www.codewars.com/kata/reverse-words/train/javascript
6+
7+
## 6 kyu
8+
9+
* https://www.codewars.com/kata/detect-pangram/train/javascript
10+
11+
## 5 kyu
12+
13+
* https://www.codewars.com/kata/hello-w-dot-dot-dot-wait-what/train/javascript

episode_025/detect-pangram.js

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
function isPangram(string) {
2+
// create an object with every lower case letter as a property
3+
const allLetters = {};
4+
for (let i = 97; i <= 122; i++) {
5+
allLetters[String.fromCharCode(i)] = true;
6+
}
7+
8+
// iterate over the string
9+
for (let i = 0; i < string.length; i++) {
10+
const character = string[i].toLowerCase();
11+
// delete / remove the lowercase letter from the above object
12+
delete allLetters[character];
13+
}
14+
15+
// if object has no properties return true
16+
return Object.keys(allLetters).length === 0;
17+
}
18+
19+
function isPangram(string) {
20+
// create a Set from only letters a-z in the string
21+
const allLetters = new Set(string.toLowerCase().match(/[a-z]/g));
22+
// if length of Set is 26 return true!
23+
return allLetters.size === 26;
24+
}
25+
26+
// Daniel!
27+
function isPangram(string) {
28+
let newstr = string.toLowerCase().match(/[a-z]/g, "")
29+
let set1 = new Set(newstr);
30+
return set1.size === 26;
31+
}
32+
33+
34+
const input1 = 'The quick brown fox jumps over the lazy dog.';
35+
console.log(isPangram(input1), true);
36+
const input2 = 'This is not a pangram.';
37+
console.log(isPangram(input2), false);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function waitWhat() {
2+
const [ ,H ] = [].shift.name.toUpperCase();
3+
const [ e ] = [].every.name;
4+
const [ l ] = [].lastIndexOf.name;
5+
const [ o ] = Array.of.name;
6+
7+
const [ , a ] = false.toString();
8+
const zero = [].length;
9+
const space = a.charCodeAt(zero) - a.toUpperCase().charCodeAt(zero);
10+
11+
const [ ,,,,W ] = [].copyWithin.name;
12+
const [ r ] = [].reverse.name;
13+
const [ ,,,d ] = [].find.name;
14+
15+
const exclame = space + [true].length;
16+
17+
return H + e + l + l + o
18+
+ String.fromCharCode(space)
19+
+ W + o + r + l + d
20+
+ String.fromCharCode(exclame);
21+
}
22+
23+
console.log(waitWhat());
24+

episode_025/reverse-words.js

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
function reverseWords(str) {
2+
// a place to store the reversed words
3+
let reversedStr = '';
4+
// a place to store an individually reversed word
5+
let reversedWord = '';
6+
// iterate over the string from index 0 to the end
7+
for (let i = 0; i < str.length; i++) {
8+
const character = str[i];
9+
// if the current character is not a space
10+
if (character !== ' ') {
11+
// prepend letter to individually reversed word
12+
reversedWord = character + reversedWord;
13+
} else {
14+
// append individually reversed word to the whole reversed words
15+
reversedStr += reversedWord + ' ';
16+
reversedWord = '';
17+
// append the space character
18+
}
19+
}
20+
// return the reversed words
21+
return reversedStr + reversedWord;
22+
}
23+
24+
function reverseWords(str) {
25+
let reversedStr = '';
26+
let reversedWord = '';
27+
for (let i = 0; i < str.length; i++) {
28+
const character = str[i];
29+
if (character !== ' ') {
30+
reversedWord = character + reversedWord;
31+
} else {
32+
reversedStr += reversedWord + ' ';
33+
reversedWord = '';
34+
}
35+
}
36+
return reversedStr + reversedWord;
37+
}
38+
39+
function reverseWord(word) {
40+
return word.split('').reverse().join('');
41+
}
42+
43+
function reverseWord(word) {
44+
return [...word].reverse().join('');
45+
}
46+
47+
function reverseWords(str) {
48+
return str.split(' ').map(reverseWord).join(' ');
49+
}
50+
51+
function reverseWords(str) {
52+
return str.split(' ').map(word => [...word].reverse().join('')).join(' ');
53+
}
54+
55+
function reverseWords(str) {
56+
let reversedStr = '';
57+
let reversedWord = '';
58+
Array.prototype.forEach.call(str, (character) => {
59+
if (character !== ' ') {
60+
reversedWord = character + reversedWord;
61+
} else {
62+
reversedStr += reversedWord + ' ';
63+
reversedWord = '';
64+
}
65+
});
66+
return reversedStr + reversedWord;
67+
}
68+
69+
function reverseWords(str) {
70+
let reversedWord = '';
71+
return Array.prototype.reduce.call(str, (reversedStr, character) => {
72+
if (character !== ' ') {
73+
reversedWord = character + reversedWord;
74+
} else {
75+
reversedStr += reversedWord + ' ';
76+
reversedWord = '';
77+
}
78+
return reversedStr;
79+
}, '') + reversedWord;
80+
}
81+
82+
function reverseWords(str, reversedWord = '') {
83+
return Array.prototype.reduce.call(str, (reversedStr, character) => (character !== ' ' ? reversedWord = character + reversedWord : (reversedStr += reversedWord + ' ', reversedWord = ''), reversedStr), '') + reversedWord;
84+
}
85+
86+
function reverseWords(str, reversedWord = '') {
87+
return [].reduce.call(str, (reversedStr, character) => (character !== ' ' ? reversedWord = character + reversedWord : (reversedStr += reversedWord + ' ', reversedWord = ''), reversedStr), '') + reversedWord;
88+
}
89+
90+
// ALCA!!!
91+
const reverseWord = s => s.split('').reduce((p, n) => (n === ' ' ? (p[0] += p[1] + n, p[1] = '') : p[1] = n + p[1], p), [ '', '' ]).join('');
92+
93+
console.log(reverseWords('The quick brown fox jumps over the lazy dog.') == 'ehT kciuq nworb xof spmuj revo eht yzal .god');
94+
console.log(reverseWords('apple') == 'elppa');
95+
console.log(reverseWords('a b c d') == 'a b c d');
96+
console.log(reverseWords('double spaced words') == 'elbuod decaps sdrow');

0 commit comments

Comments
 (0)