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.
code-golf
string
ascii-art
kolmogorov-complexity
Les passe-temps de Calvin
la source
la source
Réponses:
MATL ,
5653 octetsEssayez-le en ligne!
Explication
Éveiller la chèvre
La chèvre éveillée peut être emballée dans la ficelle
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):
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
À 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
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
Nous retournons maintenant verticalement:
puis transposez et retournez verticalement pour produire le bouc éveillé:
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èresp
,(
,'
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
N
, en travaillant avec des points de code augmentés de 1.Code commenté
la source
Python 3.6, 102 octets
Yaay, cordes f !
la source
Javascript, 122 octets
Répondre
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:
la source
Lot, 234 octets
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.la source
set/pn
travaux ._.^
personnages échappés.Pyke,
5654 octetsEssayez-le ici!
4 octets de trop parce que Pyke n'autorise pas les guillemets doubles dans les chaînes :(
la source
JavaScript (ES6),
110109 octetsAvoir à 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.
la source
'+"'' ''"
(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)f=
dans le nombre d'octets, c'est juste pour être complet.GolfScript , 91 octets
Contribution:
3
Sortie:
Explication
Essayez-le en ligne!
la source
Gelée ,
6256 octetsTestez-le sur TryItOnline
Comment?
la source
PHP, 200 octets
la source
C ++, 180 octets
la source
#include <string>
ni l'unusing namespace std;
ni l' autre,using std::string;
si votre fonction ne peut pas être compilée sans eux.Pip , 60 + 1 = 61 octets
Un octet ajouté pour le
n
drapeau.Construit une chèvre éveillée sous forme de liste de lignes et la glisse dans
y
. Les cordes se multiplient pour obtenir desa-1
chèvres éveillées. Remplace-o'
par,-`
iny
et 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.)la source
CJam , 58 octets
Essayez-le en ligne!
Explication
la source
Python 2.7,
101113 octetsEdit: Ajout de la définition de la fonction
dé-golfifié:
Remarque Python2.7 est un octet plus court que Python3 car il n'a pas besoin de parentesis lors de l'impression.
la source
n
Vous 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?).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 .05AB1E , 66 octets
Essayez-le en ligne!
Explication
la source
Bash + GNU Coreutils,
165155 octetsCourir avec:
Fondamentalement , le programme imprime N fois de la même chèvre (inversé), et substitue le premier
-
, pour,
la premièreo
pour-
et le premier'' ''
pour les accents graves. Puis inverse les lignes.la source
PHP,
133131 octetsJ'ai trouvé deux octets pour jouer au golf loin de l'une des versions sans curlys.
la source
PowerShell v2 +, 96 octets
(ab) utilise la
Write-Output
mise 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$n
sorte qu'elle soit correcte pour le reste des lignes.la source
Ruby, 102 octets
la source
Python 3. 170 octets
hmm, apparemment, la construction de la chaîne sans faire de manipulation de liste donne un code plus court
la source
Formule IBM / Lotus Notes,
187174188 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 :-(
Ungolfed:
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:
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
devraittravaillera pour un certain nombre de chèvresquoique. Voici à quoi cela ressemble quand la page n'est pas assez large.la source
Emacs Lisp, 241 octets
"Légèrement non-golfé"
où
s
est une chèvre endormie,a
ajoute une chèvre éveillée etg(n)
est la fonction de comptage.la source
Java 8,
236222218173 octetsExplication:
Essayez-le en ligne.
la source
Toile , 58 octets
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.la source