(每日一练28833)题目名称:鬼画符门之点点大阵

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-05-04 12:11:05

小艺师从鬼画符门派,由于学艺不精只能画点点大阵。 一天师父要求小艺画多重点点大阵,师父会将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'))
...全文
139 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧