05AB1E , 50 49 byte
3mF9Ý.R}J¹ô¹ävy`¦'*ìN4%©>ir}®iRr}®<iR})ˆ}¯øvyðý}»
Giải trình
Ví dụ cho đầu vào = 4.
Đầu tiên chúng ta tạo một chuỗi đầu vào ^ 3 số ngẫu nhiên trong khoảng từ 0 đến 9.
3mF9Ý.R}J
sản xuất
6799762549425893341317984133999075245812305412010122884262903656
Sau đó, chúng tôi chia thành từng phần kích thước của đầu vào.
Đó là tiếp tục chia thành các phần đầu vào.
¹ô¹ä
Điều này cho chúng ta một ma trận số.
[['6799', '7625', '4942', '5893'],
['3413', '1798', '4133', '9990'],
['7524', '5812', '3054', '1201'],
['0122', '8842', '6290', '3656']]
Sau đó chúng tôi lặp qua các hàng của ma trận, chèn các dấu sao vào đúng chỗ.
v } # for each row in matrix
y` # flatten list to stack
¦'*ì # replace the first digit of the last number with "*"
N4%©>ir} # if row-nr % 4 == 0, move the number with "*" to the front
®iRr} # if row-nr % 4 == 1, move the number with "*" to the front
# and reverse the number, moving "*" to the numbers right side
®<iR} # if row-nr % 4 == 2, reverse the number, moving "*"
# to the numbers right side
)ˆ # wrap row in a list and add to global array
Bây giờ chúng ta có ma trận với "*" trên mỗi hàng, nhưng chúng ta muốn có dấu hoa thị trên mỗi cột.
[['*893', '4942', '7625', '6799'],
['099*', '4133', '1798', '3413'],
['7524', '5812', '3054', '102*'],
['0122', '8842', '6290', '*656']]
Vì vậy, chúng tôi nén danh sách này biến hàng thành cột và ngược lại.
[['*893', '099*', '7524', '0122'],
['4942', '4133', '5812', '8842'],
['7625', '1798', '3054', '6290'],
['6799', '3413', '102*', '*656']]
Tất cả những gì còn lại bây giờ là định dạng đầu ra.
vyðý}»
Việc nối các hàng trên dấu cách và các cột trên dòng mới cho chúng ta kết quả cuối cùng.
*893 099* 7524 0122
4942 4133 5812 8842
7625 1798 3054 6290
6799 3413 102* *656
Hãy thử trực tuyến!
Giải pháp 50 byte cũ
F¹Fõ¹F9Ý.R«}}¦'*ì})¹ävyN4%©>iR}®iíÁ}®<ií}})øvyðý}»