Created
June 23, 2022 19:04
-
-
Save ZaidaZadkiel/0fbaf56d2187ee8d6e40969e86a2a304 to your computer and use it in GitHub Desktop.
I dont even remember what this is about - euler problem #11 incorrect solution - node js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* ZaidaZadkiel at march 28, 2020 | |
euler problem #11 - incorrect | |
run video at | |
https://www.youtube.com/watch?v=VMW04nEtKEk | |
*/ | |
big =[ | |
08,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,08, | |
49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00, | |
81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65, | |
52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91, | |
22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80, | |
24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50, | |
32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70, | |
67,26,20,68,02,62,12,20,95,63,94,39,63,08,40,91,66,49,94,21, | |
24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72, | |
21,36,23,09,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95, | |
78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,09,53,56,92, | |
16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57, | |
86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58, | |
19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40, | |
04,52,08,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66, | |
88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69, | |
04,42,16,73,38,25,39,11,24,94,72,18,08,46,29,32,40,62,76,36, | |
20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16, | |
20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54, | |
01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48]; | |
// its a grid, find the diagonal (4x4) which gets the higher sum | |
var biggest = 0; | |
var cell1, cell2, cell3, cell4; | |
var last; | |
function diagonaldown(startindex){ | |
r = big[startindex ] * | |
big[startindex+21] * | |
big[startindex+42] * | |
big[startindex+63] | |
cell1 = startindex; | |
cell2 = startindex+21; | |
cell3 = startindex+42; | |
cell4 = startindex+63; | |
last = r; | |
biggest = r > biggest ? r : biggest; | |
return startindex | |
} | |
function diagonalup(startindex) { | |
r = big[startindex ] * | |
big[startindex-19] * | |
big[startindex-38] * | |
big[startindex-57] | |
cell1 = startindex; | |
cell2 = startindex-19; | |
cell3 = startindex-38; | |
cell4 = startindex-57; | |
last = r; | |
biggest = r > biggest ? r : biggest; | |
return startindex; | |
} | |
function linehoriz(startindex){ | |
r = big[startindex ] * | |
big[startindex+1] * | |
big[startindex+2] * | |
big[startindex+3] | |
cell1 = startindex; | |
cell2 = startindex+1; | |
cell3 = startindex+2; | |
cell4 = startindex+3; | |
last = r;biggest = r > biggest ? r : biggest; | |
return startindex; | |
} | |
function linevert (startindex) { | |
r = big[startindex ] * | |
big[startindex+20] * | |
big[startindex+40] * | |
big[startindex+60] | |
cell1 = startindex; | |
cell2 = startindex+20; | |
cell3 = startindex+40; | |
cell4 = startindex+60; | |
last = r; biggest = r > biggest ? r : biggest; | |
return startindex; | |
} | |
function getindex(x, y) { | |
return y * 20 + x | |
} | |
const syncWait = ms => { | |
const end = Date.now() + ms | |
while (Date.now() < end) continue | |
} | |
function debug(index){ | |
process.stdout.write('\u001b[2J\u001b[;H'); | |
for(y = 0 ; y != 20 ; y++ ) { | |
for(x = 0 ; x != 20 ; x++ ) { | |
ch = y * 20 + x; | |
highlight = (ch == cell1) || | |
(ch == cell2) || | |
(ch == cell3) || | |
(ch == cell4) | |
n = big[ch] | |
process.stdout.write( | |
( highlight ? "\u001b[33m*" : " ") + | |
( n < 10 ? "0" + n : n) + | |
( highlight ? "*\u001b[39m" : " ") | |
); | |
} | |
process.stdout.write('\n'); | |
} | |
console.log(`x: ${index%20} y: ${(index/20)>>0}, product: ${last}`) | |
console.log("biggest product: " + biggest); | |
syncWait(200) | |
} | |
for( s = 0; s!=5; s++){ | |
for(i = 0; i != 17; i++) { | |
debug( diagonaldown( getindex(i, s*4) ) ) | |
} | |
for(i = 0; i != 17; i++) { | |
debug( diagonalup( getindex(s*4, i+3) ) ) | |
} | |
for(i = 0; i != 20; i++) { | |
debug( linevert ( getindex( i, s*4) ) ) | |
} | |
for(i = 0; i != 20; i++) { | |
debug( linehoriz ( getindex(s*4, i) ) ) | |
} | |
} | |
console.log("biggest number: " + biggest); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment