I want you to design efficient structures in block-building game.
The game has blocks similar in size as Minecraft, but:
blocks can't be attached to sides of other blocks - only on top of them;
there are not only 1x1 blocks, but also 2x1 blocks - so you can place a 2x1 block on top of one 1x1, and then be able to place blocks on top of both halves of that 2x1;
characters can't just go from elevation n to n+1 without stairs, stairs are also a block, and they can be straight or have 90 degrees turn. Stairs need to have at least one block of empty space above them, so you can't place blocks directly on top of them.
let's define referencing the blocks:
Y = elevation starting at 0
Z = N-S direction starting at 0
X = W-E direction starting at 0
Let's write the state with (Y,Z,X: Type) records, where Type is:
1 = 1x1 block
2(A) = part of 2x1 block, with A = side at which the second part is
S(A>B) = stairs, where A = side to enter at the bottom, and B = side to exit at the top
For the first task, let's say we have:
0,1,0: 1
0,1,2: 1
0,2,1: S(N>E)
0,2,2: 1
0,3,1: 1
1,1,0: 1
1,1,2: 1
1,2,2: S(W>N)
1,3,1: 1
2,1,0: 2(E)
2,1,1: 2(W)
2,1,2: S(S>W)
2,3,1: 1
3,1,1: S(E>S)
3,2,1: 2(S)
3,3,1: 2(N)
Your task is to extend this stairway to 2x of it's height
You can not only add blocks to elevations above 3, but also to empty spaces at elevations 0-3
You can use any other notation for the state if you think it's better than what I offered.
Each time you want to place a block, be sure to check that it's supported, and that it's not covering stairs directly below
Efficiency costs are:
1x1 = 3
stairs = 3
2x1 = 5