Develop a program that receives only one parameter, a txt file which will contain a list of [**Tetrominos**](https://en.wikipedia.org/wiki/Tetromino) to assemble them in order to create the smallest square possible.
Develop a program that receives only one argument, a txt file which will contain a list of [Tetrominoes](https://en.wikipedia.org/wiki/Tetromino) to assemble them in order to create the smallest square possible.
### Instructions
### Instructions
@ -10,18 +10,14 @@ All files referring to the project, must be in the same folder.
The program must :
The program must :
- Be written in **GO**
- Be written in Go
- Be compiled to be runned
- Compile successfully
- Assemble all of the **Tetrominos** in order to create the smallest square possible
- Assemble all of the Tetrominoes in order to create the smallest square possible
- Show an error if the input doesn't correspond to a classic **Tetromino** piece
- Make the smallest square with the Tetrominoes
- Not allow the rotation of the **Tetrominos**
- Identify each Tetromino in the solution, by assigning different letters to different Tetrominoes
- Organize the **Tetrominos** by their apparition order in the file
- Expect at least 2 tetrominoes in the text file
- Identify each **Tetromino** in the solution, by assigning different charactes to different **Tetrominos**
- Have at least 2 **Tetrominos** in the text file
Some notes:
#### Example of a text File
#### Example of a text File:
```console
```console
#...
#...
@ -35,7 +31,7 @@ Some notes:
..##
..##
```
```
- If it isn't possible to form a perfect square, the program should leave spaces between the **Tetrominos**. For example:
- If it isn't possible to form a complete square, the program should leave spaces between the Tetrominoes. For example:
```console
```console
ABB.
ABB.
@ -44,17 +40,6 @@ A...
A...
A...
```
```
- Among all the possible candidates for the smallest square, we only accpet the ones where **Tetrominos** is placed on their most upper-left position. In the example below, the program would choose option a).