42 project: Fillit
Objective: This program reads a series of tetrominos by the standard input (or by the given file) and assembles them together in order to make the smallest square possible.
Notes:
The square printed out as result may have empty spaces. If two or more squares of the same dimension are possible as solution, it prints the one where the first tetromino is most top and then most left (and if the first piece is at the same position in the two solutions it looks for the second one, the third one and so on)