Роботландский Университет 01/02
Турнир Корректора

Рецензия куратора на работу команды 3111

Общее впечатление: отлично!

Работа сделана огромная, верно решены почти все задачи.
Работа очень хорошо оформлена, проверять было приятно. 
За доставленное удовольствие - спасибо + бонус 2 балла.

----------------------------------------------
Задача 1 "Сколько палочек?" (2 балла)
 
Авторы решения 1111: Тюкин Сергей и Усик Михаил                                        
Авторы решения 1112: Пранис Ксения, Алесенко Ольга        

О ц е н к а: 2 балла
Комментарий: оба варианта решения грамотно составлены и отлично оформлены,
алгоритмы толково объяснены. В первом варианте эффектно применена рекурсия
и использована по делу. Во втором варианте - классическое решение с циклом
"пока" без всяких замечаний. Правильные имена процедур.
Все авторы молодцы.
                                       
------------------------------------------
Задача 2 "Поиск максимума" (3 балла) 

Авторы решения: Тюкин Сергей и Усик Михаил                                        
О ц е н к а : 3 балла
Комментарий: никаких замечаний.

------------------------------------
Задача 3 "Символ в число" (3 балла)  

Авторы решения: Тюкин Сергей, Усик Михаил, Тушин Анатолий

О ц е н к а: 3 балла
Комментарий: решение универсальное, программа работает для всех
допустимых значений. Есть неоптимальность: уменьшать символ
(если он не цифра) можно и нужно СРАЗУ НА 10, добавляя в следующий разряд
единицу. Кроме того, следовало бы избежать лишней "беготни" по ленте.
--------------------------------------
Задача 3 "Символ в число" (3 балла)  

Автoр решения: Елфимова Алена 

О ц е н к а: 3 балла
Комментарий: спасибо Алёне за остроумную идею, замечание по оптимальности
такое же, как к предыдущему решению. Сохранение исходного символа, наверное,
украшает ленту, но условием не требовалось.
------------------------------------------------
Задача 4 "Среднее арифметическое"    (5 баллов)                           

Авторы решения: Тюкин Сергей и Усик Михаил   

О ц е н к а: 5 баллов
Комментарий: решение верное в условиях соглашений. И всё-таки лучше
не вычислять полусумму, а "сближать" числа. Это позволит расширить
множество исходных данных (усреднять любые "числа" от 0 до @ ) и
ускорить работу программы.

-------------------------------------                                       
Задача 5 "Разгадай шифр 1" (6 баллов)

Автор решения: Пранис Ксения

О ц е н к а: 6 баллов
Комментарий: Нет замечаний. Образцовое оформление.

--------------------------------------
Задача 6 "Разгадай шифр 2" (5 баллов)                           

Авторы решения: Понамарева Юля, Наймушин Кирилл

О ц е н к а: 5 баллов
Комментарий: Алгоритм несколько "замудрён" (без "Коррекции" вполне можно
обойтись, если начать со 2-го символа), но абсолютно верный.

-------------------------------
Задача 7 "Умножение" (7 баллов)      
        
Автор решения: Пранис Ксения

О ц е н к а: 7 баллов
Комментарий: Верное добротное решение. Применение рекурсии при сложении
не очень оправдано, естественней (и экономичней) было бы применить цикл ПОКА.

-------------------------------
Задача 7 "Умножение" (7 баллов)      

Авторы решения: Селяхин Алекскй Лебединская Света

О ц е н к а: 6 баллов
Комментарий: программа дает верные результаты. Но из-за злоупотребления
рекурсией процедуре "Сложи" возникли "лишние" отложенные команды

 ПИШИ ПУСТО                            
 ПОВТОРИ 2 ВЛЕВО ,

из-за которых приходится "искать" запись на ленте. Причем поиск 
организован через уйму пустых клеток (за это минус балл).                     

-----------------------------------------
Задача 8 "Деление с остатком"(7 баллов)                           

Автор решения: Пранис Ксения

О ц е н к а: 6.5 балла
Комментарий: не очень понятно, зачем делить "по Евклиду".
Можно ведь просто уменьшать делимое на делитель, пока делимое
остается больше. При делении нуля на любое число в ящике не показывается
остаток "0".

-----------------------------------------
Задача 9 "Возведение в степень"(9 баллов)                           

Автор решения: Пранис Ксения 

О ц е н к а: 9 баллов
Комментарий: программа сработала на всех моих тестах без замечаний.
Алгоритм можно оптимизировать, избавившись от переносов.

--------------------------------------
Задача а "Сократить дробь"(10 баллов)

Автор решения: Пранис Ксения 

О ц е н к а: 9 баллов (одинаково за оба варианта)
Комментарий: Алгоритм абсолютно верный, но в реализации есть шероховатости:
1) Происходит авария (Не могу!) при @ в знаменателе, кроме случаев,
когда НОД>1. Следовало бы случай, когда НОД=1 (дробь несократима),
прописать отдельно. А без этого бедняга-Корректор делит на 1 и числитель,
и знаменатель. 
2) Программа зацикливается при нуле в числителе.

--------------------------
Задача b "Антиавтомат" (8 баллов)    

Автор решения: Пранис Ксения 

О ц е н к а: 8 баллов
Комментарий: решение верное, программа работает для всех символов Корректора.
Алгоритм не совсем оптимален из-за излишней рекурсивности.

------------------------------
Задача с "Скобки" (7 баллов)         

Авторы решения: Самак Катя, Ивансон Света,Пермякова Катя,Хасанова Наиля

О ц е н к а: 7 баллов + бонус 1 балл
Комментарий: Очень остроумно и оптимально! Появление символа ПУСТО
использовано и для сигнала об ошибке (НЕ ЦИФРА, и вычитать больше нельзя),
и для определения конца записи. Молодцы, девочки! Бонус 1 балл.

------------------------------------------
//Задача d  Проверка выражения.(12 баллов)                          

Автор решения: Пранис Ксения 

О ц е н к а: 4 балла
Комментарий: 

1) Нет строгого определения выражения в нотации Бэкуса-Наура (0 баллов)
2) Нет диаграммы переходов                                   (0 баллов)
3) В программе есть ошибка                                   (5-1=4 балла)

Это только кажется, что без 1) и 2) все и так ясно!       
Запись (1+() обрабатывается неверно. Вы бы ни за что не ошиблись,
если бы нарисовали диаграмму переходов. А ошибка вкралась в ваше рассуждение

//За "(" может быть только цифра и     
//через 3 символа ")" иначе ошибка     

Его надо заменить на такое:
"за "(" обязательно идет цифра, за ней обязательно "+",
за ним обязательно цифра, за ней обязательно плюс ")", иначе ошибка.

Я "подсунул" вашей программе "(" вместо цифры после "+", и она неверно
определила место ошибки, пропустив вложенную скобку.
                                       
Диаграмма переходов наглядна (см. решение автора) и ОЧЕНЬ ПОМОГАЕТ
не сделать ошибок в программе.
---------------------------
Задача е (до 15 баллов).             
 Написать программу иммитирущую электронные часы.                   
                      
Авторы решения: Тюкин Сергей и Усик Михаил

О ц е н к а: 8 баллов
Комментарий: задача интересная и эффектная.
Качество формулировки - 3 балла (нет замечаний, кроме орфографии)
Новизна и красота - 3 балла из 6 (новая, но стандартная задача
на применение циклов).
Качество решения - 2 балла, т.к. дольше 5 минут 35 секунд часы не работают
:-(переполнение стека интерпретатора). А это серьезный недочет для такой
задачи. Рекурсия здесь не только не нужна, но и вредна. Она увеличивает 
содержимое стека каждую секунду, никогда не освобождая его!
Пружинка сжимается-сжимается, и в конце концов лопается!
А нужна ли в электронных часах пружинка :-) ?

----------------------------------------
Задача е (до 15 баллов).             
На ленте записано число от 1 до 7 и восклицательный знак, который        
означает нахождение факториала числа. Найдите факториал записанного числа. 
Вначале курсор установлен на знак !. Например 5!=1*2*3*4*5=120.           
                                       
Авторы решения: Топилин Александр 

О ц е н к а: 11 баллов
Комментарий: задача для Корректора новая и хорошо дополняет серию вычислений
на ленте. Объем выполненной программистами и Корректором работы впечатляет!
Саша просто молодец! Думаю, он хорошо прочувствовал, как непросто написать
арифметические функции для широкого диапазона чисел. Ведь реальный калькулятор,
(и любой процессор), выполняя все сложные операции, тоже работает только 
с помощью сумматоров!

Качество формулировки - 3 балла 
Новизна и красота - 5 баллов
Качество решения - 3 балла. Трудов затрачено много, но:
- алгоритм не универсален (прописано ограниченное число вариантов, а общей
идеи нет)
- в принципе можно снять ограничение на число (удлиннив ленту), а сложение
выполнять поразрядно, работая с десятичными записями, тем самым оптимизировав
алгоритм сложения для многоразрядных чисел.
