Автор Тема: Задачка архитекторная.  (Прочитано 65953 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #90 : Март 29, 2011, 08:30:20 am »
Предлагаю проверить все решения на таком тестовом наборе входных данных:

Возможно, Вы имели в виду вот это?
1   4
=B1+C1   =A1*C1  =A1/B1  'Surprise!

Моё решение:
#Cycle    #Cycle  #Cycle  Surprise!  

Решение Ильина:
#Cycle    #Cycle  #Cycle  Surprise!

Решение vlad'а:
<cycle error> <cycle error> <cycle error> Surprise!
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Задачка архитекторная.
« Ответ #91 : Март 29, 2011, 09:50:37 am »
Хорошо, Илья, предложите более годную объективную метрику.
Алексей предлагал считать лексемы, но это из той же оперы.
Как ещё можно "измерить алгеброй гармонию"?

А что Вы вообще собрались мерять? Если решения чисто реализаторские (быстро реализуем как монолитный компонент), то задача достаточно проста, чтобы всё было примерно одинаково. Ну, зафиксировали количество строк, посравнивали, но удалять пробелы всякие, да ещё архиватором жать, как некоторые - маразм какой-то.

Если тренируемся в архитектуре, в декомпозиции на кубики, то критерии совсем не численные... Как это может развиваться дальше, какие схемы, ценные для решения задач данного класса, выявлены.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #92 : Март 29, 2011, 10:02:38 am »
Объективные критерии -- размер и скорость (разработки программы и её выполнения).
Все остальные критерии субъективны, а потому и с их оценкой постоянно будут проблемы.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #93 : Март 29, 2011, 10:11:55 am »
Хехе, господа, не торопитесь, а то, по сути, вы сейчас пытаетесь вычислить скорость зная только одну точку. :-)

PS. А сжатие это хороший метод измерения количества информации в решениях, и хороший критерий позволяющий оценить насколько близок исходник к содержимому /dev/random :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #94 : Март 29, 2011, 10:24:35 am »
Сравнивая разные решения обратил внимание, что моя программа выдаёт лишние табуляции в конце каждой строки и лишнюю пустую строку после самой таблицы.
Возможно, это недопустимо, поэтому поправил пару строк в программе.
locs увеличился на одну строку: 215
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #95 : Март 29, 2011, 11:37:26 am »
Возможно, Вы имели в виду вот это?
1   4
=B1+C1   =A1*C1  =A1/B1  'Surprise!

Да, конечно. Вы правы  :-[

AlexIljin

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #96 : Март 29, 2011, 11:45:49 am »
Если в программе vlad'а удалить функцию test (и её вызов), то вот ещё -38 строк...
Это я уже сделал и учёл в подсчётах.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #97 : Март 29, 2011, 11:52:16 am »
Предлагаю проверить все решения на таком тестовом наборе входных данных:
1  4
=B1+C1   =A1*C1  =A1/B1  'Surprise!

Моё решение:
#Cycle  #Cycle  #Cycle  Surprise!  

Решение Ильина:
#Cycle    #Cycle  #Cycle  Surprise!

Решение vlad'а:
<cycle error> <cycle error> <cycle error> Surprise!


Единодушное решение.  :)

Я хотел было "повякать" ( :)) на тему, что необходимость в решении системы из N уравнений с N неизвестными ещё не даёт оснований для того, чтобы объявлять об ошибке во входном наборе данных. Но что-то меня от этого удерживает. Наверное то, что суть задачи всё-таки была не в этом. Но формально я прав.  :)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #98 : Март 29, 2011, 12:25:19 pm »
Решение vlad'а:
<cycle error> <cycle error> <cycle error> Surprise!

Вообще-то тут видно, что vlad сделай как минимум один fail -- невнимательно прочёл условия задачи:

- В случае любой ошибки вычисления формулы, вычисляемая ячейка должна содержать
   слово-сообщение об ошибке, начинающееся с символа '#'. Используйте короткие,
   ясные сообщения. Не надо предоставлять подробности об ошибках в выводе.

Сообщения об ошибках нужно помечать решёткой, а не заключаться в треугольные скобки...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #99 : Март 29, 2011, 12:30:15 pm »
Я хотел было "повякать" ( :)) на тему, что необходимость в решении системы из N уравнений с N неизвестными ещё не даёт оснований для того, чтобы объявлять об ошибке во входном наборе данных. Но что-то меня от этого удерживает. Наверное то, что суть задачи всё-таки была не в этом. Но формально я прав.  :)

Справедливости ради должен заметить, что тот же самый Эксель тоже ругается на циклические ячейки в Вашем тесте.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #100 : Март 29, 2011, 12:54:04 pm »
Справедливости ради должен заметить, что тот же самый Эксель тоже ругается на циклические ячейки в Вашем тесте.

Да. И причина этого ясна. В общем случае решение исключительно сложное, если вообще возможно. И это скорее всего не то, что хочет пользователь.

По хорошему, в условии задачи должна быть строчка, что-то типа: "Циклические ссылки считать ошибкой". То есть данное замечание у меня относится не столько к предоставленным решениям, сколько к самой задаче.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #101 : Март 29, 2011, 12:59:07 pm »
По хорошему, в условии задачи должна быть строчка, что-то типа: "Циклические ссылки считать ошибкой". То есть данное замечание у меня относится не столько к предоставленным решениям, сколько к самой задаче.

По идее задачи, испытуемый должен был догадаться об этом самостоятельно...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #102 : Март 29, 2011, 01:04:23 pm »
По идее задачи, испытуемый должен был догадаться об этом самостоятельно...
Нет. У испытуемого просто не остаётся выбора. Иначе ему пришлось бы "убиться головой об стену".   ;D

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #103 : Март 29, 2011, 01:58:20 pm »
Я насчитал целых 4 решения - оберон-2, КП, хаскель, С++. Классно! :)

В джаббере я скидывал Алексею ссылки на кучу ещё решений, там были на яве, вроде, ещё на лиспе, на сях и с++ несколько, несколько вариантов на том же хаскелле, вариант на эрланге...


Ну так это... сюда их! :)

Вот с замером этой самой скорости на текущем размере таблицы 26*9 проблемы -- любая таблица будет расчитана за доли секунды.

Ограничений на размер формулы нет ;) A1*A2...

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #104 : Март 29, 2011, 02:01:21 pm »
Какая-то метрия неинтересная началась, коллеги :) Как это бывает с производительностью. Признак нехорошего зуда в одном месте. Какая разница - + 100 строк, - 100 строк?

Согласен. Строки - неинтересно, особенно с учетом произвольного форматирования. Но вот порядок (100 или 10) - таки может быть показателен. Ну, и конечно, какие-нибудь другие метрики.