Skip to content

Commit 7b51ead

Browse files
assesment resolution
1 parent 1f2b19f commit 7b51ead

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Document</title>
7+
</head>
8+
<body>
9+
<script src="script.js"></script>
10+
</body>
11+
</html>
+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
// The Sum of range
2+
function range(start, end, step = 1) {
3+
let array = [];
4+
if (step > 0) {
5+
for (let i = start; i <= end; i += step) {
6+
array.push(i);
7+
}
8+
} else {
9+
for (let i = start; i >= end; i += step) {
10+
array.push(i);
11+
}
12+
}
13+
return array;
14+
}
15+
16+
function sum(numbers) {
17+
let total = 0;
18+
for (let number of numbers) {
19+
total += number;
20+
}
21+
return total;
22+
}
23+
24+
console.log(range(1, 10)); // → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
25+
console.log(sum(range(1, 10))); // → 55
26+
27+
console.log(range(1, 10, 2)); // → [1, 3, 5, 7, 9]
28+
console.log(range(5, 2, -1)); // → [5, 4, 3, 2]
29+
30+
31+
32+
33+
// Reversing of array
34+
function reverseArray(array) {
35+
let newArray = [];
36+
for (let i = array.length - 1; i >= 0; i--) {
37+
newArray.push(array[i]);
38+
}
39+
return newArray;
40+
}
41+
42+
function reverseArrayInPlace(array) {
43+
for (let i = 0; i < Math.floor(array.length / 2); i++) {
44+
let temp = array[i];
45+
array[i] = array[array.length - 1 - i];
46+
array[array.length - 1 - i] = temp;
47+
}
48+
}
49+
50+
let array = [1, 2, 3, 4, 5];
51+
console.log(reverseArray(array)); // → [5, 4, 3, 2, 1]
52+
53+
reverseArrayInPlace(array);
54+
console.log(array); // → [5, 4, 3, 2, 1]
55+
56+
57+
58+
// A list
59+
function arrayToList(array) {
60+
let list = null;
61+
for (let i = array.length - 1; i >= 0; i--) {
62+
list = { value: array[i], rest: list };
63+
}
64+
return list;
65+
}
66+
67+
function listToArray(list) {
68+
let array = [];
69+
for (let node = list; node; node = node.rest) {
70+
array.push(node.value);
71+
}
72+
return array;
73+
}
74+
75+
function prepend(value, list) {
76+
return { value, rest: list };
77+
}
78+
79+
function nth(list, n) {
80+
if (!list) return undefined;
81+
if (n === 0) return list.value;
82+
return nth(list.rest, n - 1);
83+
}
84+
85+
let list = arrayToList([1, 2, 3]);
86+
console.log(list); // → { value: 1, rest: { value: 2, rest: { value: 3, rest: null } } }
87+
88+
console.log(listToArray(list)); // → [1, 2, 3]
89+
90+
console.log(prepend(0, list)); // → { value: 0, rest: { value: 1, rest: { value: 2, rest: { value: 3, rest: null } } } }
91+
92+
console.log(nth(list, 1)); // → 2
93+
94+
function nthRecursive(list, n) {
95+
if (!list) return undefined;
96+
if (n === 0) return list.value;
97+
return nthRecursive(list.rest, n - 1);
98+
}
99+
100+
console.log(nthRecursive(list, 1)); // → 2
101+
102+
103+
104+
// Deep comparison
105+
function deepEqual(a, b) {
106+
if (a === b) return true;
107+
108+
if (a == null || typeof a !== "object" || b == null || typeof b !== "object") {
109+
return false;
110+
}
111+
112+
let keysA = Object.keys(a), keysB = Object.keys(b);
113+
114+
if (keysA.length !== keysB.length) return false;
115+
116+
for (let key of keysA) {
117+
if (!keysB.includes(key) || !deepEqual(a[key], b[key])) return false;
118+
}
119+
120+
return true;
121+
}
122+
123+
let obj = { here: { is: "an" }, object: 2 };
124+
console.log(deepEqual(obj, obj)); // → true
125+
console.log(deepEqual(obj, { here: { is: "an" }, object: 2 })); // → true
126+
console.log(deepEqual(obj, { here: { is: "another" }, object: 2 })); // → false

0 commit comments

Comments
 (0)