Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- function djoser(base, increment) {
- let stepAreas = [];
- let stepCounter = 0;
- for (let i = base; i > 0; i -= 2, stepCounter++) {
- stepAreas.push(i * i);
- }
- let pyramidHeight = stepCounter * increment;
- //All areas of the outer layers
- let outerLayers = outerLayerExtractor(stepAreas);
- let innerLayers = stoneExtractor(stepAreas);
- let goldArea = stepAreas[stepAreas.length - 1];
- //Multiply by the height
- let incrementedMarble = incrementOuterLayers(outerLayers, increment);
- let incrementedStone = incrementOuterLayers(innerLayers, increment);
- let incrementedLapis = lapisLazuli(incrementedMarble);
- let incrementedGold = goldArea * increment;
- //Material Sums
- let stoneSum = incrementedStone.reduce((a, b) => a + b, 0);
- let marbleSum = incrementedMarble.reduce((a, b) => a + b, 0);
- let lapisSum = incrementedLapis.reduce((a, b) => a + b, 0);
- marbleSum -= lapisSum;
- //Output
- console.log(`Stone required: ${Math.ceil(stoneSum)}`);
- console.log(`Marble required: ${Math.ceil(marbleSum)}`);
- console.log(`Lapis Lazuli required: ${Math.ceil(lapisSum)}`);
- console.log(`Gold required: ${Math.ceil(incrementedGold)}`);
- console.log(`Final pyramid height: ${Math.floor(pyramidHeight)}`);
- //Function Declarations
- function outerLayerExtractor(arr) {
- let outerLayerAreas = [];
- for (let i = 0; i < arr.length - 1; i++) {
- for (let j = i + 1; j > i; j--) {
- let current = arr[i] - arr[j];
- outerLayerAreas.push(current);
- }
- }
- return outerLayerAreas;
- }
- function incrementOuterLayers(arr, inc) {
- let incremented = [];
- for (let i = 0; i < arr.length; i++) {
- incremented.push(arr[i] * inc);
- }
- return incremented;
- }
- function stoneExtractor(arr) {
- let modifiedArray = arr;
- modifiedArray.shift();
- return modifiedArray;
- }
- function lapisLazuli(arr) {
- let lazuli = [];
- let counter = 1;
- for (let i = 0; i < arr.length; i++, counter++) {
- if (counter % 5 === 0) {
- lazuli.push(arr[i]);
- }
- }
- return lazuli;
- }
- }
- djoser(11, 0.75);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement