File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/pyramide-Vxc65cUH.js.map
{"version":3,"file":"pyramide-Vxc65cUH.js","sources":["../../src/modules/pyramide.js"],"sourcesContent":["import { BoiteBuilder } from '../lib/2d/polygones.js'\nimport { choice } from '../lib/outils/arrayOutils'\nimport { stringNombre } from '../lib/outils/texNombre.js'\nimport { fraction } from './fractions.js'\nimport { randint } from './outils.js'\n\nexport default class Pyramide {\n /**\n *\n * @param {object} param0\n * @param {string} param0.operation\n * @param {number} param0.nombreEtages\n * @param {number[]|number[][]} param0.rangeData\n * @param {number[]} param0.exclusions\n * @param {boolean} param0.fractionOn\n */\n constructor ({ operation = '+', nombreEtages = 3, rangeData = [1, 10], exclusions = [], fractionOn = false } = {}) {\n this.operation = operation\n this.nombreEtages = nombreEtages\n this.rangeData = rangeData\n this.valeurs = []\n this.isVisible = []\n this.fractionOn = fractionOn\n for (let y = nombreEtages - 1; y >= 0; y--) {\n this.valeurs[y] = []\n this.isVisible[y] = []\n for (let x = 0, num, den; x <= y; x++) {\n if (y === nombreEtages - 1) {\n if (this.fractionOn) {\n den = choice(rangeData[1])\n num = randint(rangeData[0][0], rangeData[0][1], exclusions.concat([den]))\n this.valeurs[y][x] = fraction(num, den).simplifie()\n } else {\n this.valeurs[y][x] = randint(rangeData[0], rangeData[1], exclusions)\n }\n } else {\n switch (operation) {\n case '+':\n if (this.fractionOn) {\n this.valeurs[y][x] = this.valeurs[y + 1][x].sommeFraction(this.valeurs[y + 1][x + 1]).simplifie()\n } else {\n this.valeurs[y][x] = this.valeurs[y + 1][x] + this.valeurs[y + 1][x + 1]\n }\n break\n case '*':\n if (this.fractionOn) {\n this.valeurs[y][x] = this.valeurs[y + 1][x].produitFraction(this.valeurs[y + 1][x + 1]).simplifie()\n } else {\n this.valeurs[y][x] = this.valeurs[y + 1][x] * this.valeurs[y + 1][x + 1]\n }\n\n break\n }\n }\n this.isVisible[y][x] = false\n }\n }\n }\n\n visible = (x, y) => {\n return this.isVisible[y][x]\n }\n\n estSolvable = function (x, y) {\n if (this.visible(x, y)) return true\n else if (y === this.nombreEtages - 1) return false\n else return this.estSolvable(x, y + 1) && this.estSolvable(x + 1, y + 1)\n }\n\n choisisUneCaseNonVisible = function () {\n let x, y\n let trouve = false\n let cpt = 0\n do {\n cpt++\n y = randint(1, this.nombreEtages - 1)\n x = randint(0, y)\n let seul = true\n for (let i = 0; i < y; i++) {\n if (i !== x && !this.visible(i, y)) seul = false\n }\n if (seul && cpt < 20) trouve = false\n else trouve = !this.visible(x, y)\n } while (!trouve)\n return [x, y]\n }\n\n aleatoirise = function () {\n let solvable = false\n do {\n const [x, y] = this.choisisUneCaseNonVisible()\n this.isVisible[y][x] = true\n solvable = this.estSolvable(0, 0)\n } while (!solvable)\n }\n\n representeMoi = function (xO = 0, yO = 0) {\n const objets = []\n const hCase = this.fractionOn ? 2 : 1\n for (let y = this.nombreEtages; y > 0; y--) {\n for (let x = 0; x < y; x++) {\n // if (this.isVisible[y - 1][x]) {\n /* objets.push(boite({\n Xmin: xO + x * 4 + (this.nombreEtages - y) * 2,\n Ymin: yO + (this.nombreEtages - y) * hCase,\n Xmax: xO + x * 4 + 4 + (this.nombreEtages - y) * 2,\n Ymax: yO + (1 + this.nombreEtages - y) * hCase,\n texteIn: this.fractionOn ? `$${this.valeurs[y - 1][x].texFractionSimplifiee}$` : stringNombre(this.valeurs[y - 1][x], 0),\n texteOpacite: 1\n }))\n */\n objets.push(new BoiteBuilder({\n xMin: xO + x * 4 + (this.nombreEtages - y) * 2,\n yMin: yO + (this.nombreEtages - y) * hCase,\n xMax: xO + x * 4 + 4 + (this.nombreEtages - y) * 2,\n yMax: yO + (1 + this.nombreEtages - y) * hCase\n }).addTextIn({\n textIn: !this.isVisible[y - 1][x]\n ? ''\n : this.fractionOn\n ? this.valeurs[y - 1][x].texFractionSimplifiee\n : stringNombre(this.valeurs[y - 1][x], 0),\n opacite: 1\n }).render())\n }\n }\n return objets\n }\n}\n"],"names":["Pyramide","operation","nombreEtages","rangeData","exclusions","fractionOn","__publicField","x","y","trouve","cpt","randint","seul","i","solvable","xO","yO","objets","hCase","BoiteBuilder","stringNombre","num","den","choice","fraction"],"mappings":"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"}