La plupart des gens connaissent le trope sur le comptage des moutons pour s'endormir. Il y a un troupeau de moutons, certains sautant par-dessus une clôture, et vous comptez les moutons pendant qu'ils sautent. Soi-disant, cela aide à calmer votre esprit et vous met dans un état de sommeil de sorte que vous vous endormez.
Voici un mouton ASCII tourné vers la droite, attendant d'être compté:
'00^>
||
Voici un mouton ASCII sautant par-dessus une clôture:
'00^>
/\
++
En voici une tournée vers la gauche, ayant déjà été comptée:
<^00'
||
Le défi
Étant donné deux entiers d'entrée, n
et m
, en n > 2
décrivant le nombre total de moutons et en m > 0
disant combien de moutons ont déjà été comptés, affichez une représentation artistique ASCII du comptage des moutons pour s'endormir.
Maintenant, pour la torsion:
- En raison de la taille des enclos où se trouvent les moutons, la rangée du haut ne peut contenir qu'un maximum de
10
moutons, sans compter les moutons qui sautent actuellement, qui doivent également toujours être dans la rangée du haut. - Les rangées suivantes ne peuvent pas avoir les moutons en dehors de leurs enclos respectifs (vous ne pouvez pas avoir plus de moutons à gauche dans la deuxième rangée que vous n'en avez dans la première rangée, et même pour la droite).
- S'il y a
11
ou plus de moutons au total, la rangée du haut doit contenir10
plus les moutons sauteurs. - Les espaces blancs en tête / arrière et les espaces entre les moutons n'ont pas d'importance, tant que:
- Il y a au moins un espace entre les moutons
- Tous les personnages s'alignent correctement.
Tant que ces règles sont respectées, la disposition réelle des moutons dépend de votre mise en œuvre.
Exemples
Par exemple, voici n=3
et m=1
, le cas le plus simple.
'00^>
'00^> /\ <^00'
|| ++ ||
Voici n=11
et m=6
, le plus de moutons pouvant tenir sur une seule ligne horizontale.
'00^>
'00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00'
|| || || || ++ || || || || || ||
Voici un autre exemple de cela, avec n=11
etm=1
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00'
|| || || || || || || || || ++ ||
Un plus grand exemple avec n=30
etm=12
'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'
|| ||
Voici un exemple avec n=17
etm=2
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || ||
Voici un exemple avec n=19
etm=3
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00'
|| || || || || || || ++ || || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || || ||
'00^>
||
Notez que tous ces exemples sont . Pour le dernier, vous pouvez créer un réseau vertical de moutons sur le côté droit, ce qui permettra au côté gauche de tenir sur deux rangées à la place. Ou peut-être un carré de moutons de 2x2 sur le côté droit, qui pourrait également adapter les moutons du côté gauche sur deux rangées. Etc.
E / S et règles
- L'entrée peut être prise dans n'importe quel format raisonnable et par n'importe quelle méthode pratique .
- Les sauts de ligne de début / fin ou d'autres espaces sont facultatifs, à condition que les caractères s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- La sortie peut être vers la console, retournée sous forme de liste de chaînes, retournée sous forme de chaîne unique, etc.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
n=11
etm=9
n=11
cela0<m<=10
. Cela vous oblige à avoir tous les moutons sur la rangée supérieure et un nombre dynamique de moutons à gauche (n-1-m
) et à droite (m
) de la clôture et ne peut pas utiliser des tailles de stylo fixes.Réponses:
APL (Dyalog Unicode) , 118 octets SBCS
Infixe anonyme lambda. Prend
n
comme argument de gauche etm
comme argument de droite. Renvoie un résultat de tableau imbriqué, mais l'affichage par défaut de ce tableau imbriqué suit les spécifications. Utilise jusqu'à neuf colonnes pour les moutons comptés et les colonnes restantes pour les moutons en attente.Essayez-le en ligne!
{
…}
Lambda anonyme;⍺
est l'argument gauche,⍵
est l'argument droitCette fonction comporte trois parties distinctes: attente , saut et comptage . Chacun est entre parenthèses, ce qui fait que le résultat est une liste à trois éléments.
Dénombré
(r⍴(×/r←9,⍨∘⌈⍵÷9)↑⍵⍴⊂S←⌽↑''(b←'''00^<')' ||')
''(
… Les)' ||'
trois lignes d'un mouton compté en miroir, celle du milieu étant:b←'''00^<'
le corps et est affecté àb
↑
mélanger la liste des chaînes dans une matrice de caractères (remplissage avec des espaces)⌽
miroir quiS←
assigner àS
(gros heep S )⊂
le joindre afin que nous puissions le traiter comme une unité⍵⍴
utiliser le nombre de moutons comptés pour remodeler cycliquement(
… En)↑
prendre le nombre suivant d'éléments (remplissage avec des éléments prototypiques, c'est-à-dire le même tableau mais avec tous les caractères remplacés par des espaces)⍵÷9
un neuvième du nombre de moutons comptés⌈
rassembler9,⍨
ajouter 9 à celar←
assigner àr
(ce que nous allons r Eshape avec, lignes et colonnes)×/
produit de cette liste (c'est le nombre d'éléments dont nous avons besoin, y compris les remplissages)r⍴
remodeler cela en un tableau avec les longueurs de dimensionr
Sauter
(↑(s←'>',⍨¯1↓b)' /\' ' ++')
(
… Les)' /\' ' ++'
trois lignes d'un mouton sauteur, la première étant:¯1↓b
supprimer le dernier caractère deb
'>',⍨
ajouter une tête tournée vers la droites←
magasin danss
(petite s Heep)↑
mélanger la liste des chaînes dans une matrice de caractères (remplissage avec des espaces)Attendre
(r⍴(×/r←d,⍨⌈w÷d←10-⍵⌊⊢/r)↑w⍴(w←⍺-⍵+1)⍴⊂s@2⌽S)
⌽S
miroirS
s@2
mettres
à la ligne 2 de cela (en remplaçant les données actuelles là-bas)⊂
le joindre afin que nous puissions le traiter comme une unité(
…)⍴
Remodelez cela cycliquement à la taille suivante:⍵+1
le nombre de moutons comptés plus un⍺-
soustrayez cela du totalw←
attribuer àw
( w aiting)(
… En)↑
extraire le nombre d'éléments suivant (remplissage avec des éléments prototypiques)⊢/r
l'élément le plus à droite der
(c'est-à-dire le nombre de colonnes utilisées pour les moutons comptés)⍵⌊
le minimum du total et que10-
soustrayez cela de dixd←
affecter àd
( d ifference; colonnes manquantes)w÷
diviserw
par ça⌈
arrondir (donne le nombre de lignes nécessaires)d,⍨
ajouterd
r←
assigner àr
(ce que nous allons r Eshape avec, lignes et colonnes)×/
produit de cette liste (c'est le nombre d'éléments dont nous avons besoin, y compris les remplissages)r⍴
remodeler cela en un tableau avec les longueurs de dimensionr
la source
n=11,m=9
et que la règle "la rangée du haut doit contenir 10 plus les moutons sauteurs".Javascript,
281,293, 288 octetsSoyez prudent lorsque vous utilisez l'extrait ci-dessous, il y a un risque élevé de narcolepsie soudaine induite.
la source
m = n
vous obtenez une erreur.C, 392 octets
Merci à @Jonathan Frech d'avoir enregistré un octet!
Essayez-le en ligne!
Déroulé:
la source
y+=1+!t
peut êtrey-=~!t
.Python 2 ,
222277 octetsEssayez-le en ligne!
la source
n=11
etm=2
.AWK , 293 octets
Essayez-le en ligne!
J'ai essayé d'utiliser des substitutions de chaînes pour éviter certaines boucles, mais cela a pris beaucoup plus de code.
Explication
Je dois dire que l'art des moutons est plutôt mignon. :)
la source
Fusain , 98 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Entrez le nombre de moutons qui ont déjà été comptés.
Saisissez le nombre total de moutons et calculez combien doivent encore être comptés.
Créez un tableau de deux tableaux. Chaque tableau comprend les éléments suivants:
Reflétez la toile et imprimez le mouton à demi sauteur.
Faites une boucle à travers les moutons de ce côté.
Imprimez un mouton.
Si c'est la fin de la ligne, imprimez quelques nouvelles lignes et espaces pour arriver au début du prochain mouton.
la source