Блог*
前往频道在 Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
显示更多1 923
订阅者
+224 小时
无数据7 天
-1130 天
帖子存档
1 923
Disclaimer: я эту задачу уже решил (и выложу решение немного позже), но я хочу посмотреть ваши решения. Если надо, могу скинуть тесты для проверки.
1 923
Чат*, у меня для вас задачка.
Есть вот такое простенькое AST для подмножества арифметических выражений:
enum Expr {
Lit(i32),
Neg(Box<Self>),
Add(Box<Self>, Box<Self>),
}
(взял отсюда, да)
Напишите код для вывода этих выражений так, чтобы:
* в них были корректно расставлены скобки (в частности, никаких два знака операции подряд)
* с учётом ассоциативности сложения (то есть add(lit(1), add(lit(2), lit(3))) должно выводиться, как 1 + 2 + 3, а не 1 + (2 + 3))
* без избыточных скобок (в частности, без скобок на топ-левеле и без скобок вокруг положительных литералов).
Отрицание на вычитание переправлять не надо.
Не то чтобы сильно сложная задача, но сложнее, чем кажется на первый взгляд.
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
