Construye un botellero
Crea un WineRack con las siguientes propiedades:
- Tiene un inicializador predeterminado que crea un WineRack con un ancho y una altura especificados.
- Tiene un inicializador que puede fallar que crea un WineRack con un ancho y una altura especificados, relleno con los vinos indicados. Los vinos llenan el botellero desde la esquina superior izquierda. Si hay demasiados vinos para el tamaño del botellero, el inicializador falla.
- Cuando se imprime un objeto WineRack, muestra una representación gráfica del botellero usando el símbolo Unicode
○para un espacio vacío y●para un espacio con vino. - Devuelve el vino ubicado en una posición determinada del botellero mediante un subíndice (por ejemplo,
wineRack[(0,0)]).
Ejemplos
print(WineRack(height: 2, width: 3)) ➞
○○○
○○○
print(WineRack(height: 2, width: 3, wines: ["Riesling", "Syrah", "Riesling", "Syrah", "Syrah"])!) ➞
●●●
●●○
WineRack(height: 1, width: 1, wines: ["Riesling", "Syrah"]) ➞ nil
WineRack(height: 2, width: 3, wines: ["Riesling", "Syrah", "Riesling", "Syrah", "Syrah"])?[(0, 0)] ➞ "Riesling"
WineRack(height: 2, width: 3, wines: ["Riesling", "Syrah", "Riesling", "Syrah", "Syrah"])?[(1, 1)] ➞ "Syrah"
WineRack(height: 2, width: 3, wines: ["Riesling", "Syrah", "Riesling", "Syrah", "Syrah"])?[(1, 2)] ➞ nilNotas
- Las posiciones de un WineRack que no contienen un vino deben devolver
nil. - Las posiciones se representan mediante una tupla con 2 valores:
(row, column). - Al imprimir un WineRack, las filas deben estar separadas por saltos de línea (
\n)