Como preencher um quadrado com quadrados / retângulos menores?

Em meu escritório no trabalho, não podemos pintar as paredes, então decidi enquadrar quadrados e retângulos, prender um tecido bonito a eles e arrumá-los na parede.

Eu estou tentando escrever um método que terá minhas dimensões de entrada (9 'x 8' 8 ") e min / max tamanho (1 'x 3', 2 ', 4', etc.) e gerar um padrão aleatório de Quadrados e retângulos para preencher a parede Eu tentei fazer isso manualmente, mas eu não estou feliz com o layout que eu tenho, e leva cerca de 35 minutos cada vez que eu quero 'randomizar' o layout.

questionAnswers(10)

yourAnswerToTheQuestion