首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树木的生与死

树木的生与死
EN

Code Golf用户
提问于 2017-09-30 14:41:36
回答 3查看 656关注 0票数 8

挑战

编写一个以整数N为输入的程序,并输出树当前所处的生死阶段。N总是在0到10之间。

生死期

  • 生命:要绘制生命的一个阶段,只需绘制由^字符组成的N大小的基,然后从N向上移动和减去2,如果结果大于0,然后再次绘制^字符的线条,再次绘制新N的大小,重复,而N大于0。最后,如果N的起始值为奇数,则放置单个|字符;如果为偶数,则放置两个||字符。示例:N = 5 ^告诫注意,如果N=0时,将只绘制茎,而不会在其上绘制叶子(^)。
  • 死亡:这与生命大致相同,除了基数为10-N外,您使用M而不是^,然后添加2到N,并按照上面相同的步骤重新绘制线条,但这一次,当它小于或等于10时,添加2到N。示例:N = 3 M MMM MMMMM MMMMM)。

目标

你的程序必须以两种不同的语言运行,它们都需要输入N。第一语言必须根据N输出树的生命阶段,第二语言必须输出死亡阶段。

规则

  • 这是密码-高尔夫,满足所有需求的最短字节代码获胜。
  • 代码必须以两种不同的语言运行。是的,Python 2和Python 3是不同的语言。
  • 标准漏洞是被禁止的。
  • 允许尾随换行符或空格。

测试用例

输入:N = 1

第一语言(生命):

代码语言:javascript
复制
 ^
 |

第二语言(死亡):

代码语言:javascript
复制
    M
   MMM
  MMMMM
 MMMMMMM
MMMMMMMMM
    |

输入:N = 10

第一语言(生命):

代码语言:javascript
复制
    ^^
   ^^^^
  ^^^^^^
 ^^^^^^^^
^^^^^^^^^^
    ||

第二语言(死亡):

代码语言:javascript
复制
||

祝你好运编码!

EN

回答 3

Code Golf用户

发布于 2017-09-30 15:03:25

Python 2 / Python 3,121个字节

代码语言:javascript
复制
def f(n):
 m=-1;n,c=(n,10-n,'^','M')[1/2>0::2];s=''
 while n>0:s=' '*m+c*n+'\n'+s;m+=1;n-=2
 return s+' '*m+'|'*(n%2or 2)

在网上试试! (Python2)

在网上试试! (Python3)

票数 5
EN

Code Golf用户

发布于 2017-09-30 15:11:30

Python 3/Python 2,128个字节

代码语言:javascript
复制
def f(n,a=1/2>0):
 m=[n,10-n][a];k=-~m%2+1
 for j in range(k,m+1,2):print(" "*((m-j)//2)+"^M"[a]*j)
 print(" "*((m-k)//2)+"|"*k)

在网上试试! (Python3)

在网上试试! (Python2)

票数 2
EN

Code Golf用户

发布于 2017-10-01 09:17:58

C (gcc) / Python 2,308个字节

代码语言:javascript
复制
#define _\
"""
main(N,n,j,k){scanf("%d",&N);j=-~!(N%2);for(n=j;n<=N;n+=2){printf("%*c",(N-n)/2+1,94);for(k=n-1;k;k--)printf("^");puts("");}printf("%*c",++N/2,124);N%2?puts("|"):0;}
#define _"""
#define/*
N=10-input();j=[1,0][N%2]
for n in range(1,-~N,2):print(N-n)/2*" "+"M"*(n+j)
print~-N/2*" "+"|"*-~j
#*/_

在网上试试!

Python 2 / C (gcc),308个字节

代码语言:javascript
复制
#define _\
"""
main(N,n,j,k){scanf("%d",&N);j=-~!(N%2);for(n=j;n<=N;n+=2){printf("%*c",(N-n)/2+1,94);for(k=n-1;k;k--)printf("^");puts("");}printf("%*c",++N/2,124);N%2?puts("|"):0;}
#define _"""
#define/*
N=10-input();j=[1,0][N%2]
for n in range(1,-~N,2):print(N-n)/2*" "+"M"*(n+j)
print~-N/2*" "+"|"*-~j
#*/_

在网上试试!

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/144105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档