Version 1 by Olga Koneva
on Jan 11, 2016 19:21.

compared with
Current by egor.blagov
on May 06, 2020 15:37.

Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (9)

View Page History

Эти ограничения введены для упрощения разбора выражений, поскольку разбор выражений не является основной частью проблемы. Вы можете спокойно положиться на эти ограничения. Вот грамматика содержимого ячейки:
!Снимок экрана 2016-01-11 в 17.53.57 (2).png|width=300!

{code}
expression ::= '=' term {operation term}*
term ::= cell_reference | nonnegative_number
cell_reference ::= [A-Za-z][0-9] --
operation ::= '+' | '-' | '*' | '/'
text ::= '\'' {printable_character}
{code}

*Процесс обработки *

Пример данных:

!Снимок экрана 2016-01-11 в 18.09.21 (2).png|width=300!\\
{code}
3 4
12 =C2 3 'Sample
=A1+B1*C1/5 =A2*B1 =B3-C3 'Spread
'Test =4-3 5 'Sheet
{code}
Ожидаемый вывод:

!Снимок экрана 2016-01-11 в 18.16.53 (2).png|width=300!
{code}
12 -4 3 Sample
4 -16 -4 Spread
Test 1 5 Sheet
{code}
*Указания по решению*


Необходимо промышленное качество кода. Более короткое и читаемое решение предпочтительней. Решение должно содержать тестовые примеры и код, использованные в процессе создания решения. Не забудьте откомментировать код в ключевых местах. Код должен быть устойчив к ошибкам. Задание можно выполнить на любом языке программирования. 
Представьте, что это требования к первой фазе проекта. Необходимо реализовать только то, что нужно на этой фазе. Однако, известно, что планируется вторая фаза, в которой требования будут расширены следующими:

* Расширить формулы операциями над строками.
* Оптимизировать производительность для громадных таблиц.

Вам необходимо указать, какие изменения необходимо сделать для реализации второй фазы проекта.

Задание можно выполнить на любом языке программирования.