(UA) IT/Tech Ukrainians in Canada
-
может быть add(add(5,6),add(3,4))
-
задача на общее решение
-
хех
-
Не може такого бути в данному форматі
-
а если у тебя два выражения на одном уровне?
-
можешь псевдокодом описать?
-
ну можна б було зробити альтернативну озвучку для рус сабів. Ну як наприклад для фаркрая ) youtu.be/6Fsj1VH8aQ8?list=FLQRnsOb2Ey2SevsDXo00aoQ
-
За 40хв не знаю ким треба бути щоб встигнути зробити то адекватним і працюючим
-
но потом понял что это просто ленивый способ отсеять людей. неважно каких, но отсеять. моё имхо конечно
-
вот я как раз лексер и начал писать. который считает скобки, запятые и тд
-
если бы сказали что будет литкод то отказался бы.
-
По хорошому там мав би бути лексер і токенайзер тоді буде більш життєвий приклад, наприклад інтерпретатор для якоїсь мови або шаблонізатора
-
Простіше всього switch, case: “add” { left = stack.pop(); right = stack.pop(); stack.push(left + right) } ….
-
вообще это я к тому, что реальным примером из жизни не пахнет
-
аутпут absoluteValue(addition(addition(16296,78),subtraction(multiplication(-1,5263),40))) absoluteValue(addition(16374,subtraction(multiplication(-1,5263),40))) absoluteValue(addition(16374,subtraction(-5263,40))) absoluteValue(addition(16374,-5303)) absoluteValue(11071) 11071
-
const operations = { addition(p1, p2) { //console.log(p1, p2, 'addition operation'); return p1 + p2; }, subtraction(p1, p2) { //console.log(p1, p2, 'subtr operation'); return p1 - p2; } , multiplication(p1, p2) { //console.log(p1, p2, 'multi operation'); return p1 * p2; }, absoluteValue(p1) { return Math.abs(p1); } } function calculate(commands) { commands = commands.replaceAll(' ', ''); const regex = /(multiplication|addition|subtraction)\(-?\d+,-?\d+\)/g; const regexAbsolute = /absoluteValue\(-?\d+\)/g; while (!/^\d+$/g.test(commands)) { console.log(commands); let match = commands.match(regex); if (match === null) { match = commands.match(regexAbsolute); } match = [...match][0]; const indexOfParenthesis = match.indexOf('('); const operationType = match.substring(0, indexOfParenthesis); if (operationType in operations) { const parameters = [...match.matchAll(/\((.*)\)$/g)][0][1].split(','); //console.log(parameters, match, 'params'); const value = operations[operationType].apply(null, parameters.map(p => parseInt(p))); commands = commands.replace(match, value); } else { throw new Error('something gone wrong'); } } return commands; } console.log(calculate('absoluteValue(addition(addition(16296,78),subtraction(multiplication(-1,5263),40)))'));
-
уже потом оффлайн
-
ну вот я через while сделал за 10 минут.
-
Fucktards
-
ну що хто грав як вам
23 Jan 2023, 01:02
593234/647407
29 Mar 2025, 13:52