- https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
- https://visualgo.net/
- https://www.youtube.com/watch?v=ywWBy6J5gz8&t=3s
- threejs.org
- d3js.org
- https://d3plus.org/
/* | |
Array with 10 spaces: | |
H is the HEAD | |
*/ | |
[ H, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0] | |
[ 1, H, 0, 0, 0, 0, 0, 0, 0, 0 , 0] //push 1 - ptr=0, length=1, head=1 | |
[ 1, 1, 2, H, 0, 0, 0, 0, 0, 0 , 0] //push 2 - ptr=1, length=2, head=3 | |
[ 1, 1, 2, 1, 2, 3, H, 0, 0, 0 , 0] //push 3 - ptr=3, length=3, , head=6 | |
[ 1, 1, 2, 1, 2, 3, 1, 2, 3, 4 , H] //push 4 - ptr=3, length=3, , head= | |
[ 1, 1, 2, 1, 2, 3, 1, 3, 4, 4(H), 0] //remove index of number 2, so move left array to the right and legth-- | |
/* | |
ptr is the same =3 , and length will be 2 | |
/Number 3 will be in head as a trash value, can ignore | |
Ex. with ratio x 3 | |
*/ | |
[ H, 0, 0, 0, 0, 0, 0, 0, 0, 0] //empty memory | |
[ 1, 0, 0, H, 0, 0, 0, 0, 0, 0] //ad | |
[ 1, 2, 0, H, 0, 0, 0, 0, 0, 0] // | |
[ 1, 2, 3, 1, 2, 3, 0, 0, 0, H] //Copy the array 1 time | |
[ 1, 2, 3, 1, 2, 3, 4, 0, 0, H] // | |
[ 1, 2, 3, 1, 2, 3, 4, 5, 0, H] // | |
[ 1, 2, 3, 1, 2, 3, 4, 5, 6, H] //Copy the array 2 time | |
// If you try to add 7 to this array you will receive out of memory exception | |
(Math.pow(2,5)).toString(2) // 100000 | |
(Math.pow(2,5)-1).toString(2) // 011111 | |
//2^n = odd , 2^n - 1=even | |
function setBit3(x){ return x|4 } | |
function toggleBit3(x){ return x^4 } | |
/** | |
SUM: | |
Carry: 11 | |
110 | |
011 | |
----- | |
1001 | |
110 | |
011 | |
--- | |
010 | |
*/ | |
function clearBit3(x){ return x&(~4) } | |
function isSetBit3(x){ return x&4==4 } | |
//https://en.wikipedia.org/wiki/Two's_complement | |
x=5 | |
x.toString(2) // "101" | |
y=~5 //-6 | |
(y>>>0).toString(2) // "11111111111111111111111111111010" | |
//101 to number | |
parseInt("101",2) | |
//two complemnts | |
x="11111111111111111111111111111010" | |
//convert to decimal, invert bits and include the - signal | |
-~parseInt(x,2) // == -5 |
var head = { | |
value: 4, | |
next: { value: 5, | |
next: { | |
value: 6, | |
next: null | |
} | |
} | |
}; | |
var last = { | |
value: 6, | |
next: null | |
}; | |
var middle = { value: 5, | |
next: last | |
}; | |
var head = { | |
value: 4, | |
next: middle | |
}; | |
//couting the size | |
var node = head; | |
function middleItem(head){ | |
if(!head) return; | |
var count=0; | |
while(node.next){ | |
node=node.next; | |
count++ | |
} | |
//getting the middle item in list | |
node = head; | |
for(i=0;i<count/2;i++){ | |
node=node.next; | |
} | |
console.log("Middle man ",node); | |
} | |
//Using recursive | |
function counter(head){ | |
if(!head) return 0; | |
return counter(head.next)+1; | |
} | |
let reverse = function(head){ | |
let node = tail = head; | |
let prev; | |
//4 -> 5 - >6 | |
while(node){ //4 | |
let next = node.next; //next=5 | |
node.next = prev; | |
prev = node; | |
node = next; | |
} | |
console.log(prev); | |
return prev; | |
} | |
var head = { value: 4, next: { value: 5, next: {value: 6, next: null}}}; | |
head.next.next.next = head; | |
let iscicle = function(head){ | |
let node = head; | |
let i=0; | |
while(node){ | |
let check=head; | |
for(k=0;k<i;k++){ | |
if(check==node) return true; | |
check=check.next; | |
} | |
i++; | |
node = node.next; | |
} | |
return false; | |
} |
'use strict'; | |
const chai = require('chai'); | |
const chaiHTTP = require('chai-http'); | |
chai.use(chaiHTTP); | |
const promise1 = chai.request('https://api.github.com') | |
.get('/search/repositories?q=bookmark'); | |
const promise2 = chai.request('https://api.github.com') | |
.get('/search/repositories?q=bookmark'); | |
const promise3 = chai.request('https://api.github.com') | |
.get('/search/repositories?q=bookmark'); | |
const promise4 = chai.request('https://api.github.com') | |
.get('/search/repositories?q=bookmark'); | |
const promise5 = chai.request('https://api.github.com') | |
.get('/search/repositories?q=bookmark'); | |
const promise6 = chai.request('https://api.github.com') | |
.get('/search/repositories?q=bookmark'); | |
const all = Promise.all([promise4, promise5, promise6]) | |
.then(responses => { | |
console.log(responses.length); | |
}); | |
const chain = promise1 | |
.then((response) => { | |
console.log(1); | |
return promise2; | |
}) | |
.then((response) => { | |
console.log(2); | |
return promise3; | |
}) | |
.then((response) => { | |
console.log(3); | |
}); |
//https://en.wikipedia.org/wiki/List_of_Dewey_Decimal_classes | |
/** | |
Contents [hide] | |
1 Class 000 – Computer science, information & general works | |
2 Class 100 – Philosophy & psychology | |
3 Class 200 – Religion | |
4 Class 300 – Social sciences | |
5 Class 400 – Language | |
6 Class 500 – Science | |
7 Class 600 – Technology | |
8 Class 700 – Arts & recreation | |
9 Class 800 – Literature | |
10 Class 900 – History & geography | |
11 */ | |
// 0000001 = 000.001 example with 3 digis after class | |
var librarybook = [ 000001, 1000001, 2000001, 3000001,3000002,3000003, 400001,500001,600001,700001,800001,900001,900002]; | |
var books = [ {id: 000001, value: {name: "book 1"} } , {id: 100001, value: {name: "book 2"} } ]; | |
const library = [ | |
{code: '005.133', title: 'Mike Cowlishaw: The REXX Language'}, | |
{code: '005.133', title: 'Sams: Teach Yourself C++ In 21 Days'}, | |
{code: '005.133', title: 'Bjarne Stroustrup: The C++ Programming Language'}, | |
{code: '005.2762', title: 'Douglas Crockford: JavaScript: The Good Parts'}, | |
{code: '005.2762', title: 'David Flanagan: JavaScript: The Definitive Guide'}, | |
{code: '005.44684', title: 'Meinhard Schmidt: Windows Vista for Dummies'}, | |
{code: '220.52081', title: 'Zondervan: NIV Study Bible'}, | |
{code: '231.7652', title: 'Dr Russell Humphries: Starlight and Time'}, | |
{code: '623.82509051', title: 'Frederick Thomas Jane: Jane\'s Fighting Ships'}, | |
{code: '796.8092', title: 'Chuck Norris: The Official Chuck Norris Fact Book'}, | |
]; | |
const searchBook = (library, dewey, title) => { | |
let start = 0; | |
let end = library.length; | |
while('') { | |
if(start > end) { | |
return false; | |
} | |
const index = Math.floor((start + end) / 2); | |
const ptr = library[index]; | |
if(ptr.code > dewey) { | |
end = index - 1; | |
continue; | |
} | |
if(ptr.code < dewey) { | |
start = index + 1; | |
continue; | |
} | |
if(ptr.title === title) { | |
return ptr; | |
} | |
for(let i = index + 1; i < end && library[i].code === dewey; i++) { | |
if(library[i].title === title) { | |
return library[i]; | |
} | |
} | |
for(let i = index - 1; i >= start && library[i].code === dewey; i--) { | |
if(library[i].title === title) { | |
return library[i]; | |
} | |
} | |
return false; | |
} | |
}; | |
// 1 min to 10 max | |
//Loop over the array and make currentNode - minValue = newPosition , example node 1 - 1 =0 , 3 -1 = 2 position | |
var original = [ 3, 4, 8, 7, 2, 1, 5, 10 , 9, 6 ] ; | |
// [ , , 3 ,4 , , , , , , 10 ] | |
//swtich nodes in the same array | |
var i=2; | |
var j=3; | |
var temp=original[i]; | |
original[i]=original[j]; | |
original[j]=temp; | |
//recipes | |
// 1, "cake" | |
// 2, "bread" | |
//ingredientes | |
// 1, "milk" | |
// 2, "flour" | |
/* | |
select * from recipes JOIN ingredientes on recipes.id = ingredientes.id | |
select * from recipes, ingredientes where recipes.id = ingredientes.id | |
//JOIN | |
1, "cake" 1, "milk" | |
1, "cake" 2, "flour" | |
2, "bread" 1, "milk" | |
2, "bread" 2, "flour" | |
//JOIN with ON | |
1, "cake" 1, "milk" | |
2, "bread" 2, "flour" | |
//Country, State(country_id), City (state_id), User (city_id) | |
select * from user , city, state, country | |
where user.city = city.id and city.state = state.id and state.country = country.id | |
*/ |
var root={value: 8}; | |
root.left={value: 3}; | |
root.right={value: 10}; | |
root.left.left={value: 1}; | |
root.left.right={value: 6}; | |
root.right.right={value: 14}; | |
var total=0; | |
var elements=[]; | |
let sortTree= function(node,depth){ | |
if(!node) return depth; | |
depth++; | |
var right= sortTree(node.right,depth); | |
//elements.push(node); | |
var left = sortTree(node.left,depth); //return null | |
if(right>left) return right; | |
else return left; | |
} | |
sortTree(root,0); | |
console.log(elements[-3]) | |
/* | |
Normal Binary Tree - BFS | |
1 | |
2 3 | |
4 5 6 7 | |
Binary Search Tree - DFS - recursive to the left | |
4 | |
3 6 | |
1 2 5 7 | |
*/ | |
arr = [128, 97, 121, 123, 98, 97, 105] | |
var root={value: 128}; | |
root.left={value: 97}; | |
root.left.right={value: 121}; | |
root.left.right.left={value: 98}; | |
root.left.right.right={value: 123}; | |
root.left.right.left.left={value: 97}; | |
root.left.right.left.right={value: 105}; | |
/* | |
128 | |
97 | |
121 | |
98 123 | |
97 105 | |
123 - 97=26 | |
105 - 98=7 | |
123 - 121=2 | |
*/ | |
function getStockes(node){ | |
if(node.right) { | |
maxValue= getStockes(node.right); | |
return maxValue; | |
}else if(node.left) { | |
maxValue= getStockes(node.left); | |
return maxValue; | |
} | |
else return node.value; | |
return node.value-maxValue; | |
} | |
getStockes(root) |