>;L`â€ßZä€ûûè
First input is a pair of \$[row,column]\$, second input is a pair of \$[symbol2,symbol1]\$. Output is a matrix of characters.
Try it online (footer J»
is to pretty-print; feel free to remove it to see the actual output-matrix).
Explanation:
>; # Increase both values in the first (implicit) input-pair by 1, then halve
# e.g. [5,13] → [6,14] → [3,7]
L # Map both to a list in the range [1,n]
# → [[1,2,3],[1,2,3,4,5,6,7]]
` # Pop and push both separated to the stack
# → [1,2,3] and [1,2,3,4,5,6,7]
â # Get the cartesian product of these two lists
# → [[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[2,1],[2,2],[2,3],[2,4],[2,5],
# [2,6],[2,7],[3,1],[3,2],[3,3],[3,4],[3,5],[3,6],[3,7]]
ۧ # Get the minimum of each inner pair
# → [1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,2,3,3,3,3,3]
Z # Push the flattened maximum (without popping the list)
# → [1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,2,3,3,3,3,3] and 3
ä # Split the list into that many equal-sized parts so we have a matrix
# → [[1,1,1,1,1,1,1],[1,2,2,2,2,2,2],[1,2,3,3,3,3,3]]
€û # Palindromize each row
# → [[1,1,1,1,1,1,1,1,1,1,1,1,1],
# [1,2,2,2,2,2,2,2,2,2,2,2,1],
# [1,2,3,3,3,3,3,3,3,3,3,2,1]]
û # Palindromize the entire matrix
# → [[1,1,1,1,1,1,1,1,1,1,1,1,1],
# [1,2,2,2,2,2,2,2,2,2,2,2,1],
# [1,2,3,3,3,3,3,3,3,3,3,2,1],
# [1,2,2,2,2,2,2,2,2,2,2,2,1],
# [1,1,1,1,1,1,1,1,1,1,1,1,1]]
è # 0-based modulair index each into the (implicit) second input-string
# e.g. "-@" →
# [["@","@","@","@","@","@","@","@","@","@","@","@","@"],
# ["@","-","-","-","-","-","-","-","-","-","-","-","@"],
# ["@","-","@","@","@","@","@","@","@","@","@","-","@"],
# ["@","-","-","-","-","-","-","-","-","-","-","-","@"],
# ["@","@","@","@","@","@","@","@","@","@","@","@","@"]]
# (after which the matrix is output implicitly)