Skip to content

Commit d77cde9

Browse files
VoloshchenkoAlegonSchiele
authored andcommitted
Add code for chapter 3 and 4 in ts (egonSchiele#103)
1 parent 97003f1 commit d77cde9

File tree

8 files changed

+94
-0
lines changed

8 files changed

+94
-0
lines changed

03_recursion/ts/01_countdown.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function countdown(i: number): null {
2+
console.log(i);
3+
4+
if (i <= 0) {
5+
return null;
6+
}
7+
8+
countdown(i-1);
9+
10+
return null;
11+
}
12+
13+
console.log(countdown(5));

03_recursion/ts/02_greet.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function greet2(name: string): void {
2+
console.log('how are you, ' + name + '?');
3+
}
4+
5+
function bye(): void {
6+
console.log('ok bye!');
7+
}
8+
9+
function greet(name: string): void {
10+
console.log('hello, ' + name + '!');
11+
greet2(name);
12+
console.log('getting ready to say bye...');
13+
bye();
14+
}
15+
16+
greet('adit');

03_recursion/ts/03_factorial.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function fact(x: number): number {
2+
if (x === 1) {
3+
return x;
4+
}
5+
6+
return x * fact(x - 1);
7+
}
8+
9+
console.log(fact(5));

04_quicksort/ts/01_loop_sum.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function sum(arr: number[]): number {
2+
let total = 0;
3+
arr.forEach(number => {
4+
total += number;
5+
});
6+
7+
return total;
8+
}
9+
10+
console.log(sum([1, 2, 3, 4]));

04_quicksort/ts/02_recursive_sum.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function sum(arr: number[]): number {
2+
if (arr.length === 1) {
3+
return arr[0];
4+
}
5+
6+
return arr[0] + sum(arr.slice(1));
7+
}
8+
9+
console.log(sum([1, 2, 3, 4]));

04_quicksort/ts/03_recursive_count.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function count<T>(list: T[]): number {
2+
if (list.length === 1) {
3+
return 1;
4+
}
5+
6+
return 1 + count(list.slice(1));
7+
}
8+
9+
console.log(count([1, 2, 3]));

04_quicksort/ts/04_recursive_max.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function max(arr: number[]): number | null {
2+
if (arr.length === 0) {
3+
return null;
4+
}
5+
6+
if (arr.length === 1) {
7+
return arr[0];
8+
}
9+
10+
const subMax = max(arr.slice(1));
11+
12+
return arr[0] > subMax ? arr[0] : subMax;
13+
};
14+
15+
console.log(max([1, 2, 4, 3]));

04_quicksort/ts/05_quicksort.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function quicksort(arr: number[]): number[] {
2+
if (arr.length < 2) {
3+
return arr;
4+
}
5+
6+
const pivot = arr[0];
7+
const less = arr.slice(1).filter(el => el <= pivot);
8+
const greater = arr.slice(1).filter(el => el > pivot);
9+
10+
return quicksort(less).concat(pivot, quicksort(greater));
11+
}
12+
13+
console.log(quicksort([10, 5, 2, 3]));

0 commit comments

Comments
 (0)