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

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

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

Хорошая работа. Сделано очень много, попытались решить все задачи,
да ещё в разных вариантах. Понравились обе творческие задачи.
Большинство алгоритмов хорошо описаны. Молодцы!

Замечания: это большое количество не позволило оптимизировать
алгоритмы и снизило качество решений и особенно качество текста программ. 
Большинство программ трудно воспринимаются глазами из-за неструктурной записи,
в некоторых не хватает комментариев.  Почти все программы "оштрафованы"
мной за оформление от 0.2 до 1 балла.

Предвижу первоначальную обиду ребят за снижение оценкок по причине
неуниверсальности алгоритма в задачах 9 и а.

Поясню сразу: прописывание частных вариантов (даже "всех" с учетом
ограничений среды Корректора) НЕ ЕСТЬ решение алгоритмической задачи.
Потому что, по аналогии с математикой, нужно найти такую "функцию" F,
что она преобразует исходные данные х в результат у:

       у=F(х),

причем непрерывно, а не для отдельных "точек" на "оси" х.

Возможно, "из-за" вашей победы в первом турнире я ждал от команды большего
и был несколько жестковат. Апелляции принимаются :-). Особенно обоснованные.


Оценки за решения задач и комментарии
_____________

Задача 1

Автор решения   0811 
       Валинуров Алексей

О ц е н к а  1,5 балла из 2.
Комментарий: нет имени процедуры в окне команд, погрешность в 
структурной записи цикла ПОКА. Вместо команд

 ЯЩИК+                                  
 ПИШИ ПУСТО                             

лучше использовать команду ОБМЕН.

       _______________

Автор решения  0812
       Курдюк Сергей

О ц е н к а  1,5 балла из 2.
Комментарий: в программе несколько лишних команд,
нет структурных сдвигов, комментариев.
    _______________
                        
Задача 2

Автор решения   0821                 
       Валинуров Алексей

О ц е н к а  2 балла из 3.
Комментарий: два прохода вместо одного, команда "ВПРАВО" в обеих
ветвях конструкции ЕСЛИ, погрешности оформления.
       _______________

Автор решения   0822      
       Курдюк Сергей

О ц е н к а  2 балла из 3.
Комментарий: три прохода вместо одного, рекурсивный вызов внутри
цикла ПОКА, погрешности оформления.
       _______________

Задача 3

Автор решения   0831    
       Валинуров Алексей

О ц е н к а  2 балла из 3.
Комментарий: программа не обрабатывает символы 0,1,...9 ("не могу!);
лишние движения по ленте. Если символ- не цифра, можно сразу "вычитать"
из него 10. Неструктурная запись.
       _______________

Автор решения   0832
       Курдюк Сергей

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

Задача 4
Автор решения   0841                   
       Токарев Денис 

О ц е н к а  4,5 балла из 5.
Комментарий: Неоптимальный алгоритм (полусумма), лучше "сближать" символы,
вычитая по 1 от большего и прибавляя к меньшему. Это позволит усреднять
два ЛЮБЫХ символа, а не только те, которые в сумме не больше 69.
Погрешности оформления.
       _______________

Автор решения   0842     
          Курдюк Сергей

О ц е н к а  4 балла из 5.
Комментарий: Очень неоптимально: много "беготни" при делении.
Нет структурных сдвигов.
       _______________

Задача 5

Автор решения   0851
       Токарев Денис

О ц е н к а  5,8 балла из 6.
Комментарий: шифр отгадан и запрограммирован верно.
Снижено за погрешность в оформлении и за отсутствие комментариев.
       _______________

Задача 6
Автор решения   0861            
        Токарев Денис

О ц е н к а  4.7 балла из 5.
Комментарий: Шифр разгадан верно, но реализован немного другой алгоритм.
Он интересный, но "перепрыгивание через символ" приводит
к лишним командам в цикле. Погрешности оформления.

Задача 7        

Автор решения   0871            
       Токарев Денис

О ц е н к а  6,5 баллов из 7.
Комментарий: Очень хороший, оптимальный алгоритм. Жаль, не описаны
отдельно случаи, когда первый сомножитель 0 и 1.
Очень долго умножает, например, 0 НА @. Погрешности оформления.
       _______________

Автор решения   0872            
       Валинуров Алексей

О ц е н к а  1 балл из 7.
Комментарий: Программа отказывается умножать что-либо на 0;
не проходят тесты 6*6 (результат 6), 5*6 (результат 5) и т.д.
       _______________

Задача 8        

Автор решения   0881
       Токарев Денис

О ц е н к а  6,5 баллов из 7.
Комментарий: Хорошее решение. Не учтено отдельно деление на 1, 
погрешности оформления.
       _______________

Задача 9        

Автор решения   0891          
       Валинуров Алексей

О ц е н к а  2 балла из 9.
Комментарий:  универсальный алгоритм не найден. Частный алгоритм не
является решением программисткой задачи. 
Не проходят тесты 0~5, 1~5, 4~3.
Погрешности оформления.
       _______________

Задача a

Автор решения  08a1
       Курдюк Сергей        

О ц е н к а  5 баллов из 10.
Комментарий: универсальный алгоритм не найден. А найденный, частный,
очень неоптимален и запутан. Просто удивительно, что программа работает!
Чтобы сократить дробь 2/4, выполняется уйма действий.
Не предусмотрена проверка делимого на 1.
Погрешности оформления.
Оценка 5 - за большие труды по проверке "всех" :-) простых чисел.
       _______________

Задача b

Автор решения   08b1      
       Курдюк Сергей

О ц е н к а  2 балла из 8.
Комментарий: не проходят тесты:
0, 1, 3, 6, 7. Что удивительно, правильно обрабатывает @ !
Много "беготни" по ленте. Найти ошибки в программе, по-моему,
невозможно ввиду плохого оформления.
       _______________

Задача с

Автор решения   08с1           
       Курдюк Сергей

О ц е н к а  5 баллов из 7.
Комментарий: программа зацикливается, если исходная строка содержит
один символ (. Идея решения верная, но искать ошибку в реализации
крайне неудобно. ОФОРМЛЕНИЕ!
       _______________

Задача d 

Авторы решения   08d1             
       Валинуров Алексей
       Курдюк Сергей

О ц е н к а  8,5 баллов из 12.
Комментарий:

Определение ошибок не содержит, но может быть записано короче:

<Выражение> ::= <Цифра> | (<Цифра>+<Цифра>) | <Выражение>+<Выражение>
<Цифра>     ::=0|1|2|3|4|5|6|7|8|9

Оценка за определение 2,5 балла.


Диаграмма переходов не нарисована (а зря!), а её описание
содержит ошибку в "Состояние2":
-------------------------цитата-------------------------------------
 
                                   Состояние2
 4+        (                       
           Цифра                  Если ПУСТО то Ошибка 
                                  Иначе если Цифра то Состояние1
                                        иначе если ( то Состояние10 
--------------------конец цитаты------------------------------------

Здесь нет перехода на ошибку при постороннем символе.


К сожалению, вы не воспользовались условием "ЦИФРА" в конструкции ЕСЛИ,
поэтому программная реализация состояния 12 (правильного на схеме):

----------------------------цитата----------------------------------
                                   Состояние12

 (4+        Цифра                 Если Цифра то Состояние13 
 4+(4+                            Иначе Ошибка
----------------------конец цитаты----------------------------------


ошибочно принимает символ "ПУСТО" за цифру, т.к. ПУСТО < а. Поэтому
место ошибки определяется неточно (а по сути ошибка пропускается).           

Оценка за "диаграмму" 3 балла.

Количество состояний в вашей программе, как и у меня, 7 (не считая двух
конечных).

Опровергающие тесты: 

2+(4+  - окно не на месте ошибки
2+("   - окно не на месте ошибки
2+к    - нет сообщения об ошибке

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

Оценка за программу-транслятор 3 балла.

Метод вы почувствовали, но зря не применнили полностью (рисунок, имена
процедур, правильная запись переключателей).  Рекомендации А.А.Дуванова
уберегли бы вас от ошибок.
       _______________
 
    Задача е "Цепочка"

Автор задачи    08е1             
       Токарев Денис

О ц е н к а  9 баллов (2+4+3) из 15 .
Комментарий:
За формулировку 2 балла. Замечания:
  
1)В условии не указано начальное положение окошка (а только в примере).
2)Понятие "сложить символы" следует определить строго.
3)Неточность:
------------цитата-----------------------
 не включать сами символы. Сумма символов
 не должна превышать 69, и она должна
 быть всегда больше расстояния. 
-----------конец цитаты------------------

нужно указать точнее:
...быть больше СУММЫ расстояний (или расстояния между
левым и правым символом) 
Думаю, "пустоту" между символами лучше заменить пробелами, чтобы
"запись" всё-таки имела начало и конец.

За новизну и красоту 4 балла. Интересна сама тема задачи,
в которой соединены геометрия (расстояния) и алгебра (значения
символов). Думаю, тема будет развита в будущем сезоне.
(естественно, со ссылкой на автора)

За качество решения 3 балла. 
Не описан алгоритм, есть лишние проходы. 
       _______________

    Задача е "Тайна"

Автор задачи    08е2             
       Валинуров Алексей

О ц е н к а  13 баллов из 15(3+6+4).
Комментарий: очень удачная идея, специально для Корректора! Если вашу
задачу усложнить (на ленте ключевое слово и зашифрованный текст,
требуется расшифровать), то, я думаю, задачка будет прекрасная,
с красивым решением. Просто руки зачесались :-). Думаю, у вас тоже.

Формулировка:      3 балла (замечаний нет, есть спасибо, помогли улыбнуться)
Новизна и красота: 6 баллов (см. выше)
Качество решения:  4 балла (не описан алгоритм, неструктурная запись)

Это (см. ниже) - не описание алгоритма, правда :-) ? 

-----------цитата----------------------
  Корректор дешифрует тект используя
шифр Винежера. ключевое слово из текта:
ОКОШКО, используя ключевое слово,
исполнитель дешифрует текст.
-------конец цитаты--------------------

А жаль, ведь алгоритм весьма интересный. 
