Compter les chèvres pour dormir

36

Certaines personnes comptent des moutons pour s'endormir. Les autres comptent les chèvres.

Ecrivez un programme ou une fonction qui prend un nombre entier positif N et génère N-1 chèvres éveillées suivies d'une chèvre endormie, comme si quelqu'un comptait N chèvres et s'est endormi au dernier moment.

Les chèvres éveillées ressemblent à ceci:

      \
  ___/o>
-(___)"
 '' ''

Les chèvres endormies ressemblent à ceci:

      \
  ___/->
,(___)"
 `` ``

Ils sont enchaînés avec un seul espace entre la barbe et la queue des chèvres adjacentes:

      \       \       \
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``

La sortie est autorisée à avoir des espaces de fin et un seul nouveau trait de fin.

Le code le plus court en octets gagne.

Exemples

N = 1:

      \
  ___/->
,(___)"
 `` ``

N = 2:

      \       \
  ___/o>  ___/->
-(___)" ,(___)"
 '' ''   `` ``

N = 3:

      \       \       \
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``

N = 4:

      \       \       \       \
  ___/o>  ___/o>  ___/o>  ___/->
-(___)" -(___)" -(___)" ,(___)"
 '' ''   '' ''   '' ''   `` ``

Un plus grand N devrait aussi bien fonctionner.

Les passe-temps de Calvin
la source
9
Je pense que vos "chèvres" ressemblent davantage à des oiseaux en colère à 4 pattes ;-)
Digital Trauma
4
Aww j'espérais compter des chèvres, et non l'inverse
Beta Decay
1
Je pense que je sais qui compte les chèvres pour dormir
Luis Mendo
7
Je ne pense pas que vous puissiez compter chèvre pour dormir à moins que "bleeeeeeet" vous rende somnolent: P +1, un grand défi
Downgoat
1
Les psychopathes s'endorment en comptant les chèvres hurlantes.
mbomb007

Réponses:

30

MATL , 56 53 octets

:"'!!((!((!!#*```).?p0```!!!]'8eP!P]'p(.' '.a-'XE&hqc

Essayez-le en ligne!

Explication

Éveiller la chèvre

La chèvre éveillée peut être emballée dans la ficelle

  '' ''  ")___(->o/___   \

et déballé comme cela sera expliqué sous peu. Toutefois, les symboles entre guillemets devraient être dupliqués pour pouvoir y échapper. Le littéral chaîne doit donc être défini comme suit (notez les symboles entre guillemets et la duplication des symboles originaux):

'  '''' ''''  ")___(->o/___   \'

Pour sauvegarder des octets, nous définissons la chaîne à l'aide de caractères un point de code au - dessus , évitant ainsi les doublons. Le littéral de chaîne devient

'!!((!((!!#*```).?p0```!!!]'

À la fin du code, nous allons soustraire 1 et convertir en caractères. (Nous pourrions le faire maintenant, juste après le littéral chaîne; mais le laisser à la fin sauvera une autre duplication entre guillemets, comme nous le verrons).

Pour expliquer comment la chaîne est décompactée, nous allons travailler avec les caractères originaux (produits à la fin du code en sous-traitant 1), ainsi l'explication est plus facile à suivre. Nous remodelons d'abord la ficelle

  '' ''  ")___(->o/___   \

dans un tableau de caractères 2D à 8 lignes, dans l'ordre des colonnes (bas, puis à travers). Ceci remplit automatiquement la dernière colonne avec le caractère 0 (à la fin du code, soustraire 1 le transformera en nombre -1, ce qui converti en caractère donnera à nouveau le caractère 0). Char 0 est affiché comme un espace. Donc, effectivement, nous remplissons d'espaces. Le résultat du remodelage est

  > 
 "o\
')/ 
'__ 
 __ 
'__ 
'(  
 -  

Nous retournons maintenant verticalement:

 -  
'(  
'__ 
 __ 
'__ 
')/ 
 "o\
  > 

puis transposez et retournez verticalement pour produire le bouc éveillé:

      \ 
  ___/o>
-(___)" 
 '' ''  

Les deux opérations de retournement sont nécessaires car la chaîne compressée d'origine est "en sens inverse". Cela tient compte du fait que le tableau de caractères 2D représentant la chèvre a 6 espaces initiaux dans sa première ligne, qui sont automatiquement remplis par un remplissage lorsque la chaîne est remodelée dans un tableau 2D à 8 lignes. Mais le remplissage est fait à la fin (pas au début) de la dernière colonne (pas à la ligne), d’où les retournements et la transposition.

Chèvre endormie

Une chèvre de couchage est généré à partir d' une chèvre éveillé par les caractères translittération o, ', -en -, `, ,respectivement. En fait, à cause de l'un code point ci - dessus transformation, nous Translittérer caractères p, (, 'en ., a,- , qui encore une fois nous évite d'avoir à dupliquer le symbole guillemet simple. C’est pourquoi l’opération soustraction 1 a été laissée à la fin du programme.

Structure du code

  1. Générer une chèvre éveillée N , en travaillant avec des points de code augmentés de 1.
  2. Transformez la dernière chèvre en une chèvre endormie.
  3. Concaténer toutes les chèvres horizontalement. Soustrayez 1 aux points de code et transformez-les en caractères.

Code commenté

:                              % (Step 1) Implicitly input N. Push range [1 2 ... N]
"                              % For each (i.e. repeat N times)
  '!!((!((!!#*```).?p0```!!!]' %   Push this string. Quotes are escaped by duplicating
  8e                           %   Reshape into an 8-row 2D array of char, in
                               %   column-major order, padding last column with
                               %   char 0
  P                            %   Flip vertically
  !P                           %   Transpose and flip vertically
]                              % End
'p(.'                          % (Step 2) Push this string: source for transliteration
'.a-'                          % Push this string: target for transliteration
XE                             % Transliterate. Transforms last goat into sleeping
&h                             % (Step 3) Horizontally concat all 2D char arrays
qc                             % Subtract 1 and convert to char. 0 becomes −1, which
                               % is converted to char 0, which is displayed as a space
                               % Implicitly display 
Luis Mendo
la source
8
Ceci est une théorie sérieuse de chèvre;)
Conor O'Brien
17

Python 3.6, 102 octets

lambda n:f'''{'      \ '*n}
{'  ___/o>'*~-n}  ___/->
{'-(___)" '*~-n},(___)"
{" '' ''  "*~-n} `` ``'''

Yaay, cordes f !

            __________________________
           / \
          | Cette réponse est baaaaaaad. |
      \ / ___________________________ /
  ___ / o> '  
- (___) " 
 '' ''  
Lynn
la source
13

Javascript, 122 octets

Répondre

f=(n,r='repeat')=>'      \\ '[r](n--)+`
${'  ___/o>'[r](n)}  ___/->
${'-(___)" '[r](n)},(___)"
`+` '' ''  `[r](n)+' `` ``'

Note latérale
Dans le code suivant (91 octets), les chèvres sont alignées verticalement. Il ne se conforme pas au format de sortie, mais j’estime intéressant de noter que l’alignement horizontal requis dans le format de sortie nécessite davantage d’octets:

f=n=>`
      \\
  ___/${--n?'o':'-'}>
${n?'-':','}(___)"
 ${n?'`` ``':`'' ''`}`+(n?f(n):'')
Hedi
la source
3
Pourquoi inclure la soumission verticale? Le défi demande un alignement horizontal.
Mego
5
@ Mego Qu'est-ce qui ne va pas avec montrer à quel point cela aurait été plus golfable?
Neil
2
@ Neil Parce que c'est tout à fait tangentiel au défi.
Mego
9
@ Mego Je pense que c'est intéressant à noter.
Conor O'Brien
3
@ Mego, j'ai pensé que cela pourrait être intéressant. J'ai modifié le message pour qu'il soit plus évident que l'alignement vertical n'est pas une réponse valable.
Hedi
4

Lot, 234 octets

@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:]=^>%

Prend la contribution de stdin. Batch a des problèmes avec "et >pour diverses raisons, je dois donc utiliser des espaces réservés, puis les permuter à la fin.

Neil
la source
Je n'avais aucune idée des set/pntravaux ._.
Conor O'Brien
Les ^personnages échappés.
Krii
@ Krii Ne fonctionne pas quand j'en ai besoin.
Neil
4

Pyke, 56 54 octets

Fhqd6*"\
  ___/o>
-(___)
 '' ''"+23\":RI"-o'"",-`".:(P

Essayez-le ici!

4 octets de trop parce que Pyke n'autorise pas les guillemets doubles dans les chaînes :(

Bleu
la source
3

JavaScript (ES6), 110 109 octets

f=
n=>`      \\       \\
  ___/o>  ___/->
-(___)" ,(___)"
 '' ''   `.replace(/^.{8}/gm,"$&".repeat(n-1))+"`` ``"
;
<input type=number min=1 oninput=o.textContent=f(this.value)><pre id=o>

Avoir à supporter les trois types de citation était ennuyeux, mais heureusement, le commentaire de @ pinkfloydx33 m'a donné l'inspiration que je pouvais ajouter les guillemets arrières à la fin, ce qui me permettait de gagner un octet.

Neil
la source
Pouvez-vous sauvegarder un octet en changeant le type de citation au milieu et en concaténant deux chaînes '+"'' ''"(supposez que les guillemets simples sont des ticks arrière puisque je ne sais pas comment obtenir un backtick dans un bloc de code dans les commentaires)
pinkfloydx33 10/10
@ pinkfloydx33 Je pensais avoir déjà essayé cela, mais j'ai alors réalisé que je pouvais ajouter ces ticks à la fin, ce qui me ferait économiser un octet. De plus, pour obtenir une coche arrière dans un bloc de code de commentaire, il suffit de le préfixer d'une barre oblique inverse.
Neil
Vous pouvez supprimer le point
Howderek
1
@howderek Je ne l'ai pas inclus ni f=dans le nombre d'octets, c'est juste pour être complet.
Neil
3

GolfScript , 91 octets

~:a 1-:b;"      \\ "a*n"  ___/o>"b*"  ___/->"n"-(___)\" "b*",(___)\""n" '' ''  "b*" `` ``"n

Contribution: 3

Sortie:

      \       \       \ 
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``

Explication

~: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      #

Essayez-le en ligne!

FedeWar
la source
5
Presque mal interprété comme GoatScript
Calvin's Hobbies
3

Gelée , 62 56 octets

⁶ẋ6;“\   ___/o>-(___)"  '' ''  ”s8
¢“-,o-'`”yЀ
’1£ẋ€ż¢Y

Testez-le sur TryItOnline

Comment?

⁶ẋ6;“\   ___/o>-(___)"  '' ''  ”s8 - Link 1: make a goat, niladic
⁶ẋ6                                - space character, ⁶, repeated 6 times
    “\   ___/o>-(___)"  '' ''  ”   - rest of the awake goat text
   ;                               - concatenate
                                s8 - split into length 8 parts

¢“-,o-'`”yЀ - Link 2: put a goat to sleep, niladic
¢            - last link (make a goat)
 “-,o-'`”    - characters to remap
         yЀ - map for each (change "-" into ",", "o" into "-", and "-" into "`"

’1£ẋ€ż¢Y - Main link: n
’        - decrement (nAwakeGoats)
 1£      - call link 1 as a nilad (make an awake goat)
   ẋ€    - repeat nAwakeGoats times
      ¢  - last link (make a sleeping goat)
     ż   - zip
       Y - join with line feeds
         - implicit print
Jonathan Allan
la source
1

PHP, 200 octets

$a=["      \ ","  ___/o>",'-(___)" '," '' ''  "," `` ``  "];$z=8*$n=$argv[1];for($i=0;$i<4;)$o.=str_repeat($a[$i],$i++==3?$n-1:$n);$o[$z*2-2]="-";$o[$z*3-8]=",";$o.=$a[4];echo chunk_split($o,$z,"\n");
Jörg Hülsermann
la source
1
Tu code trop propre, Jörg. Je pouvais jouer au golf 32 octets en 11 étapes. Vous voulez des astuces?
Titus
Merci, je veux seulement résoudre ce défi en aucune façon. Parfois, mieux vaut nettoyer qu'une mauvaise solution. Vous pouvez coller votre chemin.
Jörg Hülsermann
J'ai adopté une approche différente. mais si vous voulez des conseils pour les vôtres, il suffit de demander. 24 octets dans les 5 premières étapes.
Titus
@ JörgHülsermann Modifier les réponses des autres semble être très mal vu dans ce site.
Carcigenicate
@Carcigenicate Voulez-vous dire que je devrais modifier les réponses d'autres personnes ou de vice-versa? J'ai plutôt tendance à résoudre un problème propre si je ne suis intéressant que dans ce cas. Ascii Art n'est normalement pas ma priorité
Jörg Hülsermann 10/09/2016
1

C ++, 180 octets

auto f(int n)
{
string a,b,c,d;
while(n--)
{
a+="      \\ ";
b+="  ___/";b+=n?"o>":"->\n";
c+=n?"-(___)\" ":",(___)\" \n";
d+=n?R"( '' ''  )":" `` ``  \n";
}
return a+'\n'+b+c+d;
}
Yurii Blok
la source
2
Bienvenue chez PPCG! S'il vous plaît inclure la version d'une ligne afin que vous puissiez réellement le compter. Vous pouvez toujours inclure une version lisible séparément afin que les utilisateurs ne soient pas obligés de lire one-liner. :)
Martin Ender
Martin, merci pour le lien. À l'origine, je mesurais la taille en fonction de la taille du fichier et je résous le problème.
Yurii Blok
Les réponses devraient en effet être mesurées par la taille du fichier. Mon point était que votre code fonctionne sans les sauts de ligne, donc la réponse devrait inclure cette version.
Martin Ender
D'accord, j'ai écrit la taille par la taille du fichier. À propos de la façon dont ce code fonctionne - il n'y a pas de différence entre une version lisible et une version ligne.
Yurii Blok
Je ne pense pas qu'il soit correct de ne pas inclure le nombre d'octets, #include <string>ni l'un using namespace std;ni l' autre, using std::string;si votre fonction ne peut pas être compilée sans eux.
hvd
1

Pip , 60 + 1 = 61 octets

Un octet ajouté pour le ndrapeau.

YsX6.\"\   ___/o>-(___)"  '' ''  \"<>8yXa-1.YyR^"-o'"Y^",-`"

Construit une chèvre éveillée sous forme de liste de lignes et la glisse dans y. Les cordes se multiplient pour obtenir des a-1chèvres éveillées. Remplace -o'par ,-`in yet le concatène jusqu'au bout. Impressions, séparées par une nouvelle ligne.

Essayez-le en ligne!

(Je pense que c'est la première fois que j'utilise la syntaxe de chaîne échappée de Pip \"...\", qui autorise des guillemets doubles dans la chaîne.)

DLosc
la source
1

CJam , 58 octets

ri{S6*"\   ___/o>,(___)\"  '' ''  "+\{'o`"`-"er}|8/}%W%zN*

Essayez-le en ligne!

Explication

ri                               e# Read an integer from input
{                                e# Map the following block to the range 0..input-1
 S6*                             e#  Push 6 space characters
 "\   ___/o>,(___)\"  '' ''  "+  e#  Push this string and concatenate with the spaces
 \                               e#  Bring the number being mapped to the top
 {                               e#  If it's 0, execute this block:
  'o`                            e#   Push the string "'o"
  "`-"                           e#   Push the string "`-"
  er                             e#   Transliterate the large string by replacing characters
                                 e#    from "'o" with respective characters from "`-"; this
                                 e#    makes the sleeping goat.
 }|                              e#  (end if)
 8/                              e#  Split the string into chunks of length 8
}%                               e# (end map)
W%                               e# Reverse the array, since the sleeping goat was made at 
                                 e#  the beginning
z                                e# Transpose
N*                               e# Join with newlines
Chat d'affaires
la source
1

Python 2.7, 101 113 octets

Edit: Ajout de la définition de la fonction

def f(n):
 m=n-1
 print "      \ "*n+"\n"+"  ___/o>"*m+"  ___/->\n"+'-(___)" '*n+"\n"+" '' ''  "*m+" ``"*2

dé-golfifié:

m=n-1              # Replacement variable. Saves 6 bytes
"      \ "*n+"\n"+ # Print ears, same for all goats!
"  ___/o>"*m+      # Print eyes of n-1 awake goat
"  ___/->\n"+      # Print eye of sleeping goat
'-(___)" '*m+      # Print body of n-1 awake goat
',(___)"\n'+       # Print body of sleeping goat
+" '' ''  "*m+     # Print the legs of n-1 awake goat
" ``"*2            # Print legs of sleeping goat using *2 operator to save 1 byte

Remarque Python2.7 est un octet plus court que Python3 car il n'a pas besoin de parentesis lors de l'impression.

tigr
la source
nVous avez besoin de recevoir des commentaires et vous avez manqué le changement de queue pour la chèvre endormie (avez-vous également vu la réponse de 3.6 de Py?).
Jonathan Allan
Salut! Le changement de queue est là, je ne savais pas si vous deviez gérer les entrées. J'ai jeté un œil à la réponse Python3.6 après avoir écrit la mienne. Est-ce que cela reçoit des commentaires cependant?
Tigr
Ah ok. Ce doit être un programme ou une fonction. Mettra à jour avec une solution pire, pour l'instant :(
tigr
Oui, fonction ou programme, vous l'avez! Vous pouvez supprimer l'espace print "...et placer le tout sur une seule ligne, en utilisant 1 ;pour séparer les deux instructions. La queue ne figure toujours pas dans le code de golf affiché, mais semble avoir été comptée. Tout cela devrait faire 112 octets .
Jonathan Allan
1

05AB1E , 66 octets

’      \ 0  ___/1>02(___)" 0 33 33  ’0¡v123SDys…o-'S:I<×?ys…-,`S:,

Essayez-le en ligne!

Explication

’      \ 0  ___/1>02(___)" 0 33 33  ’0¡v123SDys…o-'S:I<×?ys…-,`S:,   Argument n
’      \ 0  ___/1>02(___)" 0 33 33  ’   The goat, newline replaced by 0 and the eye replaced by 1
0¡                              Split on 0
  v                             For each y in array, do:
   123SD                          Push the array [1,2,3] twice
        ys…o-'S:                  Replace [1,2,3] with ['o','-','\'']
                I<×?              Print that n-1 times without newline
                    ys…-,`S:,     Replace [1,2,3] with ['-',',','`'] and print
Kalsowerus
la source
0

Bash + GNU Coreutils, 165 155 octets

a=" \      
>o/___  
 \")___(-
  '' '' "
eval paste -d \'\' $(seq $1|while read;do
printf '<(echo "$a") '
done) | sed "s/-/,/;s/o/-/;s/'' ''/"'`` ``/'|rev

Courir avec:

bash my_pgm.bash N

Fondamentalement , le programme imprime N fois de la même chèvre (inversé), et substitue le premier -, pour ,la première opour -et le premier '' ''pour les accents graves. Puis inverse les lignes.

andlrc
la source
0

PHP, 133 131 octets

for(;$y<32;$y+=8)for($x=$argv[1];$x--;)echo substr("      \   ___/".($x?"o>-(___)\"  '' ''  ":"->,(___)\"  `` ``  "),$y,8),"
"[$x];

J'ai trouvé deux octets pour jouer au golf loin de l'une des versions sans curlys.

Titus
la source
0

PowerShell v2 +, 96 octets

param($n)'      \ '*$n--
'  ___/o>'*$n+'  ___/->'
'-(___)" '*$n+',(___)"'
" '' ''  "*$n+' `` ``'

(ab) utilise la Write-Outputmise en forme par défaut pour inclure une nouvelle ligne entre les éléments. Utilise la concaténation et la multiplication de chaînes pour construire les chèvres ligne par ligne. La seule astuce réelle est la première ligne $n--pour afficher le nombre correct d'épis, puis une post-décrémentation, de $nsorte qu'elle soit correcte pour le reste des lignes.

PS C:\Tools\Scripts\golfing>  1..4|%{.\counting-goats-to-sleep.ps1 $_}
      \ 
  ___/->
,(___)"
 `` ``
      \       \ 
  ___/o>  ___/->
-(___)" ,(___)"
 '' ''   `` ``
      \       \       \ 
  ___/o>  ___/o>  ___/->
-(___)" -(___)" ,(___)"
 '' ''   '' ''   `` ``
      \       \       \       \ 
  ___/o>  ___/o>  ___/o>  ___/->
-(___)" -(___)" -(___)" ,(___)"
 '' ''   '' ''   '' ''   `` ``
AdmBorkBork
la source
0

Ruby, 102 octets

m=-1+n=gets.to_i
puts'      \ '*n,'  ___/o>'*m+'  ___/->',(?-+a='(___)" ')*m+?,+a," '' ''  "*m+" ``"*2
cia_rana
la source
0

Python 3. 170 octets

lambda n:'\n'.join(map(lambda*l:''.join(l),*map(lambda w:(' '*6+'\ ','  ___/'+(w and'o'or'-')+'>',(w and'-'or',')+'(___)" ',w and" '' ''  "or' `` ``  '),range(n)[::-1])))

hmm, apparemment, la construction de la chaîne sans faire de manipulation de liste donne un code plus court

Jeffrey04
la source
0

Formule IBM / Lotus Notes, 187 174 188 octets (sans concurrence)

MODIFIER Trouver un espace qui n’aurait pas dû être là et supprimer un @Implode inutile.

188 car j'avais manqué le fait que la queue de la chèvre endormie est différente :-(

B:=@Repeat("      \\  ";a);C:=@Repeat("     /o> ";a-1)+"     /->";D:=@Repeat("  ---    ";a);E:=@Repeat(",(___)\"  ";a);F:=@Repeat(" `` ``   ";a);@Implode(B:C:D:E:F;@NewLine)

Ungolfed:

B:=@Repeat("      \\  ";a);
C:=@Repeat("     /o> ";a-1)+"     /->";
D:=@Repeat("  ---    ";a);
E:=@Repeat("`(___)\"  ";a-1)+",(___)\"  ";
F:=@Repeat(" `` ``   ";a);
@Implode(B:C:D:E:F;@NewLine)

Usage:

Créez un formulaire Notes avec deux champs nommés a et g.

a = éditable, nombre, g = calculé, texte.

Collez la formule ci-dessus dans g et donnez une valeur par défaut de 0.

Définissez la police de formulaire sur Terminal.

Créez un nouveau document avec le formulaire, entrez un nombre et appuyez sur F9 pour mettre à jour les chèvres.

Échantillons:

enter image description here

enter image description here

enter image description here

Pas de concurrence car le format se gâte lorsque le nombre de chèvres atteint la largeur de la page.

Compte tenu d' un écran infiniment large , il devrait travaillera pour un certain nombre de chèvres quoique . Voici à quoi cela ressemble quand la page n'est pas assez large.

enter image description here

ElPedro
la source
Pourquoi est-il non-concurrent? Chaque réponse est comme ça. Cela s'appelle l'emballage.
mbomb007
Merci pour la clarification @ mbomb007. J'essayais d'être honnête et de ne pas manquer de respect aux meilleurs golfeurs que moi. Je suis nouveau à cela. Ok ça concurrence. Il ne gagnera pas mais je parie qu'il n'y aura pas trop de golfeurs Lotus Notes pour me battre avec le langage de la formule
ElPedro
Pour être honnête, je parie qu’il n’y aura pas trop de golfeurs Lotus Notes.
ElPedro
0

Emacs Lisp, 241 octets

(defvar s'("     \\""  ___/->"",(___)\""" `` ``"))(defun a()(dotimes(n 4 g)(setf(nth n g)(format"%s%s"(nth n'("     \\  ""  ___/o>""-(___)\" "" '' ''  "))(nth n g)))))(defun g(n)(let((g(copy-seq s)))(mapcar'message(dotimes(i(- n 1)g)(a)))))

"Légèrement non-golfé"

(defvar s'("     \\""  ___/->"",(___)\""" `` ``"))
(defun a()(dotimes(n 4 g)(setf(nth n g)(format"%s%s"(nth n'("     \\  ""  ___/o>""-(___)\" "" '' ''  "))(nth n g)))))
(defun g(n)(let((g(copy-seq s)))(mapcar'message(dotimes(i(- n 1)g)(a)))))

sest une chèvre endormie, aajoute une chèvre éveillée et g(n)est la fonction de comptage.

Lord Yuuma
la source
0

Java 8, 236 222 218 173 octets

n->{String x="\n",a="",b=a,c=a,d=a;for(;n-->0;a+="      \\ ",b+="  ___/"+(n<1?"-":"o")+">",c+=(n<1?",":"-")+"(   )\" ")d+=(n<1?" `` ``":" '' ''")+"  ";return a+x+b+x+c+x+d;}

Explication:

Essayez-le en ligne.

n->{                                // Method with integer parameter and String return-type
  String x="\n",                    //  New-line String to reduce bytes
         a="",                      //  Row 1 String, starting empty
         b=a,                       //  Row 2 String, starting empty
         c=a,                       //  Row 3 String, starting empty
         d=a;                       //  Row 4 String, starting empty
  for(;n-->0;                       //  Loop `n` times:
    a+="      \\ ",                 //   Append the horns to row 1
    b+="  ___/"+(n<1?"-":"o")+">",  //   Append the back and head to row 2
    c+=(n<1?",":"-")+"(   )\" ")    //   Append the tail, body, and beard to row 3
    d+=(n<1?" `` ``":" '' ''")+"  ";//   Append the legs to row 4
  return a+x+b+x+c+x+d;}            //  Return the four rows, separated by new-lines
Kevin Cruijssen
la source
0

Toile , 58 octets

>o/___¶ ")___(-∙ \;∔± ''2×∔╶╷×>-/___¶ ")___(,∙ \;∔± ``2×∔+

Essayez-le en ligne!

C'est une réponse plutôt ennuyeuse, vraiment ... construit la chèvre éveillée, la répète horizontalement n-1, construit et ajoute la chèvre endormie, affiche le résultat.

hakr14
la source