陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯题目思路程序如下总结题目谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应输入格式:输入为两行,分别为地毯大小正…

大家好,又见面了,我是你们的朋友全栈君。

陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

题目

谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。

现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。

注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应

输入格式:

输入为两行,分别为地毯大小正整数N与组成元素字符串c

输入数据保证N为3的正整数幂

输出格式:

由N行长度为N*len©的字符串构成的谢尔宾斯基地毯

输入样例:

9

[]
在这里插入图片描述

思路

用递归方法
向最小格式迭代
每次按规律增加图形的长宽

程序如下

def carpet(N, char):
    len_c = len(char)
    if N == 3:
        return [char*3, char + ' '*len_c + char, char*3]		#最小格式时直接输出
    else:
        mylist = carpet(N/3, char)		#将图形存为一个列表
        for j in range(2):		#增加竖向宽度
            for i in range(int(N/3)):
                mylist.append(mylist[i])		
        for i in range(len(mylist)):		#增加横向宽度
            if i >= N/3 and i < N/3*2:
                mylist[i] = mylist[i] + ' '*len_c * int(N/3) + mylist[i]	#中间留白
            else:
                mylist[i] = mylist[i]*3
        return mylist

n = int(input())
c = input()
# n = 27
# c = '[]'
if n == 0:	# n=0直接输出
    print('')
else:
    ans = carpet(n, c)
    for i in ans:	#打印图形
        print(i)

总结

增加长宽时,要注意carpet(N, char)中char字符的宽度


学习陈斌老师的数据结构与算法Python版课有感

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158629.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vs2008激活、序列号

    vs2008激活、序列号参考:VS2008简体中文正式版序列号(到期解决办法)​​​​​​​链接:https://pan.baidu.com/s/1xKXW3h585jYOU26EdINsIg提取码:a1wu复制这段内容后打开百度网盘手机App,操作更方便哦…

  • 微软第一台电脑_世界上第一位皇帝是谁

    微软第一台电脑_世界上第一位皇帝是谁2月9日,历史上的今天,世界上第一位计算机科学博士DavidWheeler出生;BAN逻辑的提出者RogerNeedham出生;人工智能控制论先驱KevinWarwick出生;谷歌发布GoogleBuzz;微软发布SurfacePro。

    2022年10月15日
  • word2016论文不同章节设置页眉页码方法[通俗易懂]

    word2016论文不同章节设置页眉页码方法[通俗易懂]最近在写硕士论文需要调整页眉页脚,并且每一章都不一样,网上搜的教程都有点复杂,现在自己弄懂了,把它记录下来:1,设置不同章节不同页眉2,设置奇偶页不同2,设置页码从第xx页开始本文以word2016为例,讲述以上3点的设置方法:1,设置不同章节不同页眉首先是常规操作,点击word上方插入–页眉和页码这样页眉和页码就在word上显示出来了然而仅这样操作所有…

    2022年10月29日
  • linux命令hexdump,Linux系统中hexdump的命令汇总

    linux命令hexdump,Linux系统中hexdump的命令汇总Linux系统中hexdump的命令汇总hexdump是Linux系统中用来查看文件十六进制编码的命令,配合不同的参数其作用也有所不同,下面小编就给大家介绍下Linux中hexdump命令的用法,不了解的`朋友不妨来学习一下。查看一些二进制文件的内容,比如二进制文件中包含的某些字符串。可以将二进制文件转换为ASCII、10进制、16进制或8进制进行查看。-b每一字节以八进制显示,一行共16个字节…

  • 向量的夹角余弦公式_向量空间模型(VSM)的余弦定理公式(用余弦定理来表示向量之间的相似度)…[通俗易懂]

    向量的夹角余弦公式_向量空间模型(VSM)的余弦定理公式(用余弦定理来表示向量之间的相似度)…[通俗易懂]相信很多学习向量空间模型(VectorSpaceModel)的人都会被其中的余弦定理公式所迷惑..因为一看到余弦定理,肯定会先想起初中时的那条最简单的公式cosA=a/c(邻边比斜边),见下图:但是,初中那条公式是只适用于直角三角形的,而在非直角三角形中,余弦定理的公式是:cosA=(c2+b2-a2)/2bc不过这条公式也和向量空间模型中的余弦定理公式不沾边,迷惑..引用吴军老师的数…

    2022年10月28日
  • 一个封装的BeanCopier工具类[通俗易懂]

    一个封装的BeanCopier工具类[通俗易懂]工具类BeanCopierUtils1.支持source对象到target对象的拷贝2.支持Listsource到Listtarget的拷贝

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号