Перейти к содержимому

Блог qwertyMAN'а

  • записей
    9
  • комментариев
    47
  • просмотров
    38 210

Рассчёт самой эффективной печи Tinkers Construct

qwertyMAN

4 813 просмотра

В общем решил я найти такой размер печи из Tinkers, которая бы тратила меньше всего ресурсов и давала максимальную вместительность при этом. Написал я для этой цели алгоритм с брутом, который проходится по всем вариантам построения и находит самый эффективный.
Скрин:


Vpok06B.png
0oFegqS.png


Код:
http://pastebin.com/B625H8RC
http://pastebin.com/aPz8Faw6

 

В заключении хотелось бы добавить что калькулятор подсчитывает минимальное количество блоков для строительства, что включает в себя только грани печи и пол. Без угловых и рёберных блоков (которые не нужны для работы печи)
100% эффективность означают, что 1 строительный блок эквивалентен 1 слоту вместительности печи.
В первую программу мы вводим только максимальную длинну для всех трёх осей.
Во второй можно вводить разные значения для всех трёх измерений.
И да, я знаю что обе проге выводят всегда один и тот же результат. Такова реальность увы. ;) Я сам был в шоке, что мои подсчёты не дали ожидаемого результата.

 

Может кто знает что я делаю не так? Может сама задумка у меня плохая?

 

P.S. Писал на скорую руку, в выживании в единственном роботе который у меня был. Так что не надо докапываться до названий переменных.



3 комментария


Рекомендуемые комментарии

Алгоритм вроде верный. Вот только смысл от него, если он возвращает всегда максимальные значения.

Видимо, надо алгоритм переписывать, под ввод именно нужного объёма.

Поделиться комментарием


Ссылка на комментарий

Говорят, наш брат Сизиф был проклят аналогичным образом: брутфорсил какие-то простые формулы, и даже получал какой-то результат, но результат его всегда разочаровывал.

 

Для начала придерусь к коду: n["T"] удобнее записывать в более компактной форме n.T. На результат не повлияет, но код станет светлее. Но твой код погубило не это. Он выдает именно тот результат, который и должен. Брутфорс тут вообще не нужен. x,y,z = maxX,maxY,maxZ – вот и вся программа.

 

Математика здесь такая: при увеличении размера параллелепипеда в любом из измерений его объем растет быстрее площади. А так как твоя печка пытается максимизировать это отношение, то она займет любой доступный ей объем.

 

В этом контексте имеют смысл две вещи:

1) при заданном одном размере вычислить два оставшиеся;

2) при заданном количестве стройматериала вычислить оптимальные размеры будущего строения.

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...