Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let input = "1d6 + 2d8 + 5";
- //let rollEXP = /[^ ,.+]+/gi;
- const rollEXP = /(?:[0-9]*d[0-9]+)|(?:[0-9]+)/gi;
- let segments = input.match(rollEXP);
- let max = new Array(segments.length);
- let min = new Array(segments.length);
- let avg = new Array(segments.length);
- const segmentEXP = /([0-9]*)d([0-9]+)/i;
- function parz(i)
- {
- let segment = segments[i];
- let parts = segment.match(segmentEXP);
- if (parts != null)
- {
- let numDice;
- let numFace = parseInt(parts[2]);
- if (parts[1] === "") numDice = 1;
- else numDice = parseInt(parts[1]);
- max[i] = numFace*numDice;
- min[i] = numDice;
- avg[i] = (numDice*(numFace+1))/2;
- } else
- {
- min[i] = max[i] = avg[i] = parseInt(segment);
- }
- }
- for (let i = 0; i < segments.length; ++i) parz(i);
- function sum(array) {
- let t = 0;
- array.forEach((val) => {
- t += val;
- });
- return t;
- }
- let MAX = sum(max);
- let MIN = sum(min);
- let AVG = sum(avg);
- /*
- For input = "1d6 + 2d8 + 5"
- MAX = 27
- MIN = 8
- AVG = 17.5
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement