Introduction
From Wikipedia:
A tessellation of a flat surface is the tiling of a plane using one or more geometric shapes, called tiles, with no overlaps and no gaps.
A fairly well known tessellation is shown below:
The rhombi are tiled in a fashion that results in no overlaps or gaps, and simulates interchanging columns of cubes.
Task
Your task is to write a program that tessellates rhombi the same way the image does above. The input for the program will be dimensions of the tessellation: height x width
, where width is the amount of columns and height is the amount of rows.
A single cube that is 1 x 1
(3 tiles of rhombi) is represented exactly as so:
_____
/\ \
/ \ \
/ \ _____\
\ / /
\ / /
\/_____ /
So if the input/dimensions are 3 x 2
, this should be the output:
_____
/\ \
/ \ \
/ \ _____\ _____
\ / /\ \
\ / / \ \
\/_____ / \ _____\
/\ \ / /
/ \ \ / /
/ \ _____\/_____ /
\ / /\ \
\ / / \ \
\/_____ / \ _____\
/\ \ / /
/ \ \ / /
/ \ _____\/_____ /
\ / /\ \
\ / / \ \
\/_____ / \ _____\
\ / /
\ / /
\/_____ /
As you can see, there are 3 rows (height), and 2 columns (width). The columns are interchanging up and down. Your program should do this too and start higher. For example, 3 x 3
would be:
_____ _____
/\ \ /\ \
/ \ \ / \ \
/ \ _____\ _____ / \ _____\
\ / /\ \ / /
\ / / \ \ / /
\/_____ / \ _____\/_____ /
/\ \ / /\ \
/ \ \ / / \ \
/ \ _____\/_____ / \ _____\
\ / /\ \ / /
\ / / \ \ / /
\/_____ / \ _____\/_____ /
/\ \ / /\ \
/ \ \ / / \ \
/ \ _____\/_____ / \ _____\
\ / /\ \ / /
\ / / \ \ / /
\/_____ / \ _____\/_____ /
\ / /
\ / /
\/_____ /
Rules
- The result must be outputted, input may be taken in whatever way you like but must correspond to height and width
- Trailing newlines are allowed
- The tessellation columns always start from above then alternate up and down
- Sides of tessellations must be shared and tessellations must be correctly placed in between the other columns with no gaps
- Your submission may be a function or a full program
- Your program must print exactly the output above given the same input; in other words the output must follow the same format for cubes/tessellations
Assumptions
- You can assume that the input will always be greater than
1 x 1
, so you don't need cases where a zero is inputted
Scoring
This is code-golf, so the shortest code in bytes wins. Standard loopholes are prohibited as well.