Skip to content

Commit bcc5336

Browse files
author
Joshua Baert
committed
Commit often they say
1 parent b0d08e9 commit bcc5336

5 files changed

Lines changed: 79 additions & 169 deletions

File tree

KataParser.js

Lines changed: 13 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -58,47 +58,6 @@ let tags = [
5858
// Paste the Test Suite here
5959
let tests = [
6060
`
61-
Test.describe("generateRange(2, 10, 2)", function() {
62-
Test.assertSimilar(generateRange(2, 10, 2), [2,4,6,8,10]);
63-
});
64-
65-
Test.describe("generateRange(1, 10, 3)", function() {
66-
Test.assertSimilar(generateRange(1, 10, 3), [1,4,7,10]);
67-
});
68-
69-
Test.describe("generateRange(1, 10, 1)", function() {
70-
Test.assertSimilar(generateRange(1, 10, 1), [1,2,3,4,5,6,7,8,9,10]);
71-
});
72-
73-
Test.describe("generateRange(1, 10, 4)", function() {
74-
Test.assertSimilar(generateRange(1, 10, 4), [1,5,9]);
75-
});
76-
77-
Test.describe("generateRange(1, 10, 5)", function() {
78-
Test.assertSimilar(generateRange(1, 10, 5), [1,6]);
79-
});
80-
81-
Test.describe("generateRange for random", function() {
82-
var generateRandom = function(min, max){
83-
return Math.floor(Math.random() * max) + min;
84-
};
85-
86-
var range = function(min, max, step){
87-
var z = [];
88-
for(var i = min; i <= max; i += step){
89-
z.push(i);
90-
}
91-
return z;
92-
};
93-
94-
for(var i = 0; i < 10; i++){
95-
var randomMax = generateRandom(30, 100),
96-
randomMin = generateRandom(1, 20),
97-
randomStep = generateRandom(1, 10);
98-
99-
Test.assertSimilar(generateRange(randomMin, randomMax, randomStep), range(randomMin, randomMax, randomStep));
100-
}
101-
});
10261
10362
`,
10463

@@ -113,31 +72,31 @@ let examples = [
11372

11473
// Introduction to the Kata Here
11574
let description =
116-
`Modify the kebabize function so that it converts a camel case string into a kebab case.
117-
118-
kebabize('camelsHaveThreeHumps') // camels-have-three-humps
119-
kebabize('camelsHave3Humps') // camels-have-humps
120-
Notes:
121-
122-
the returned string should only contain lowercase letters
75+
`
76+
12377
`;
12478
// Paste the starting script here
125-
let startScript = `function generateRange(min, max, step){}`;
79+
let startScript = ``;
12680

12781

12882
// Paste your winning script here
12983
let winScript = `
130-
function kebabize(str) {
131-
return str.replace(/[^a-z]/ig, '').
132-
replace(/^[A-Z]/, c => c.toLowerCase()).
133-
replace(/[A-Z]/g, c => \`-\${c.toLowerCase()}\`);
134-
}
13584
13685
`;
13786

13887

88+
let solution = `
89+
function descendingOrder(n){
90+
return parseInt(n.toString().split('').sort((a, b) => b - a).join(''));
91+
}
92+
93+
`
94+
95+
13996
// When this js file is ran you will get an output in your console of all the info in a format
14097
// ready to go into the Sql DB Start files to then copy into those tables
98+
console.log('Solution');
99+
console.log(_.cleanSQL(solution));
141100
console.log('\nTags');
142101
console.log(_.JSON(tags));
143102
console.log('\nLanguages');

controllers/testCtrl.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,6 @@ function nester(arr) {
9494
}
9595
}
9696
}
97-
98-
99-
10097
return {
10198
nest: arr,
10299
testCount: testCount,

db/start/katas.sql

Lines changed: 10 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
INSERT INTO katas (kyu, name, tags, languages, starter_code, description, examples, test_script)
2-
VALUES (8, 'var a should equal 1', 'var a = 1', 'Sumbit This','["Fake"]', '["JavaScript"]', '[{"test":"Test.assertEquals(a, 1)","result":""}]', '[{"test":"Test.assertEquals(a, 0)","result":""},{"test":"Test.assertEquals(a, 2)","result":""},{"test":"Test.assertEquals(a, 1)","result":""}]'),
2+
VALUES (8, 'Submit This', '["Fake"]', '["JavaScript"]', 'var a = 1', 'var a should equal 1', '[{"test":"Test.assertEquals(a, 1)","result":""}]', '[{"test":"Test.assertEquals(a, 0)","result":""},{"test":"Test.assertEquals(a, 2)","result":""},{"test":"Test.assertEquals(a, 1)","result":""}]'),
33

44
(8, 'Generate range of integers', '["ALGORITHMS"]', '["Javascript","C#","Elixir"]', 'function generateRange(min, max, step){}', 'Implement a function named generateRange(min, max, step), which takes three arguments and generates a range of integers from min to max, with the step. The first integer is the minimum value, the second is the maximum of the range and the third is the step. (min < max)', '[{"test":"Test.assertSimilar(generateRange(2, 10, 2), [2,4,6,8,10]);","result":""}]','[{"test":" Test.describe(''generateRange(2, 10, 2)'', function() { Test.assertSimilar(generateRange(2, 10, 2), [2,4,6,8,10]); }); Test.describe(''generateRange(1, 10, 3)'', function() { Test.assertSimilar(generateRange(1, 10, 3), [1,4,7,10]); }); Test.describe(''generateRange(1, 10, 1)'', function() { Test.assertSimilar(generateRange(1, 10, 1), [1,2,3,4,5,6,7,8,9,10]); }); Test.describe(''generateRange(1, 10, 4)'', function() { Test.assertSimilar(generateRange(1, 10, 4), [1,5,9]); }); Test.describe(''generateRange(1, 10, 5)'', function() { Test.assertSimilar(generateRange(1, 10, 5), [1,6]); }); Test.describe(''generateRange for random'', function() { var generateRandom = function(min, max){ return Math.floor(Math.random() * max) + min; }; var range = function(min, max, step){ var z = []; for(var i = min; i <= max; i += step){ z.push(i); } return z; }; for(var i = 0; i < 10; i++){ var randomMax = generateRandom(30, 100), randomMin = generateRandom(1, 20), randomStep = generateRandom(1, 10); Test.assertSimilar(generateRange(randomMin, randomMax, randomStep), range(randomMin, randomMax, randomStep)); } }); "}]'),
55

@@ -16,125 +16,24 @@ VALUES (8, 'var a should equal 1', 'var a = 1', 'Sumbit This','["Fake"]', '["Jav
1616
(6, 'Kebabize', '["FUNDAMENTALS","STRINGS"]', '["JavaScript","CoffeeScript","Crystal","Python","Ruby"]', 'function kebabize(str) {}', 'Modify the kebabize function so that it converts a camel case string into a kebab case.\n\nkebabize(''camelsHaveThreeHumps'') // camels-have-three-humps\nkebabize(''camelsHave3Humps'') // camels-have-humps\n\nNotes:\nthe returned string should only contain lowercase letters\n', '[{"test":"Test.assertEquals(kebabize(''myCamelCasedString''), ''my-camel-cased-string'');"},{"test":"Test.assertEquals(kebabize(''myCamelHas3Humps''), ''my-camel-has-humps'');"}]', '[{"test":" Test.describe(''tests'', _ => { Test.it(''fixed tests'', _ => { Test.assertEquals(kebabize(''myCamelCasedString''), ''my-camel-cased-string''); Test.assertEquals(kebabize(''myCamelHas3Humps''), ''my-camel-has-humps''); }); Test.it(''random tests'', _ => { function fixture (str) { return str.replace(/\\d/g,'''').split(/(?=[A-Z])/).map(s => s.toLowerCase()).join(''-''); } for (let i = 0; i <= 100; i += 1) { let token = Test.randomToken(); let camel = token.split('''').map(c => { const rand = Math.random(); return rand > 0.9 ? c.toUpperCase() : c; }).join(''''); Test.assertEquals(kebabize(camel), fixture(camel)); } }); }); "}]')
1717
;
1818

19-
20-
-- December 27:
21-
-- Here are some solutions to populate the solutions page. I forget what we decided regarding formatting, so I'm just copy/pasting them directly from codewars. Therefore, they have line breaks in them, which we can exhange with \n if we so desire.
2219
INSERT INTO solutions (user_id, kata_id, script)
23-
VALUES (1, 2, "function generateRange(min, max, step){
24-
let arr = [];
25-
for (let i=min; i<=max; i += step) {
26-
arr.push(i);
27-
}
28-
return arr;
29-
}"),
30-
31-
(1, 3, "function descendingOrder(n){
32-
return parseInt(n.toString().split('').sort((a, b) => b - a).join(''));
33-
}"),
34-
35-
(1, 4, "function disemvowel(str) {
36-
var vowels = ['a', 'e', 'i', 'o', 'u'];
37-
return str.split('').map((letter) => {
38-
if (vowels.indexOf(letter.toLowerCase()) === -1) {
39-
return letter;
40-
}
41-
}).join('');
42-
}"),
43-
44-
(1, 5, "function isValidWalk(walk) {
45-
46-
var horizontal = 0;
47-
var vertical = 0;
48-
var total = 0;
49-
50-
walk.forEach((word) => {
51-
switch (word) {
52-
case 'n':
53-
vertical += 1;
54-
total += 1;
55-
break;
56-
case 's':
57-
vertical -= 1;
58-
total += 1;
59-
break;
60-
case 'e':
61-
horizontal += 1;
62-
total += 1;
63-
break;
64-
case 'w':
65-
horizontal -= 1;
66-
total += 1;
67-
break;
68-
default:
69-
console.log("It's broken");
70-
}
71-
72-
});
73-
74-
if (horizontal === 0 && vertical === 0 && total === 10) {
75-
return true;
76-
} else {
77-
return false;
78-
}
79-
80-
}"),
20+
VALUES (1, 2, 'function generateRange(min, max, step){ let arr = []; for (let i=min; i<=max; i += step) { arr.push(i); } return arr; }'),
8121

82-
(1, 6, "function solution(number){
22+
(1, 3, 'function descendingOrder(n){ return parseInt(n.toString().split('''').sort((a, b) => b - a).join('''')); }'),
8323

84-
var arr = [];
24+
(1, 4, 'function disemvowel(str) { var vowels = [''a'', ''e'', ''i'', ''o'', ''u'']; return str.split('''').map((letter) => { if (vowels.indexOf(letter.toLowerCase()) === -1) { return letter; } }).join(''''); }'),
8525

86-
for (var i = 3; i < number; i++) {
87-
if (i % 3 === 0 || i % 5 === 0) {
88-
arr.push(i);
89-
}
90-
}
26+
(1, 5, 'function isValidWalk(walk) { var horizontal = 0; var vertical = 0; var total = 0; walk.forEach((word) => { switch (word) { case ''n'': vertical += 1; total += 1; break; case ''s'': vertical -= 1; total += 1; break; case ''e'': horizontal += 1; total += 1; break; case ''w'': horizontal -= 1; total += 1; break; default: console.log(''It''s broken''); } }); if (horizontal === 0 && vertical === 0 && total === 10) { return true; } else { return false; } }'),
9127

92-
var final = 0;
93-
if (arr[0]) {
94-
final = arr.reduce((a, b) => a + b)
95-
}
28+
(1, 6, 'function solution(number){ var arr = []; for (var i = 3; i < number; i++) { if (i % 3 === 0 || i % 5 === 0) { arr.push(i); } } var final = 0; if (arr[0]) { final = arr.reduce((a, b) => a + b) } return final; } '),
9629

97-
return final;
30+
(1, 7, 'function bubblesortOnce(intArr) { var bubble; for (var i = 0; i < intArr.length; i++) { if (intArr[i] > intArr[i+1]) { bubble = intArr[i+1]; intArr.splice(i + 1, 1); intArr.splice(i, 0, bubble); } } return intArr; }'),
9831

99-
}"),
100-
101-
(1, 7, "function bubblesortOnce(intArr) {
102-
103-
var bubble;
104-
105-
for (var i = 0; i < intArr.length; i++) {
106-
if (intArr[i] > intArr[i+1]) {
107-
bubble = intArr[i+1];
108-
intArr.splice(i + 1, 1);
109-
intArr.splice(i, 0, bubble);
110-
}
111-
}
112-
113-
return intArr;
114-
}"),
115-
116-
(1, 8, "function kebabize(str) {
117-
str = str.split('').map((letter) => {
118-
if (!isNaN(parseInt(letter))) {
119-
return "";
120-
}else if (letter === letter.toUpperCase()) {
121-
return "-" + letter.toLowerCase();
122-
} else {
123-
return letter;
124-
}
125-
}).join('');
126-
127-
if (str.charAt(0) === "-") {
128-
str = str.slice(1);
129-
}
130-
131-
return str;
132-
}"),
32+
(1, 8, 'function kebabize(str) { str = str.split('''').map((letter) => { if (!isNaN(parseInt(letter))) { return ''''; }else if (letter === letter.toUpperCase()) { return ''-'' + letter.toLowerCase(); } else { return letter; } }).join(''''); if (str.charAt(0) === ''-'') { str = str.slice(1); } return str; } '),
13333
(1, 1, 'var a = 1'),
13434
(1,1, 'let a = 1'),
135-
(1, 8, 'function kebabize(str) { return str.replace(/[^a-z]/ig, ''). replace(/^[A-Z]/, c => c.toLowerCase()). replace(/[A-Z]/g, c => `-${c.toLowerCase()}`); }')
35+
(1, 8, 'function kebabize(str) { return str.replace(/[^a-z]/ig, '').replace(/^[A-Z]/, c => c.toLowerCase()).replace(/[A-Z]/g, c => `-${c.toLowerCase()}`); }')
13636
;
13737

13838
INSERT INTO ratings (user_id, solution_id, liked)
139-
VALUES (1, 1, true);
140-
39+
VALUES (1, 1, true);

db/start/tables.sql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,3 @@ CREATE TABLE ratings (
3939

4040
INSERT INTO users (github_id, name, email, username, picture_url, points)
4141
VALUES ('12', 'Bob Smith', 'bob@smith.com', 'bobIScool', null, 25);
42-

0 commit comments

Comments
 (0)