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

数山羊入睡
EN

Code Golf用户
提问于 2016-09-09 21:17:14
回答 11查看 3K关注 0票数 41

有些人数羊睡觉。其他人数山羊。

编写一个程序或函数,输入一个正整数N,输出N-1醒着的山羊,然后是一只睡着的山羊,就好像有人在数N只山羊,最后一只山羊睡着了。

醒着的山羊看起来像这样:

代码语言:javascript
复制
      \
  ___/o>
-(___)"
 '' ''

睡觉的山羊看起来是这样的:

代码语言:javascript
复制
      \
  ___/->
,(___)"
 `` ``

它们与相邻山羊的胡子和尾巴之间有一个单独的空间:

代码语言:javascript
复制
      \       \       \
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``

输出允许有尾随空格和一个尾换行符。

以字节为单位的最短代码获胜.

示例

N= 1:

代码语言:javascript
复制
      \
  ___/->
,(___)"
 `` ``

N= 2:

代码语言:javascript
复制
      \       \
  ___/o>  ___/->
-(___)" ,(___)"
 '' ''   `` ``

N= 3:

代码语言:javascript
复制
      \       \       \
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``

N= 4:

代码语言:javascript
复制
      \       \       \       \
  ___/o>  ___/o>  ___/o>  ___/->
-(___)" -(___)" -(___)" ,(___)"
 '' ''   '' ''   '' ''   `` ``

更大的N应该也同样有效。

EN

回答 11

Code Golf用户

发布于 2016-09-09 22:56:38

批处理,234个字节

代码语言:javascript
复制
@echo off
set/pn=
call:l "      \ " "      \"
call:l "  ___/o]" "  ___/-]"
call:l "-(___)@ " ",(___)@"
call:l " '' ''  " " `` ``"
exit/b
:l
set s=%~2
for /l %%i in (2,1,%n%)do call set s=%~1%%s%%
set s=%s:@="%
echo %s:]=^>%

接受来自stdin的输入。Batch与">由于各种原因有问题,所以我不得不使用占位符,然后在最后切换它们。

票数 4
EN

Code Golf用户

发布于 2016-09-10 19:01:51

GolfScript,91字节

代码语言:javascript
复制
~:a 1-:b;"      \\ "a*n"  ___/o>"b*"  ___/->"n"-(___)\" "b*",(___)\""n" '' ''  "b*" `` ``"n

输入:3

输出:

代码语言:javascript
复制
      \       \       \ 
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``

解释

代码语言:javascript
复制
~:a 1-:b;      # Parse and save the input
"      \\ "a*n # Repeat the first line 'a' times
"  ___/o>"b*   # Repeat the head 'b' times
"  ___/->"n    # Then add the sleeping goat's head
"-(___)\" "b*  # Idem
",(___)\""n    #
" '' ''  "b*   # Idem
" `` ``"n      #

在网上试试!

票数 3
EN

Code Golf用户

发布于 2021-05-25 00:21:02

骑士,96字节

代码语言:javascript
复制
;O*"      \ "=n+0P;O+*+=t'  ___/''->'=l-nT+t'o>';O+*+','=t'(___)" 'l+'-'tO+*' `` ``  'l" '' ''"

非常简单,没什么特别的--你只需打印出睡着的山羊和醒来的山羊的n-1版本。可重复的元素保存在t中,因此不会再次输入。

扩大:

代码语言:javascript
复制
# Print out the ears. They're the same for both goat types.
; OUTPUT (* "      \ " (= n (+ 0 PROMPT)))
; OUTPUT
    (+
        (* (+ (= tmp '  ___/')'->') (= m - n TRUE))
        (+ tmp 'o>'))
; OUTPUT
    (+
        (* (+ ',' (= tmp '(___)" ')) m)
        (+ '-' tmp))
OUTPUT (+ (* ' `` ``  ' m) (" '' ''"))
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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