Вход
Быстрая регистрация
Если вы у нас впервые: О проекте FAQ
0

В чем программист бы написал данную программу (см. внутри)?

34t634whb43 [118] 2 года назад

У программы следующий функционал:

Вписываем в нее числа от 00 до 55. Она их разделяет на три категории. Числа попавшие в первую категорию - оцениваются в 1,5, во вторую - в 1, в третью - в 0,5. Затем эти оценки складываются (допустим 1,5+1,5+1+1+1+0,5...) и умножаются на заданное число. Допустим три.

Вероятно что-то похожее можно создать и в excel?

alexm12 [163K]
по какому принципу разделяются числа?  2 года назад
34t634whb4­3 [118]
Первая категория двухзначные без нуля (11, 12, 22...), вторая двухзначные с нулем (20, 30... Кроме 10), третья (0 и 10).  2 года назад
alexm12 [163K]
тут проще и быстрее вручную посчитать...  2 года назад
34t634whb4­3 [118]
Может быть и легче. Но тем не менее.  2 года назад
комментировать
1

Я бы на SWI Prolog написал:

cost(Numbers, Mul, Result):-

Third = [0, 10],

Second = [20, 30, 40, 50, 60, 70, 80, 90],

findall(Number, (between(11, 99, Number), + member(Number, Second)), First),

findall(1.5, (member(Number, Numbers), member(Number, First)), FirstCosts),

findall(1, (member(Number, Numbers), member(Number, Second)), SecondCosts),

findall(0.5, (member(Number, Numbers), member(Number, Third)), ThirdCosts),

sum_list(FirstCosts, FirstCost),

sum_list(SecondCosts, SecondCost),

sum_list(ThirdCosts, ThirdCost),

Result is (FirstCost + SecondCost + ThirdCost)*Mul.

Для запуска программы надо установить интерпретатор (бесплатный он, скачивается с официального сайта - есть версии для Windows, MacOSX и Linux {для андройда тоже есть, но я не пробовал}).

Вы тут писали, что хотите найти наиболее простой инструмент - ну я не уверен, что это пролог, хотя на harbrahabr есть статья "Как объяснить своей младшей сестре (9 лет) принципы логического программирования?" и это статья про Prolog. Ну а еще, загляните в эту статью "Введение в логическое программирование (Prolog)" - там объясняется все на нескольких простых примерах (чуть более приближенных к жизни, чем на хабре) и есть интересные ссылки на другие источники.

Плюс в том, что программы на прологе легко читаются. Ну вот например:

Third = [0, 10],

Second = [20, 30, 40, 50, 60, 70, 80, 90],

findall(Number, (between(11, 99, Number), + member(Number, Second)), First),

Тут написано - помести в третий список числа 0 и 10, во второй - 20, 30, ..., 90. А в третий - все числа от 11 до 99 (их генерирует встроенный предикат between, да такие, что они не входят во второй список. Тут немного плохо читается + member(Number, Second), но он может быть заменен на NOT(member(Number, Second))

findall(1.5, (member(Number, Numbers), member(Number, First)), FirstCosts),

Выбери среди чисел, поданных на вход (Numbers) число (Number), да такое, что оно входит в первый список. Для каждого найденного числа запиши в выходной список 1.5.

Аналогично для второго и третьего работает. Ну а дальше вычисляются суммы списков, складываются и умножаются на множитель. Я думаю, проще некуда - разберется даже ребенок.

Пример использования

0

В том что под рукой и/или чем он лучше всего владеет. Задачка не сложная, для решения любой инструмент подойдет.

Если вы хотите, то и Эксель пойдет, он поддерживает Вижуал Бейсик.

34t634whb4­3 [118]
Я хочу найти наиболее простое решение, для того что бы самостоятельно это сделать. От программирования далек.  2 года назад
alexm12 [163K]
наиболее просто посчитать вручную  2 года назад
комментировать
Знаете ответ?
Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее..
регистрация
OpenID