Problem 29

Run Settings
LanguageJavaScript
Language Version
Run Command
/* * Generate List of num zeros */ function zerosArr(num) { let arr = []; for (let i = 0; i < num; i++) { arr.push(0); } return arr; } /* * Convert integer to number list */ function makeArray(number) { const numberString = number.toString(); const laenge = numberString.length; let outputArr = []; for (let i = 0; i < laenge; i++) { outputArr.push(parseInt(numberString[laenge-1-i])); } return outputArr; } /* * Old School addition */ function plus(array1, array2) { let uebertrag; let ergebnis = []; let max = (arr1, arr2) => { return arr1.length > arr2.length ? arr1. length : arr2.length; } const maxLength = max(array1, array2); for (let i = 0; i < maxLength; i++) { if (!uebertrag) {uebertrag = 0;} let summand1 = array1[i] ? array1[i] : 0; let summand2 = array2[i] ? array2[i] : 0; let summe = summand1 + summand2 + uebertrag; let feldWert = summe % 10; ergebnis.push(feldWert); uebertrag = ( summe - feldWert ) / 10; if ( i == maxLength-1 && uebertrag ) { ergebnis.push(uebertrag)} } return ergebnis; } /* * Old School multiplication * * NEEDS: Old school addition */ function mal(array1, array2) { const laenge1 = array1.length; const laenge2 = array2.length; let product = [0] for (let i = 0; i < laenge1; i++) { for (let j = 0; j < laenge2; j++) { let ergebnis = array1[i] * array2[j] let feldWert = ergebnis % 10; let uebertrag = ( ergebnis - feldWert ) / 10; let zwischenArr = zerosArr(i+j); zwischenArr.push(feldWert); if ( uebertrag > 0 ) { zwischenArr.push(uebertrag) }; product = plus(product, zwischenArr); } } return product; } function giveRow(number) { const factor = makeArray(number); let rowArray = [mal(factor,factor)]; for (let i = 3; i <= 100; i++) { rowArray.push(mal(rowArray[rowArray.length-1] ,factor)); } return rowArray.map(item => trimZeros(item)); } function giveVector() { const resultVector = []; for (let i = 2; i <= 100; i++) { resultVector.push(...giveRow(i)); } return resultVector; } function trimZeros(array) { let goOn = true; while (goOn) { if (array[array.length-1] === 0) { array.pop(); } else { goOn = false; } } return array; } function removeDuplicates(array) { let resultArray = []; array.sort(compareArrays); let lastValue = []; for (let i = 0; i < array.length; i++) { if (compareArrays(array[i], lastValue) !== 0) { resultArray.push(array[i]); } lastValue = array[i]; } return resultArray } function compareArrays(array1, array2 ) { if ( array1.length > array2.length ) { return 1; } else if ( array1.length < array2.length ) { return -1; } else { for (let i = array1.length - 1; i >= 0; i--) { if (array1[i] !== array2[i]) { return array1[i] > array2[i] ? 1 : -1; } } return 0; } } console.log(removeDuplicates(giveVector()).length)
Editor Settings
Theme
Key bindings
Full width
Lines