首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数羊入睡

数羊入睡
EN

Code Golf用户
提问于 2018-02-28 14:26:23
回答 2查看 1.5K关注 0票数 11

大多数人都熟悉数羊入睡的技巧。有一群羊,有的跳过篱笆,一边跳,一边数羊。据推测,这有助于让你的头脑平静下来,让你进入睡眠状态,这样你就会睡着。

这是一只面向右边的ASCII绵羊,等待计数:

代码语言:javascript
复制
'00^>
 ||

这是一只跳过栅栏的ASCII羊:

代码语言:javascript
复制
'00^>
 /\
 ++

这里有一个面向左边,已经被计算过了:

代码语言:javascript
复制
<^00'
  ||

挑战

给出两个输入整数,nmn > 2描述总共多少羊,m > 0表示已经计算了多少羊,输出了ASCII关于数羊入睡的艺术表示。

现在是

的转折:

  • 由于羊的笔的大小,顶部行只能容纳最大的10羊,不包括当前跳羊,它也必须总是在顶部行。
  • 后面的行不能将羊放在各自的笔外(第二行的左边不能有比第一行多的羊,右边的羊也不能多)。
  • 如果有11或更多的全羊,则顶部行必须有10加上跳羊。
  • 羊之间的前导/尾随空格和空白并不重要,只要:
    1. 羊之间至少有一个空格字符。
    2. 所有的字符都对齐了。

只要符合这些规则,绵羊的实际安排就取决于你的执行情况。

示例

例如,这里是n=3m=1,这是最简单的例子。

代码语言:javascript
复制
         '00^>
'00^>     /\      <^00'
 ||       ++        ||

这里是n=11m=6,最适合一条水平线的羊。

代码语言:javascript
复制
                        '00^>
'00^> '00^> '00^> '00^>  /\   <^00' <^00' <^00' <^00' <^00' <^00'
 ||    ||    ||    ||    ++     ||    ||    ||    ||    ||    ||

下面是一个与n=11m=1不同的例子

代码语言:javascript
复制
                                                      '00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^>  /\   <^00'
 ||    ||    ||    ||    ||    ||    ||    ||    ||    ++     || 

n=30m=12的一个更大的例子

代码语言:javascript
复制
                                                '00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^>  /\   <^00' <^00'
 ||    ||    ||    ||    ||    ||    ||    ||    ++     ||    || 

'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^>       <^00' <^00'
 ||    ||    ||    ||    ||    ||    ||    ||           ||    || 

'00^>                                                 <^00' <^00'
 ||                                                     ||    || 

                                                      <^00' <^00'
                                                        ||    || 

                                                      <^00' <^00'
                                                        ||    || 

                                                      <^00' <^00'
                                                        ||    || 

下面是一个关于n=17m=2的例子

代码语言:javascript
复制
                                                '00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^>  /\   <^00' <^00'
 ||    ||    ||    ||    ||    ||    ||    ||    ++     ||    ||

'00^> '00^> '00^> '00^> '00^> '00^>
 ||    ||    ||    ||    ||    ||  

下面是一个关于n=19m=3的例子

代码语言:javascript
复制
                                          '00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^>  /\   <^00' <^00' <^00'
 ||    ||    ||    ||    ||    ||    ||    ++     ||    ||    || 

'00^> '00^> '00^> '00^> '00^> '00^> '00^>
 ||    ||    ||    ||    ||    ||    ||  

'00^>
 ||  

请注意,所有这些都是示例。对于最后一个,您可能会在右边创建一个垂直的绵羊数组,这将允许左手侧适应两行。或者在右边有2x2平方的羊,这也可以把左边的羊放进两排。等。

I/O与规则

  • 输入可以采取任何合理的格式和用任何方便的方法
  • 如果字符对齐适当,则引导/尾随换行符或其他空格是可选的。
  • 一个完整的程序或一个函数都是可以接受的。如果是函数,则可以返回输出,而不是打印输出。
  • 输出可以输出到控制台,返回为字符串列表,返回为单个字符串,等等。
  • 标准漏洞是禁止的。
  • 这是密码-高尔夫,所以所有常用的高尔夫球规则都适用,最短的代码(以字节为单位)获胜。
EN

回答 2

Code Golf用户

发布于 2018-02-28 17:56:02

C,392字节

感谢@Jonathan保存了一个字节!

代码语言:javascript
复制
#define F;for(
x,y,k;p(L,a,b,t)char L[][78];{F k=5;k--;)L[x=a*4+(t<2)][y=b*6+k]=t?"'00^>"[k]:"<^00'"[k];L[++x][y-=~!t]=47;L[x][++y]=92;L[x][--y]=L[x+=(t>1)][y]=t<2?'|':43;}i,l;f(n,m){char L[i=n*4][78]F;i--;){F L[i][l=77]=0;l--;)L[i][l]=32;}F l=n+~m;++i<l&&i<9+!m;)p(L,0,i,1);l-=i;p(L,0,i++,2)F;i<11&&m--;)p(L,0,i++,0)F i=0;l--;)p(L,++i,0,1)F i=1;m-->0;)p(L,i++,10,0)F l=0;l<i*4;)puts(L+l++);}

在网上试试!

展开:

代码语言:javascript
复制
#define F;for(

x, y, k;
p(L, a, b, t) char L[][78];
{
    F k=5; k--;)
        L[x=a*4+(t<2)][y=b*6+k] = t ? "'00^>"[k] : "<^00'"[k];

    L[++x][y-=~!t] = 47;
    L[x][++y] = 92;
    L[x][--y] = L[x+=(t>1)][y] = t<2 ? '|' : 43;
}

i, l;
f(n, m)
{
    char L[i=n*4][78]
    F; i--;)
    {
        F L[i][l=77]=0; l--;)
            L[i][l] = 32;
    }

    F l=n+~m; ++i<l&&i<9+!m;)
        p(L,0,i,1);

    l-=i;
    p(L,0,i++,2)

    F; i<11&&m--;)
        p(L,0,i++,0)

    F i=0; l--;)
        p(L,++i,0,1)

    F i=1; m-->0;)
        p(L,i++,10,0)

    F l=0; l<i*4;)
        puts(L+l++);
}
票数 2
EN

Code Golf用户

发布于 2018-03-02 14:33:02

木炭,98字节

代码语言:javascript
复制
Nθ≔⁻⊖NθηF⟦⟦00¶/\¶++ θ⌊⟦⌈⟦⁵⁻χη⟧θ⟧⟧⟦0^>¶\¶+  η⌊⟦⌈⟦⁵⁻χθ⟧η⟧⟧⟧«J⁰¦⁰‖T§ι⁰↗F§ι¹«<^00'¶  || ↗¿¬﹪⊕κ§ι²”|I4O

在网上试试!链接是详细的代码版本。解释:

代码语言:javascript
复制
Nθ

输入已被计数的羊数。

代码语言:javascript
复制
≔⁻⊖Nθη

输入羊的总数,并计算出还需要计算多少羊。

代码语言:javascript
复制
F⟦⟦00¶/\¶++ θ⌊⟦⌈⟦⁵⁻χη⟧θ⟧⟧⟦0^>¶\¶+  η⌊⟦⌈⟦⁵⁻χθ⟧η⟧⟧⟧«

创建由两个数组组成的数组。每个数组都有以下元素:

  • 一根绳子,里面有半只跳羊
  • 篱笆那边的羊数
  • 篱笆那边一排羊的数量,或者是。
    • 围栏两侧的羊数,如少于5只,或
    • 10 -围栏另一侧的羊数,如少于5只,或
    • 如果双方至少有5只羊

代码语言:javascript
复制
J⁰¦⁰‖T§ι⁰↗

反射画布,印出半跳羊。

代码语言:javascript
复制
F§ι¹«

穿过那边的羊。

代码语言:javascript
复制
<^00'¶  || ↗

印一只羊。

代码语言:javascript
复制
¿¬﹪⊕κ§ι²”|I4O

如果这是行的末尾,那么打印一些新行和空格,以到达下一个绵羊的开始。

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

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

复制
相关文章

相似问题

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