有些人数羊睡觉。其他人数山羊。
编写一个程序或函数,输入一个正整数N,输出N-1醒着的山羊,然后是一只睡着的山羊,就好像有人在数N只山羊,最后一只山羊睡着了。
醒着的山羊看起来像这样:
\
___/o>
-(___)"
'' ''睡觉的山羊看起来是这样的:
\
___/->
,(___)"
`` ``它们与相邻山羊的胡子和尾巴之间有一个单独的空间:
\ \ \
___/o> ___/o> ___/->
-(___)" -(___)" ,(___)"
'' '' '' '' `` ``输出允许有尾随空格和一个尾换行符。
N= 1:
\
___/->
,(___)"
`` ``N= 2:
\ \
___/o> ___/->
-(___)" ,(___)"
'' '' `` ``N= 3:
\ \ \
___/o> ___/o> ___/->
-(___)" -(___)" ,(___)"
'' '' '' '' `` ``N= 4:
\ \ \ \
___/o> ___/o> ___/o> ___/->
-(___)" -(___)" -(___)" ,(___)"
'' '' '' '' '' '' `` ``更大的N应该也同样有效。
发布于 2016-09-09 22:56:38
@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与"和>由于各种原因有问题,所以我不得不使用占位符,然后在最后切换它们。
发布于 2016-09-10 19:01:51
~:a 1-:b;" \\ "a*n" ___/o>"b*" ___/->"n"-(___)\" "b*",(___)\""n" '' '' "b*" `` ``"n输入:3
输出:
\ \ \
___/o> ___/o> ___/->
-(___)" -(___)" ,(___)"
'' '' '' '' `` ``~: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 #发布于 2021-05-25 00:21:02
;O*" \ "=n+0P;O+*+=t' ___/''->'=l-nT+t'o>';O+*+','=t'(___)" 'l+'-'tO+*' `` `` 'l" '' ''"非常简单,没什么特别的--你只需打印出睡着的山羊和醒来的山羊的n-1版本。可重复的元素保存在t中,因此不会再次输入。
扩大:
# 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) (" '' ''"))https://codegolf.stackexchange.com/questions/92834
复制相似问题