Говорят, наш брат Сизиф был проклят аналогичным образом: брутфорсил какие-то простые формулы, и даже получал какой-то результат, но результат его всегда разочаровывал.
Для начала придерусь к коду: n["T"] удобнее записывать в более компактной форме n.T. На результат не повлияет, но код станет светлее. Но твой код погубило не это. Он выдает именно тот результат, который и должен. Брутфорс тут вообще не нужен. x,y,z = maxX,maxY,maxZ – вот и вся программа.
Математика здесь такая: при увеличении размера параллелепипеда в любом из измерений его объем растет быстрее площади. А так как твоя печка пытается максимизировать это отношение, то она займет любой доступный ей объем.
В этом контексте имеют смысл две вещи:
1) при заданном одном размере вычислить два оставшиеся;
2) при заданном количестве стройматериала вычислить оптимальные размеры будущего строения.