321
社区成员




小艺师从鬼画符门派,由于学艺不精只能画点点大阵。 一天师父要求小艺画多重点点大阵,师父会将1重的点点大阵给小艺,小艺如果需要完成2重的点点大阵,那么她需要将1重点点大阵看作一个整体作为一重点点大阵中的一点。小艺想让你帮忙先画一个。
这个题目比较坑,有两个注意点,第一,接管输入信息,不要把左边空格丢了,第二,输出信息要去掉右边空格,总之很坑人,详细的内容可以看老顾的博客https://blog.csdn.net/superwfei/article/details/130042190?spm=1001.2014.3001.5502
a,n = map(int,input().split())
arr = [input().ljust(a)[:a] for _ in range(a)]
def cp(arr,n):
if n == 1:return arr
parent = cp(arr,n - 1)
ans = [''.join([arr[r] if c == '*' else ' ' * len(arr[0]) for c in parent[i]]) for i in range(len(parent)) for r in range(len(arr))]
return ans
print('\n'.join([v.rstrip() for v in cp(arr,n)]))
递归部分是省略不了的,用推导式没办法多层递归,只能写个函数完成。
a = readline().split(' ').map(x => parseInt(x));
arr = Array.from(new Array(a[0])).map(x => (readline() + ' '.repeat(a[0])).substr(0,a[0]));
function cp(arr,a,n){
if (n == 1){return arr}
row = cp(arr,a,n-1)
return Array.from(new Array(row.length * a)).map((r,y) => Array.from(row[parseInt(y / a)].match(/./gi)).map(x => x == '*' ? arr[y % a] : ' '.repeat(a)).join(''))
}
print(cp(arr,a[0],a[1]).map(x => x.replace(/\s+$/gi,'')).join('\n'))