给定一个数字n,生成此模式的前n列:
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################ ...列在(1-索引)n处的高度是n的二进制表示中的尾随0位数,加上1。因此,底层每列填上一列,第二层每第二列填一层,第三层每四列填一层,等等。
#,但是您不能更改空格字符。1
#
2
#
##
3
#
###
4
#
# #
####
5
#
# #
#####
7
#
# # #
#######
32
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################一些更大的测试用例可以找到这里。
这是密码-高尔夫,所以每种语言中以字节为单位的最短代码获胜。
发布于 2017-06-13 18:14:22
i=n=input()
while i:i-=1;print((' '*~-2**i+'#')*n)[:n]带有大量领先空格的打印。从i中向下计数的每一行n重复一个2**i-1空间模式,然后是一个#。此模式被重复到标尺的宽度,即输入n。这是通过将模式字符串乘以n并将第一个n字符与[:n]相乘来完成的。
该模式可以通过字符串格式为等长替代。
i=n=input()
while i:i-=1;print('%%%ds'%2**i%'#'*n)[:n]可爱的切片方法更长。
n=input();s=~-2**n*' '+'#'
exec"s=s[1::2]*2;print s[:n];"*n发布于 2017-06-13 17:23:04
https://codegolf.stackexchange.com/questions/126172
复制相似问题