Why does the for loop in my code restart automatically? - javascript

I'm trying to output the pascal triangle. So i stored the previous output in an array(for ex:1,2,1).Then i'm trying to obtain sum of two elements in array(like array[0]+array[1] then array[1]+array[2]).But the loop which i use for getting the sum restarts on it's own (i.e after o is equal to array.length-1 o becomes equal to zero.
Also any help with proper code formatting and how i could do this in a better way is welcome.
I have tried setting array length to zero when the variable o is equal to array length but then too loop starts to run again from zero.
var count=0,sum=0;
let arr=[],arr1=[],arr2=[];
//For Rows
for (let i = 1; i <= 4; i++) {
//For Spaces
for (var k = 4; k >= i; k--) {
document.querySelector('#a').innerHTML += " ";
}
//For addition logic (This Restarts automatically)
for (let j = 1; j <= i; j++) {
if (j == 1 || j == i) {
document.querySelector('#a').innerHTML += " " + 1;
} else {
for (let o = 0; o < arr2.length; o++) {
sum += parseInt(arr2[o]);
if (o % 2 == 1 && i > 3) {
document.querySelector('#a').innerHTML += " " + sum;
sum = parseInt(arr2[o]);
}
}
document.querySelector('#a').innerHTML += " " + sum;
}
count += 1;
}
if (i > 1) {
sum = 0;
arr.length = 0, arr1.length = 0, arr2.length = 0;
arr.push(document.querySelector('#a').innerText);
arr1 = Array.from(arr[0]);
arr2 = arr1.filter(rem)
function rem(value) {
return value > 0;
}
var temp = 0;
while (temp < count - i) {
arr2.shift();
temp++;
}
}
document.querySelector('#a').innerHTML += "<br/>";
}
<html>
<head></head>
<body>
<div id="a"></div>
</body>
</html>
1
1 1
1 2 1
1 3 3 1
Expected Result
1
1 1
1 2 1
1 3 3 6 3 1
Actual Result

You could take a loop for getting the wanted length of the array and another for calculating the sum of two elements of the array.
This approach starts with a single element and takes for every round one at start and one at the end and all other value from the array.
var length = 4,
array = [1],
temp,
i,
element = document.querySelector('#a');
element.innerHTML += array.join(' ');
while (array.length < length) {
temp = [1];
for (i = 0; i < array.length - 1; i++) {
temp.push(array[i] + array[i + 1]);
}
temp.push(1);
array = temp;
element.innerHTML += '<br>' + array.join(' ');
}
<div id="a" style="text-align: center"></div>

Related

Fast Algorithm That Can Create Ulam Sequence of n Elements

I've been trying to solve this kata on codewars.
I've got an algorithm, but it's apparently too slow to pass the test. It can create sequence of 2450 numbers in just under 1.6 seconds. I don't need the solution but the hint or something to help me to make my algorithm faster.
function ulamSequence(u0, u1, n) {
// create an array with first two elements in it
const seq = [u0, u1];
// create a loop that checks if next number is valid and if it is, push it in seq
num: for (let i = u1 + 1; seq.length < n; i++) {
let sumCount = 0;
for (let k = 0; k < seq.length - 1; k++) {
if (seq.indexOf(i - seq[k]) > k && ++sumCount === 2) { continue num; }
}
sumCount === 1 ? seq.push(i) : "";
}
return seq;
}
Here's an idea: have an array sums so that sums[N] keeps the number of possible summations for N. For example, for U(1,2) sums[3] will be 1 and sums[5] will be 2 (1+4, 2+3). On each step, locate the minimal N so that N > last item and sums[N] == 1. Add N to the result, then sum it with all previous items and update sums accordingly.
function ulam(u0, u1, len) {
let seq = [u0, u1]
let sums = []
let last = u1
sums[u0 + u1] = 1
while (seq.length < len) {
last += 1
while (sums[last] !== 1) {
last += 1
}
for (let n of seq) {
let s = n + last
sums[s] = (sums[s] || 0) + 1
}
seq.push(last)
}
return seq
}
console.time()
ulam(1, 2, 2450)
console.timeEnd()
function ulamSequence(u0, u1, n) {
const seq = [u0, u1];
const set = new Set(seq);
for (let i = u1 + 2; seq.length < n; i++) {
let sumCount = 0;
for (let k = 0; k < seq.length - 1; k++) {
if (set.has(i - seq[k])) {
sumCount++;
if (sumCount === 2) {
continue;
}
}
}
if (sumCount === 1) {
seq.push(i);
set.add(i);
}
}
return seq;
}

Print mirror numbers triangle in JS

I need to create java script program who print mirror numbers triangle from N. I tested some ways and get the 50% from task:
let n = 5;
function generatePyramid(num) {
let number = '';
for (let i = 1; i <= num; i += 1) {
console.log(number += i);
}
}
generatePyramid(n);
This code print triangle only from 1 to 5. How to print triangle from 5 to 1?
Also my print need to be with space between 1 2 3 4 5... not 12345.
I have similar code from java with array, but can't transform it to JS: https://pastebin.com/9dqqE8J6
This is the final output:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
One option would be to add a while loop that slices off characters from the number string until it's empty:
let n = 5;
function generatePyramid(num) {
let number = '';
for (let i = 1; i <= num; i += 1) {
console.log(number += i);
}
while (number.length > 1) {
number = number.slice(0, number.length - 1);
console.log(number);
}
}
generatePyramid(n);
To add spaces as well, one option is:
let n = 5;
const log = str => console.log(str.replace(/.(?!$)/g, '$& '))
function generatePyramid(num) {
let number = '';
for (let i = 1; i <= num; i += 1) {
log(number += i);
}
while (number.length > 1) {
number = number.slice(0, number.length - 1);
log(number);
}
}
generatePyramid(n);
<script>
let n = 5;
function generatePyramid(num) {
let number = '';
for (let i = 1; i <= num; i += 1) {
for (let j = 1; j <= i; j += 1)
document.writeln(j+" ");
document.writeln("<br>")
}
for (let i = 4; i >= 1; i -= 1) {
for (let j = 1; j <= i; j += 1)
document.writeln(j+" ");
document.writeln("<br>")
}
}
generatePyramid(n);
</script>
Try This using the same code but i have taken another loop named j

Array loop in javascript

I try to develop a simple program that prints all numbers in between 1 and 100 that divide by 3 without any residual and calculate the total sum
I did it with for loop:
var sum = 0;
for (var i = 3; i <= 100; i = i + 3) {
document.write("<br/>" + i);
sum = sum + i;
}
document.write("<br/>sum = " + sum); //1683
But I failed when I wanted to do it with array:
var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
numbers[i - 1] = i;
}
for (var index = 0; index < 100; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + i;
}
document.write("<br/>sum = " + sum);
Use it like this,
Array indexes should start from 0, that is why I have introduced another variable j=0
var numbers = [];
var sum = 0;
for (var i = 0, j = 0; i <= 100; i = i + 3, ++j) {
numbers[j] = i;
}
Update
First Issue:
In your code, ie. below code of yours,
for (var i = 0; i <= 100; i = i + 3) {
numbers[i - 1] = i;
}
In the first iteration,
i = 0;
numbers[0-1] = i // i.e numbers[-1] = 0;
and in your second loop, you are starting the index from 0
for (var index = 0; index < 100; index++) {
Second issue:
Also, if you don't use a sequential counter to fill the Array, you will end with undefined values for the ones you did not fill.
If you notice, the output after the loop, it says numbers.length = 99 which is wrong it will not have that many items in it.
Third Issue:
In below code, even if you introduce a sequential counter, this is still wrong
for (var i = 0; i <= 100; i = i + 3) {
numbers[i - 1] = i;
}
because i should start with 3 instead of 0, otherwise you will end up with 34 elements in the array because numbers[0] will be 0;
Fourth Issue:
In this code,
for (var index = 0; index < 100; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + i;
}
You don't actually have to loop it till 100, you already have the numbers array filled, so you just need to use numbers.length, like this
var len = numbers.length;
for (var index = 0; index < len; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + i;
}
A better way to write this
var numbers = [];
for (var i = 3, j=0; i <= 100; i = i + 3, j++) {
numbers[j] = i;
}
var sum = numbers.reduce((a, b) => a+b);
console.log(sum);
The line var sum = numbers.reduce((a, b) => a+b); uses Array.reduce() method.
adding number to array
var numbers = [];
for(var i = 3; i <= 100; i = i +3){
numbers.push(i);
}
summation and printing values
var sum = 0;
for (var i = 0; i < numbers.length; i++) {
document.write("<br/>" + numbers[i]);
sum = sum + numbers[i];
}
document.write("<br/>sum = " + sum); //1683
There are few issues in your code.
for (var i = 0; i <= 100; i = i + 3) {
numbers[i - 1] = i;
}
1: array is 0 based. so first insertion into the array goes for a toss.
2: the number array created will have skipping index like 3, 6 ,9
for (var index = 0; index < 100; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + i;
}
3: Here you are iterating index till 100 , you should iterate it till the length of the numbers array only.
when index is 1,2
number[index] will become undefined.
4: sum = sum + i (i ??????)
You should try like this or you can also use push()
var numbers = [];
var sum = 0;
for (var i = 0,j=0; i <= 100; i = i + 3, j= j+1) {
numbers[j] = i; // array is 0 based.
}
for (var index = 0; index < numbers.length; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + numbers[index];
}
document.write("<br/>sum = " + sum);
Indexes in an array begin with zero.
for (var i = 0; i <= 100; i = i + 3) {
numbers[i - 1] = i; // In the first iteration, there will be numbers[-1] = i;
}
You have several issues i suppose.
var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
numbers.push(i);
}
for (var index = 0; index < numbers.length; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + i;
}
document.write("<br/>sum = " + sum);
Also for array you can use:
for (var i in array) {
console.log(array[i]);
}
And I'm pretty sure, that array of number sequence is absolutely useless, if there is no other information in it.
Try this
var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
numbers[(i-3)/3] = i;
}
for (var index = 0; index < numbers.length; index++) {
document.write("<br/>" + numbers[index]);
sum = sum + numbers[index];
}
document.write("<br/>sum = " + sum);
Here is the fiddle i tried
https://jsfiddle.net/4ncgnd7c/
This should work using a single loop
var numbers = [];
var sum = 0;
for (var i = 3; i <= 100; i = i + 3) {
numbers[i] = i;
document.write("<br/>" + i);
sum = sum + i;
}
document.write("<br/>sum = " + sum);

Quickest way to achieve this sequence?

I'm trying to create a simple algorithm that builds an array with a dynamic length.
Then, it will, one by one, replace an item, and then two, then three and so on until the only items left are the first and last.
like this:
12345
1*345 // it never touches the first
12*45
123*5 // it doesn't ever touch the last item
1**45
12**5
1***5 // done, nowhere else to go
I put together a simple demo to show what I'm trying to do.
var length = 6,
array = [],
log = document.getElementById("log"),
edited,
j,
i;
for (i = 1; i <= length; i++) {
array.push(i);
}
log.innerHTML += array.join(" ") + "<br><br>";
for (i = 1; i < (length - 1); i++) {
edited = array.concat();
for (j = i; j < (length - 1); j++) {
edited[j] = "*";
log.innerHTML += edited.join(" ") + "<br>";
}
log.innerHTML += "<br>";
}
Fiddle
It works fine, the only problem is it's out of order.
Right now it seems to only iterate by number of asterisks, then by index. I need it to do the opposite.
// it does this
12345
1*345
1**45
1***5
12*45
12**5
123*5 // out of order
If someone could help that would be great because I am really at a loss!
This should get it done.
var a = 6, // array length
b = [], // array
log = document.getElementById("log"),
c,
d,
e;
for (c = 1; c <= a; c++) {
b.push(c);
}
log.innerHTML += b.join(" ") + "<br><br>";
//the size of the asterisk chunk
for(i = 1; i < b.length - 1; i ++)
{
//position to start asterisk chunk
for(j = 1; j < b.length - i; j ++)
{
var tempArr = b.concat();
//the position inside of the asterisk chunk
for(k = 0; k < i; k ++)
{
tempArr[k + j] = "*";
}
log.innerHTML += tempArr.join(" ") + "<br>";
}
}
JSFiddle
This seems to work well:
str = "1234567"
len = str.length;
for(var stars = 1; stars < len - 1; stars++) {
for(var pos = 1; pos < len - stars; pos++) {
var s = str.substr(0, pos)
+ new Array(stars + 1).join("*")
+ str.substr(pos + stars);
document.write(s + "<br>");
}
}

Project Euler - 67

I was working through problem 67 on Project Euler, and this is the following code I used: (sorry if kind of messy
var everything = [59,73,41,52,40,09,26,53,06,34,10,51,87,86,81,61,95,66,57,25,68,90,81,80,38,92,67,73,30,28,51,76,81,18,75,44,84,14,95,87,62,81,17,78,58,21,46,71,58,02,79,62,39,31,09,56,34,35,53,78,31,81,18,90,93,15,78,53,04,21,84,93,32,13,97,11,37,51,45,03,81,79,05,18,78,86,13,30,63,99,95,39,87,96,28,03,38,42,17,82,87,58,07,22,57,06,17,51,17,07,93,09,07,75,97,95,78,87,08,53,67,66,59,60,88,99,94,65,55,77,55,34,27,53,78,28,76,40,41,04,87,16,09,42,75,69,23,97,30,60,10,79,87,12,10,44,26,21,36,32,84,98,60,13,12,36,16,63,31,91,35,70,39,06,05,55,27,38,48,28,22,34,35,62,62,15,14,94,89,86,66,56,68,84,96,21,34,34,34,81,62,40,65,54,62,05,98,03,02,60,38,89,46,37,99,54,34,53,36,14,70,26,02,90,45,13,31,61,83,73,47,36,10,63,96,60,49,41,05,37,42,14,58,84,93,96,17,09,43,05,43,06,59,66,57,87,57,61,28,37,51,84,73,79,15,39,95,88,87,43,39,11,86,77,74,18,54,42,05,79,30,49,99,73,46,37,50,02,45,09,54,52,27,95,27,65,19,45,26,45,71,39,17,78,76,29,52,90,18,99,78,19,35,62,71,19,23,65,93,85,49,33,75,09,02,33,24,47,61,60,55,32,88,57,55,91,54,46,57,07,77,98,52,80,99,24,25,46,78,79,05,92,09,13,55,10,67,26,78,76,82,63,49,51,31,24,68,05,57,07,54,69,21,67,43,17,63,12,24,59,06,08,98,74,66,26,61,60,13,03,09,09,24,30,71,08,88,70,72,70,29,90,11,82,41,34,66,82,67,04,36,60,92,77,91,85,62,49,59,61,30,90,29,94,26,41,89,04,53,22,83,41,09,74,90,48,28,26,37,28,52,77,26,51,32,18,98,79,36,62,13,17,08,19,54,89,29,73,68,42,14,08,16,70,37,37,60,69,70,72,71,09,59,13,60,38,13,57,36,09,30,43,89,30,39,15,02,44,73,05,73,26,63,56,86,12,55,55,85,50,62,99,84,77,28,85,03,21,27,22,19,26,82,69,54,04,13,07,85,14,01,15,70,59,89,95,10,19,04,09,31,92,91,38,92,86,98,75,21,05,64,42,62,84,36,20,73,42,21,23,22,51,51,79,25,45,85,53,03,43,22,75,63,02,49,14,12,89,14,60,78,92,16,44,82,38,30,72,11,46,52,90,27,08,65,78,03,85,41,57,79,39,52,33,48,78,27,56,56,39,13,19,43,86,72,58,95,39,07,04,34,21,98,39,15,39,84,89,69,84,46,37,57,59,35,59,50,26,15,93,42,89,36,27,78,91,24,11,17,41,05,94,07,69,51,96,03,96,47,90,90,45,91,20,50,56,10,32,36,49,04,53,85,92,25,65,52,09,61,30,61,97,66,21,96,92,98,90,06,34,96,60,32,69,68,33,75,84,18,31,71,50,84,63,03,03,19,11,28,42,75,45,45,61,31,61,68,96,34,49,39,05,71,76,59,62,67,06,47,96,99,34,21,32,47,52,07,71,60,42,72,94,56,82,83,84,40,94,87,82,46,01,20,60,14,17,38,26,78,66,81,45,95,18,51,98,81,48,16,53,88,37,52,69,95,72,93,22,34,98,20,54,27,73,61,56,63,60,34,63,93,42,94,83,47,61,27,51,79,79,45,01,44,73,31,70,83,42,88,25,53,51,30,15,65,94,80,44,61,84,12,77,02,62,02,65,94,42,14,94,32,73,09,67,68,29,74,98,10,19,85,48,38,31,85,67,53,93,93,77,47,67,39,72,94,53,18,43,77,40,78,32,29,59,24,06,02,83,50,60,66,32,01,44,30,16,51,15,81,98,15,10,62,86,79,50,62,45,60,70,38,31,85,65,61,64,06,69,84,14,22,56,43,09,48,66,69,83,91,60,40,36,61,92,48,22,99,15,95,64,43,01,16,94,02,99,19,17,69,11,58,97,56,89,31,77,45,67,96,12,73,08,20,36,47,81,44,50,64,68,85,40,81,85,52,09,91,35,92,45,32,84,62,15,19,64,21,66,06,01,52,80,62,59,12,25,88,28,91,50,40,16,22,99,92,79,87,51,21,77,74,77,07,42,38,42,74,83,02,05,46,19,77,66,24,18,05,32,02,84,31,99,92,58,96,72,91,36,62,99,55,29,53,42,12,37,26,58,89,50,66,19,82,75,12,48,24,87,91,85,02,07,03,76,86,99,98,84,93,07,17,33,61,92,20,66,60,24,66,40,30,67,05,37,29,24,96,03,27,70,62,13,04,45,47,59,88,43,20,66,15,46,92,30,04,71,66,78,70,53,99,67,60,38,06,88,04,17,72,10,99,71,07,42,25,54,05,26,64,91,50,45,71,06,30,67,48,69,82,08,56,80,67,18,46,66,63,01,20,08,80,47,07,91,16,03,79,87,18,54,78,49,80,48,77,40,68,23,60,88,58,80,33,57,11,69,55,53,64,02,94,49,60,92,16,35,81,21,82,96,25,24,96,18,02,05,49,03,50,77,06,32,84,27,18,38,68,01,50,04,03,21,42,94,53,24,89,05,92,26,52,36,68,11,85,01,04,42,02,45,15,06,50,04,53,73,25,74,81,88,98,21,67,84,79,97,99,20,95,04,40,46,02,58,87,94,10,02,78,88,52,21,03,88,60,06,53,49,71,20,91,12,65,07,49,21,22,11,41,58,99,36,16,09,48,17,24,52,36,23,15,72,16,84,56,02,99,43,76,81,71,29,39,49,17,64,39,59,84,86,16,17,66,03,09,43,06,64,18,63,29,68,06,23,07,87,14,26,35,17,12,98,41,53,64,78,18,98,27,28,84,80,67,75,62,10,11,76,90,54,10,05,54,41,39,66,43,83,18,37,32,31,52,29,95,47,08,76,35,11,04,53,35,43,34,10,52,57,12,36,20,39,40,55,78,44,07,31,38,26,08,15,56,88,86,01,52,62,10,24,32,05,60,65,53,28,57,99,03,50,03,52,07,73,49,92,66,80,01,46,08,67,25,36,73,93,07,42,25,53,13,96,76,83,87,90,54,89,78,22,78,91,73,51,69,09,79,94,83,53,09,40,69,62,10,79,49,47,03,81,30,71,54,73,33,51,76,59,54,79,37,56,45,84,17,62,21,98,69,41,95,65,24,39,37,62,03,24,48,54,64,46,82,71,78,33,67,09,16,96,68,52,74,79,68,32,21,13,78,96,60,09,69,20,36,73,26,21,44,46,38,17,83,65,98,07,23,52,46,61,97,33,13,60,31,70,15,36,77,31,58,56,93,75,68,21,36,69,53,90,75,25,82,39,50,65,94,29,30,11,33,11,13,96,02,56,47,07,49,02,76,46,73,30,10,20,60,70,14,56,34,26,37,39,48,24,55,76,84,91,39,86,95,61,50,14,53,93,64,67,37,31,10,84,42,70,48,20,10,72,60,61,84,79,69,65,99,73,89,25,85,48,92,56,97,16,03,14,80,27,22,30,44,27,67,75,79,32,51,54,81,29,65,14,19,04,13,82,04,91,43,40,12,52,29,99,07,76,60,25,01,07,61,71,37,92,40,47,99,66,57,01,43,44,22,40,53,53,09,69,26,81,07,49,80,56,90,93,87,47,13,75,28,87,23,72,79,32,18,27,20,28,10,37,59,21,18,70,04,79,96,03,31,45,71,81,06,14,18,17,05,31,50,92,79,23,47,09,39,47,91,43,54,69,47,42,95,62,46,32,85,37,18,62,85,87,28,64,05,77,51,47,26,30,65,05,70,65,75,59,80,42,52,25,20,44,10,92,17,71,95,52,14,77,13,24,55,11,65,26,91,01,30,63,15,49,48,41,17,67,47,03,68,20,90,98,32,04,40,68,90,51,58,60,06,55,23,68,05,19,76,94,82,36,96,43,38,90,87,28,33,83,05,17,70,83,96,93,06,04,78,47,80,06,23,84,75,23,87,72,99,14,50,98,92,38,90,64,61,58,76,94,36,66,87,80,51,35,61,38,57,95,64,06,53,36,82,51,40,33,47,14,07,98,78,65,39,58,53,06,50,53,04,69,40,68,36,69,75,78,75,60,03,32,39,24,74,47,26,90,13,40,44,71,90,76,51,24,36,50,25,45,70,80,61,80,61,43,90,64,11,18,29,86,56,68,42,79,10,42,44,30,12,96,18,23,18,52,59,02,99,67,46,60,86,43,38,55,17,44,93,42,21,55,14,47,34,55,16,49,24,23,29,96,51,55,10,46,53,27,92,27,46,63,57,30,65,43,27,21,20,24,83,81,72,93,19,69,52,48,01,13,83,92,69,20,48,69,59,20,62,05,42,28,89,90,99,32,72,84,17,08,87,36,03,60,31,36,36,81,26,97,36,48,54,56,56,27,16,91,08,23,11,87,99,33,47,02,14,44,73,70,99,43,35,33,90,56,61,86,56,12,70,59,63,32,01,15,81,47,71,76,95,32,65,80,54,70,34,51,40,45,33,04,64,55,78,68,88,47,31,47,68,87,03,84,23,44,89,72,35,08,31,76,63,26,90,85,96,67,65,91,19,14,17,86,04,71,32,95,37,13,04,22,64,37,37,28,56,62,86,33,07,37,10,44,52,82,52,06,19,52,57,75,90,26,91,24,06,21,14,67,76,30,46,14,35,89,89,41,03,64,56,97,87,63,22,34,03,79,17,45,11,53,25,56,96,61,23,18,63,31,37,37,47,77,23,26,70,72,76,77,04,28,64,71,69,14,85,96,54,95,48,06,62,99,83,86,77,97,75,71,66,30,19,57,90,33,01,60,61,14,12,90,99,32,77,56,41,18,14,87,49,10,14,90,64,18,50,21,74,14,16,88,05,45,73,82,47,74,44,22,97,41,13,34,31,54,61,56,94,03,24,59,27,98,77,04,09,37,40,12,26,87,09,71,70,07,18,64,57,80,21,12,71,83,94,60,39,73,79,73,19,97,32,64,29,41,07,48,84,85,67,12,74,95,20,24,52,41,67,56,61,29,93,35,72,69,72,23,63,66,01,11,07,30,52,56,95,16,65,26,83,90,50,74,60,18,16,48,43,77,37,11,99,98,30,94,91,26,62,73,45,12,87,73,47,27,01,88,66,99,21,41,95,80,02,53,23,32,61,48,32,43,43,83,14,66,95,91,19,81,80,67,25,88,08,62,32,18,92,14,83,71,37,96,11,83,39,99,05,16,23,27,10,67,02,25,44,11,55,31,46,64,41,56,44,74,26,81,51,31,45,85,87,09,81,95,22,28,76,69,46,48,64,87,67,76,27,89,31,11,74,16,62,03,60,94,42,47,09,34,94,93,72,56,18,90,18,42,17,42,32,14,86,06,53,33,95,99,35,29,15,44,20,49,59,25,54,34,59,84,21,23,54,35,90,78,16,93,13,37,88,54,19,86,67,68,55,66,84,65,42,98,37,87,56,33,28,58,38,28,38,66,27,52,21,81,15,08,22,97,32,85,27,91,53,40,28,13,34,91,25,01,63,50,37,22,49,71,58,32,28,30,18,68,94,23,83,63,62,94,76,80,41,90,22,82,52,29,12,18,56,10,08,35,14,37,57,23,65,67,40,72,39,93,39,70,89,40,34,07,46,94,22,20,05,53,64,56,30,05,56,61,88,27,23,95,11,12,37,69,68,24,66,10,87,70,43,50,75,07,62,41,83,58,95,93,89,79,45,39,02,22,05,22,95,43,62,11,68,29,17,40,26,44,25,71,87,16,70,85,19,25,59,94,90,41,41,80,61,70,55,60,84,33,95,76,42,63,15,09,03,40,38,12,03,32,09,84,56,80,61,55,85,97,16,94,82,94,98,57,84,30,84,48,93,90,71,05,95,90,73,17,30,98,40,64,65,89,07,79,09,19,56,36,42,30,23,69,73,72,07,05,27,61,24,31,43,48,71,84,21,28,26,65,65,59,65,74,77,20,10,81,61,84,95,08,52,23,70,47,81,28,09,98,51,67,64,35,51,59,36,92,82,77,65,80,24,72,53,22,07,27,10,21,28,30,22,48,82,80,48,56,20,14,43,18,25,50,95,90,31,77,08,09,48,44,80,90,22,93,45,82,17,13,96,25,26,08,73,34,99,06,49,24,06,83,51,40,14,15,10,25,01,54,25,10,81,30,64,24,74,75,80,36,75,82,60,22,69,72,91,45,67,03,62,79,54,89,74,44,83,64,96,66,73,44,30,74,50,37,05,09,97,70,01,60,46,37,91,39,75,75,18,58,52,72,78,51,81,86,52,08,97,01,46,43,66,98,62,81,18,70,93,73,08,32,46,34,96,80,82,07,59,71,92,53,19,20,88,66,03,26,26,10,24,27,50,82,94,73,63,08,51,33,22,45,19,13,58,33,90,15,22,50,36,13,55,06,35,47,82,52,33,61,36,27,28,46,98,14,73,20,73,32,16,26,80,53,47,66,76,38,94,45,02,01,22,52,47,96,64,58,52,39,88,46,23,39,74,63,81,64,20,90,33,33,76,55,58,26,10,46,42,26,74,74,12,83,32,43,09,02,73,55,86,54,85,34,28,23,29,79,91,62,47,41,82,87,99,22,48,90,20,05,96,75,95,04,43,28,81,39,81,01,28,42,78,25,39,77,90,57,58,98,17,36,73,22,63,74,51,29,39,74,94,95,78,64,24,38,86,63,87,93,06,70,92,22,16,80,64,29,52,20,27,23,50,14,13,87,15,72,96,81,22,08,49,72,30,70,24,79,31,16,64,59,21,89,34,96,91,48,76,43,53,88,01,57,80,23,81,90,79,58,01,80,87,17,99,86,90,72,63,32,69,14,28,88,69,37,17,71,95,56,93,71,35,43,45,04,98,92,94,84,96,11,30,31,27,31,60,92,03,48,05,98,91,86,94,35,90,90,08,48,19,33,28,68,37,59,26,65,96,50,68,22,07,09,49,34,31,77,49,43,06,75,17,81,87,61,79,52,26,27,72,29,50,07,98,86,01,17,10,46,64,24,18,56,51,30,25,94,88,85,79,91,40,33,63,84,49,67,98,92,15,26,75,19,82,05,18,78,65,93,61,48,91,43,59,41,70,51,22,15,92,81,67,91,46,98,11,11,65,31,66,10,98,65,83,21,05,56,05,98,73,67,46,74,69,34,08,30,05,52,07,98,32,95,30,94,65,50,24,63,28,81,99,57,19,23,61,36,09,89,71,98,65,17,30,29,89,26,79,74,94,11,44,48,97,54,81,55,39,66,69,45,28,47,13,86,15,76,74,70,84,32,36,33,79,20,78,14,41,47,89,28,81,05,99,66,81,86,38,26,06,25,13,60,54,55,23,53,27,05,89,25,23,11,13,54,59,54,56,34,16,24,53,44,06,13,40,57,72,21,15,60,08,04,19,11,98,34,45,09,97,86,71,03,15,56,19,15,44,97,31,90,04,87,87,76,08,12,30,24,62,84,28,12,85,82,53,99,52,13,94,06,65,97,86,09,50,94,68,69,74,30,67,87,94,63,07,78,27,80,36,69,41,06,92,32,78,37,82,30,05,18,87,99,72,19,99,44,20,55,77,69,91,27,31,28,81,80,27,02,07,97,23,95,98,12,25,75,29,47,71,07,47,78,39,41,59,27,76,13,15,66,61,68,35,69,86,16,53,67,63,99,85,41,56,08,28,33,40,94,76,90,85,31,70,24,65,84,65,99,82,19,25,54,37,21,46,33,02,52,99,51,33,26,04,87,02,08,18,96,54,42,61,45,91,06,64,79,80,82,32,16,83,63,42,49,19,78,65,97,40,42,14,61,49,34,04,18,25,98,59,30,82,72,26,88,54,36,21,75,03,88,99,53,46,51,55,78,22,94,34,40,68,87,84,25,30,76,25,08,92,84,42,61,40,38,09,99,40,23,29,39,46,55,10,90,35,84,56,70,63,23,91,39,52,92,03,71,89,07,09,37,68,66,58,20,44,92,51,56,13,71,79,99,26,37,02,06,16,67,36,52,58,16,79,73,56,60,59,27,44,77,94,82,20,50,98,33,09,87,94,37,40,83,64,83,58,85,17,76,53,02,83,52,22,27,39,20,48,92,45,21,09,42,24,23,12,37,52,28,50,78,79,20,86,62,73,20,59,54,96,80,15,91,90,99,70,10,09,58,90,93,50,81,99,54,38,36,10,30,11,35,84,16,45,82,18,11,97,36,43,96,79,97,65,40,48,23,19,17,31,64,52,65,65,37,32,65,76,99,79,34,65,79,27,55,33,03,01,33,27,61,28,66,08,04,70,49,46,48,83,01,45,19,96,13,81,14,21,31,79,93,85,50,05,92,92,48,84,59,98,31,53,23,27,15,22,79,95,24,76,05,79,16,93,97,89,38,89,42,83,02,88,94,95,82,21,01,97,48,39,31,78,09,65,50,56,97,61,01,07,65,27,21,23,14,15,80,97,44,78,49,35,33,45,81,74,34,05,31,57,09,38,94,07,69,54,69,32,65,68,46,68,78,90,24,28,49,51,45,86,35,41,63,89,76,87,31,86,09,46,14,87,82,22,29,47,16,13,10,70,72,82,95,48,64,58,43,13,75,42,69,21,12,67,13,64,85,58,23,98,09,37,76,05,22,31,12,66,50,29,99,86,72,45,25,10,28,19,06,90,43,29,31,67,79,46,25,74,14,97,35,76,37,65,46,23,82,06,22,30,76,93,66,94,17,96,13,20,72,63,40,78,08,52,09,90,41,70,28,36,14,46,44,85,96,24,52,58,15,87,37,05,98,99,39,13,61,76,38,44,99,83,74,90,22,53,80,56,98,30,51,63,39,44,30,91,91,04,22,27,73,17,35,53,18,35,45,54,56,27,78,48,13,69,36,44,38,71,25,30,56,15,22,73,43,32,69,59,25,93,83,45,11,34,94,44,39,92,12,36,56,88,13,96,16,12,55,54,11,47,19,78,17,17,68,81,77,51,42,55,99,85,66,27,81,79,93,42,65,61,69,74,14,01,18,56,12,01,58,37,91,22,42,66,83,25,19,04,96,41,25,45,18,69,96,88,36,93,10,12,98,32,44,83,83,04,72,91,04,27,73,07,34,37,71,60,59,31,01,54,54,44,96,93,83,36,04,45,30,18,22,20,42,96,65,79,17,41,55,69,94,81,29,80,91,31,85,25,47,26,43,49,02,99,34,67,99,76,16,14,15,93,08,32,99,44,61,77,67,50,43,55,87,55,53,72,17,46,62,25,50,99,73,05,93,48,17,31,70,80,59,09,44,59,45,13,74,66,58,94,87,73,16,14,85,38,74,99,64,23,79,28,71,42,20,37,82,31,23,51,96,39,65,46,71,56,13,29,68,53,86,45,33,51,49,12,91,21,21,76,85,02,17,98,15,46,12,60,21,88,30,92,83,44,59,42,50,27,88,46,86,94,73,45,54,23,24,14,10,94,21,20,34,23,51,04,83,99,75,90,63,60,16,22,33,83,70,11,32,10,50,29,30,83,46,11,05,31,17,86,42,49,01,44,63,28,60,07,78,95,40,44,61,89,59,04,49,51,27,69,71,46,76,44,04,09,34,56,39,15,06,94,91,75,90,65,27,56,23,74,06,23,33,36,69,14,39,05,34,35,57,33,22,76,46,56,10,61,65,98,09,16,69,04,62,65,18,99,76,49,18,72,66,73,83,82,40,76,31,89,91,27,88,17,35,41,35,32,51,32,67,52,68,74,85,80,57,07,11,62,66,47,22,67,65,37,19,97,26,17,16,24,24,17,50,37,64,82,24,36,32,11,68,34,69,31,32,89,79,93,96,68,49,90,14,23,04,04,67,99,81,74,70,74,36,96,68,09,64,39,88,35,54,89,96,58,66,27,88,97,32,14,06,35,78,20,71,06,85,66,57,02,58,91,72,05,29,56,73,48,86,52,09,93,22,57,79,42,12,01,31,68,17,59,63,76,07,77,73,81,14,13,17,20,11,09,01,83,08,85,91,70,84,63,62,77,37,07,47,01,59,95,39,69,39,21,99,09,87,02,97,16,92,36,74,71,90,66,33,73,73,75,52,91,11,12,26,53,05,26,26,48,61,50,90,65,01,87,42,47,74,35,22,73,24,26,56,70,52,05,48,41,31,18,83,27,21,39,80,85,26,08,44,02,71,07,63,22,05,52,19,08,20,17,25,21,11,72,93,33,49,64,23,53,82,03,13,91,65,85,02,40,05,42,31,77,42,05,36,06,54,04,58,07,76,87,83,25,57,66,12,74,33,85,37,74,32,20,69,03,97,91,68,82,44,19,14,89,28,85,85,80,53,34,87,58,98,88,78,48,65,98,40,11,57,10,67,70,81,60,79,74,72,97,59,79,47,30,20,54,80,89,91,14,05,33,36,79,39,60,85,59,39,60,07,57,76,77,92,06,35,15,72,23,41,45,52,95,18,64,79,86,53,56,31,69,11,91,31,84,50,44,82,22,81,41,40,30,42,30,91,48,94,74,76,64,58,74,25,96,57,14,19,03,99,28,83,15,75,99,01,89,85,79,50,03,95,32,67,44,08,07,41,62,64,29,20,14,76,26,55,48,71,69,66,19,72,44,25,14,01,48,74,12,98,07,64,66,84,24,18,16,27,48,20,14,47,69,30,86,48,40,23,16,61,21,51,50,26,47,35,33,91,28,78,64,43,68,04,79,51,08,19,60,52,95,06,68,46,86,35,97,27,58,04,65,30,58,99,12,12,75,91,39,50,31,42,64,70,04,46,07,98,73,98,93,37,89,77,91,64,71,64,65,66,21,78,62,81,74,42,20,83,70,73,95,78,45,92,27,34,53,71,15,30,11,85,31,34,71,13,48,05,14,44,03,19,67,23,73,19,57,06,90,94,72,57,69,81,62,59,68,88,57,55,69,49,13,07,87,97,80,89,05,71,05,05,26,38,40,16,62,45,99,18,38,98,24,21,26,62,74,69,04,85,57,77,35,58,67,91,79,79,57,86,28,66,34,72,51,76,78,36,95,63,90,08,78,47,63,45,31,22,70,52,48,79,94,15,77,61,67,68,23,33,44,81,80,92,93,75,94,88,23,61,39,76,22,03,28,94,32,06,49,65,41,34,18,23,08,47,62,60,03,63,33,13,80,52,31,54,73,43,70,26,16,69,57,87,83,31,03,93,70,81,47,95,77,44,29,68,39,51,56,59,63,07,25,70,07,77,43,53,64,03,94,42,95,39,18,01,66,21,16,97,20,50,90,16,70,10,95,69,29,06,25,61,41,26,15,59,63,35];
function getRow(row) {
if(row == 1) return 59;
else {
var num = 0;
var array = [];
for(var i = 1;i < row;i ++) {
num += i;
}
for(var i = 0;i < row;i ++) {
array = array.concat(everything[i + num])
}
return array;
}
}
function pickHighest(lastnumplace, lastrow) {
var highest = [];
var row = getRow(lastrow + 1);
highest = highest.concat(Math.max(row[lastnumplace - 1], row[lastnumplace]));
highest = highest.concat(lastrow + 1);
if(Math.max(row[lastnumplace - 1], row[lastnumplace]) == row[lastnumplace - 1]) highest = highest.concat(lastnumplace);
else highest = highest.concat(lastnumplace + 1);
return highest;
}
var sum = 0;
var highest;
for(var i = 1;i <= 100;i ++) {
if(i == 1) {
highest = [59, 1, 1];
sum += 59;
}
else {
highest = pickHighest(highest[2], i - 1);
sum += highest[0];
}
document.write(sum + " " + highest + "<br>");
}
alert(sum);
alert(i);
For some strange reason, I always get 6580.
https://projecteuler.net/problem=67
Help?
In 'getRow' function you are adding all row elements in the loop, but it is not increasing by the number of elements as you wrote but '2^row number' - you just summed the elements from the previous row.
From row 3 it will not work.

Categories