Dan
Книжки почитай чтоли
Dan
За тебя никто тут ничего делать не станет
Lupusregina[beta]
проще нет способа
Roman
Парни надо помощь.Safari сам проматывает скролл элемента вверх.С чем связанно такое поведение?
Lupusregina[beta]
кстати, дальше для работы с токенами нужен способ их перебирать, в перед, назад. Копировать состояние(курсор)
Lupusregina[beta]
для этого я написал простенький класс
Lupusregina[beta]
class Each {
constructor(array, index = 0) {
this.array = array;
this.index = index;
}
get(offset = 0, move = 1) {
const index = this.index + offset;
this.index += move;
return this.array[index];
}
clone() {
return new this.constructor(this.array, this.index);
}
}
Syntax Highlight Bot
Lupusregina[beta]
Ну что? решил?
Lupusregina[beta]
блин. ток за обратил внимание что регулярку нельзя
Lupusregina[beta]
ыыы
Lupusregina[beta]
ну что
Lupusregina[beta]
я решил ее уже
Lupusregina[beta]
tokenize(source) {
const eachChars = new Each([...source]);
const NUM_CHARS = ["."];
for(let i = 0; i < 10; i++)
NUM_CHARS.push(String(i));
const tokens = [];
for(let char; char = eachChars.get(); ) {
if ( ["*", "/", "+", "-", "(", ")"].includes(char) )
tokens.push(char);
let num = "";
while( NUM_CHARS.includes(char) ) {
num += char;
char = eachChars.get();
}
if ( num.length ) {
tokens.push(num);
eachChars.get(0, -1);
continue;
}
}
return this.tokenizePrepare(tokens);
} вот версия токенайзера без регулярки
Syntax Highlight Bot
Lupusregina[beta]
показать решение? или будешь сам решать
Lupusregina[beta]
https://codepen.io/RainNeko/pen/WqqJag?editors=0012 вот кароче решение
Lupusregina[beta]
Вот картинка, наглядно показывающая принцип работы
Lupusregina[beta]
где
Lupusregina[beta]
нету там эвала
Lupusregina[beta]
ну так ты полностью копируешь, а надо до тестов
Lupusregina[beta]
мда.
Ну скопируй все классы и конастанты и добавь снизу фунцию
var calc = function (expression) {
return (new EvalExpr).calc(expression);
}
Syntax Highlight Bot
Lupusregina[beta]
получилось?
Lupusregina[beta]
хм.
Она принимает список токенов, без скобок "(" ")".
const nodes = [];
eachTokens.toEnd();
for(let t; t = eachTokens.get(0, -1);)
nodes.push( t instanceof Token &&
t.type & T_OPERATOR_UNARY ?
new Node(t.type, t.value, nodes.pop()) : t );
Вначале она проходит по всем токенам справа на лево, заменяя унарные операторы, на узел( с унарным оператором + токеном справа).
nodes.reverse(); - тут востанавливается порядок.
eachTokens = new Each(nodes);
for(const operators of operatorsOrder) {
again:
while(1) {
eachTokens.toStart();
for(let t; t = eachTokens.get();) {
if ( t instanceof Token &&
operators.includes(t.value) ) {
nodes.splice(eachTokens.index - 2, 3,
new Node(t.type, t.value, eachTokens.get(-2, 0), eachTokens.get(0, 0)) );
continue again;
}
}
break;
}
} А тут, мы перебираем все наши операторы, в порядке от наиболее выского приоритета к наиболее низкому.
Если есть такой оператор, то заменяем его и стоящие слева и справа токены на один узел, и потороряем перебор токенов сначала.
Dan🔰
Кто знает как это избежать?
Dan🔰
Dan🔰
Я пытаюсь взять содержимое iframe с помощью расширений chrome
Славик
надо вот запрещать HRам вбрасывать вакансии вообще =)
MVD
Славик
да там был спам, спрятанный под вакансию
MVD
хм.
Она принимает список токенов, без скобок "(" ")".
const nodes = [];
eachTokens.toEnd();
for(let t; t = eachTokens.get(0, -1);)
nodes.push( t instanceof Token &&
t.type & T_OPERATOR_UNARY ?
new Node(t.type, t.value, nodes.pop()) : t );
Вначале она проходит по всем токенам справа на лево, заменяя унарные операторы, на узел( с унарным оператором + токеном справа).
nodes.reverse(); - тут востанавливается порядок.
eachTokens = new Each(nodes);
for(const operators of operatorsOrder) {
again:
while(1) {
eachTokens.toStart();
for(let t; t = eachTokens.get();) {
if ( t instanceof Token &&
operators.includes(t.value) ) {
nodes.splice(eachTokens.index - 2, 3,
new Node(t.type, t.value, eachTokens.get(-2, 0), eachTokens.get(0, 0)) );
continue again;
}
}
break;
}
} А тут, мы перебираем все наши операторы, в порядке от наиболее выского приоритета к наиболее низкому.
Если есть такой оператор, то заменяем его и стоящие слева и справа токены на один узел, и потороряем перебор токенов сначала.
админы, может хватит этот флуд поощрать? Устроили в публичном чате обсуждение школьных задач. Создайте себе отдельный, или идите в лс. От этих кат уже глаза вянут
Славик
то есть копипаста вакансий по чатам настолько приевшийся тренд, что даже спамеры это используют
Lupusregina[beta]
Славик
о, давайте баттл
Славик
возьмите задачу и решите ее
Славик
проигравший делает как победитель скажет
Славик
в вашем случае если MVD решит, то лупус больше о катах в этом чате ни слова
Славик
в обратном случае MVD не будет против кат
MVD
Славик
так такие замесы только укрепляют дружбу
MVD
MVD
Я просто высказал свое мнение. Люди заходят спросить чтото важное, но оно теряется
Славик
спросить очередной учебник по Js?
Lupusregina[beta]
Denis
Denis
Bitcoin (BTC) !btc
==================
$ 10791.3509297
₽ 675877.416618
==================
-0.340% / 1h
+1.600% / 24h
-11.640% / 7d
Updated: 01:04:16
Syntax Highlight Bot
Denis
Я теперь предлагаю курс битка
kolay
Как сделать чтобы base class в приоритете вызвал метод дочернего класса, а он свой
kolay
Denis
Base class ничего не знает о дочерних
kolay
javascript
class A {
constructor () { m() }
m = () => console.log('a')
}
class B extends A {
m = () => console.log('b')
}
new B()
Denis
kolay
Denis
А не в курсе что его экстендит В
kolay
Только делать super?
Denis
class A {
constructor () { m() }
m () {
console.log('a')
}
}
class B extends A {
m () {
console.log('b')
}
}
class C extends A {
m () {
console.log('c')
}
}
class D extends A {
m () {
console.log('d')
}
}
Какого класса метод должен будет вызвать А?
Syntax Highlight Bot
Denis
Да и стрелочные там не будут работать
kolay
?
Denis
??
kolay
Почему
Denis
Попробуй
kolay
В 12 ноде уже есть class properties
Anonymous
Кто может с докерами помочь?
Lupusregina[beta]
kolay
ReferenceError: m is not defined at new A (repl:2:20) at new B (repl:1:1)
kolay
странно
Denis
kolay
а
kolay
> new B()
a
B { m: [Function: m] }
kolay
в cpp есть virtual методы
Denis
kolay
Норм, придётся избавится от arrow функций