Histoire
Avertissement: Peut contenir des informations inventées sur les kangourous.
Les kangourous traversent plusieurs étapes de développement. En vieillissant et en force, ils peuvent sauter plus haut et plus longtemps, et ils peuvent sauter plus de fois avant d'avoir faim.
Au stade 1 , le kangourou est très petit et ne peut pas sauter du tout. Malgré cela, il a constamment besoin de nourriture. Nous pouvons représenter le modèle d'activité d' un kangourou de stade 1 comme celui-ci.
o
À l'étape 2 , le kangourou peut faire de petits sauts, mais pas plus de 2 avant d'avoir faim. Nous pouvons représenter le modèle d'activité d' un kangourou de stade 2 comme celui-ci.
o o
o o o
Après la phase 2, le kangourou s’améliore rapidement. À chaque étape suivante, le kangourou peut sauter un peu plus haut (1 unité dans la représentation graphique) et deux fois plus souvent. Par exemple, le modèle d'activité d' un kangourou de stade 3 ressemble à ceci.
o o o o
o o o o o o o o
o o o o o
Pour l'étape n , le modèle d'activité consiste en 2 n-1 sauts en V de hauteur n .
Par exemple, pour l'étape 4 , il y a 8 sauts de hauteur 4 .
o o o o o o o o
o o o o o o o o o o o o o o o o
o o o o o o o o o o o o o o o o
o o o o o o o o o
Tâche
Écrivez un programme complet ou une fonction prenant un entier positif n en entrée et imprimant ou renvoyant la représentation artistique ASCII du modèle d'activité d'un kangourou d' étape n .
Les espaces blancs environnants et les codes d'échappement ANSI sont autorisés, à condition que le motif ressemble exactement à l'illustration ci-dessus.
Si vous choisissez une fonction qui renvoie la sortie, elle doit renvoyer une chaîne unique ou un tableau de caractères affichant la sortie correcte à l'impression. Le retour d'un tableau de chaînes n'est pas autorisé.
Vous pouvez utiliser n'importe quel caractère imprimable, sans espace, au lieu de o
, tant qu'il est cohérent dans le modèle d'activité et dans tous les modèles de votre réponse.
C'est du code-golf ; que la réponse la plus courte en octets soit gagnante!
o
. Pouvez-vous également utiliser n'importe quel caractère pour représenter les espaces (tant qu'ils sont différents?)?Réponses:
05AB1E ,
12 à10 octetsExplication:
Utilise le codage CP-1252 . Essayez-le en ligne!
la source
MATLAB,
92 90 8684 octetsEssayez-le en ligne!
eye
crée une matrice d'identité. Si nous le retournons et concaténons l'original,[fliplr(p),p]
nous obtenons (pourn=3
):Avec
repmat(...,1,2^n/2)
nous répétons cette2^(n-1)
fois et obtenonsDe cela, nous supprimons simplement les colonnes inutiles, avec
A(:,n+1:n:end)=[];
la source
Charbon de bois , 14 octets
Essayez-le en ligne!
Explication
Nλ
entre un entier dansλ
.P^
est une impression multidirectionnelle (SE et SW) de×λo
(multiplication de chaîne deλ
aveco
). PuisF⁻λ¹
exécute un temps de boucle forλ - 1
, qui‖O→
reflète le tout à droite avec chevauchement.la source
P^
est une impression multidirectionnelle (SE et SW) " Cool, c'est quelque chose que vous ne voyez pas très souvent dans les langages de programmation!Python 2 , 87 octets
Essayez-le en ligne!
Utilise une formule pour les coordonnées
(i,j)
contenant un cercle, puis joint et imprime la grille. Il y a beaucoup d'odeur de golf ici -''.join
, deux plages imbriquées,for
terminéeexec
, donc il y aura probablement des améliorations.la source
Python 2,
8381 octetsEssayez-le en ligne!
la source
exec
astuce peut économiser un peu plus.Befunge,
9891 octetsCeci utilise a
,
à la place deo
, car cela nous permet de sauvegarder quelques octets.Essayez-le en ligne!
Explication
Étant donné le numéro d'étape n , nous commençons par calculer les trois paramètres suivants du motif:
Le jump_len est normalisée pour éviter qu'il soit zéro pour un kangourou étape 1 avec:
Nous pouvons ensuite sortir le motif de saut en itérant sur les coordonnées x et y de la zone de sortie et en calculant le caractère approprié à afficher pour chaque emplacement. La coordonnée y compte à rebours de n - 1 à 0 et la coordonnée x à la largeur - 1 à 0. Nous déterminons si un point doit être affiché avec la formule suivante:
Le booléen show_dot est utilisé comme index de table pour déterminer le caractère réel à afficher à chaque emplacement. Pour économiser de l'espace, nous utilisons le début de la dernière ligne de source comme cette table, c'est pourquoi notre
o
personnage finit par être un,
.la source
J ,
2825 octetsSauvegardé de 3 octets grâce à @ Conor O'Brien .
Ceci est basé sur l'astuce palindrome de la solution de @ muddyfish .
Essayez-le en ligne!
Explication
la source
' o'{~3 :'(}."1,.~|."1)^:y=i.y'
. J'aimerais pouvoir trouver un moyen de supprimer ce verbe explicite ... Darn^:
.u&v
tout à fait agréable.Pyke, 11 octets
Essayez-le ici!
la source
Haskell , 100 octets
Essayez-le en ligne! Utilisation:
k 3
.Explication:
Étant donné une ligne
r
, une colonnec
etm = 2(n-1)
uno
est défini sic mod m
est égal àr
oum-r
. La compréhension de la liste la plus externe définit la gamme der
partirn-1
pour0
les prochains jeux un de la gammec
de0
lam*2^(n-1)
et la plus à l' intérieur agit comme condition de retour'o'
si la formule ci - dessus est remplie et' '
autrement. Cela donne une liste de chaînes qui est transformée en une seule chaîne séparée par une nouvelle ligneunlines
. Pour quen=1
la fonction produise une erreur de division par zéro, ce cas est donc traité explicitement dans la première ligne.la source
['o'|mod c m`elem`[m-r,r]]
rôle!C #,
180, 173171 octetsNe gagnerez pas ceci, en postant pour les autres candidats C # comme quelque chose qu’ils peuvent battre
programme complet:
edit: -7 octets grâce à @KevinCruijssen
edit: -2 octets, simplifié si
la source
,i
; vous pouvez le réutiliseri
au lieu d’n-1
après la vérification if;||
peut être|
;j++
peut être enlevé et++
peut être ajouté àj
. Donc au total:(n)=>{var s=new string[n];for(int x=0,a=1,j=0,i;j<=Math.Pow(2,n)*(n*n-n);){i=j++%n;s[n-i-1]+=x%n==i?'o':' ';if(i==n-1){x+=a;a*=x==i|x==0?-1:1;}}return string.Join("\n",s);};
( 173 bytes )||
et&&
mais gardé puis dans le programme complet.Pyth , 30 octets
Un programme qui prend l'entrée d'un entier et imprime le résultat. Utilise un guillemet
"
au lieu deo
.Essayez-le en ligne!
Comment ça marche
la source
Python 2 ,
11511310898 octetsEssayez-le en ligne!
Utiliser
range(-n+1,n-1)
pour créer le nombre absolu d’espaces entre le bas et leo
pour générerpuis en ajoutant d'autres copies, en faisant pivoter le tout à 90º et en ajoutant le dernier
o
en bas à droitela source
J ,
5847 octetsEnregistrement de 11 octets en utilisant l'idée de matrice d'identité de la solution de @ flawr .
Essayez-le en ligne!
Une application simple de la définition.
Explication
Car
n = 3
, crée la matrice d'identité d'ordre n .Puis le refléter pour faire
Répétez cela 2 n -1 fois et déposez la tête de chaque ligne sur les doublons
Utilisez ces valeurs comme indices dans le tableau de caractères
[' ', 'o']
pour générer un tableau de caractères 2d.la source
JavaScript (ES6), 83 octets
la source
Gelée , 11 octets
TryItOnline!
Comment?
Le caractère imprimable utilisé est
0
.S'appuie sur la méthode utilisée par Dennis pour répondre à sa question précédente au sujet des kangourous.
la source
ŒḄ¡Ṭ€z0o⁶ṚY
.MATL, 27 octets
Essayez-le sur MATL Online
la source
Python 3 , 177 octets
Essayez-le en ligne!
la source
Perl 6 ,
1049388 octetsInsère
o
dans un tableau 2D, puis l’imprime.la source
05AB1E , 16 octets
Essayez-le en ligne!
Pourquoi et comment
la source
Java 8, 254 octets
Golfé:
Ungolfed:
Sortie du programme:
la source
PHP, 157 octets
Ungolfed:
la source
'o'
avec1
et chaque''
avec0
. Espérons que cela fonctionne, En outre, les espaces peuvent être remplacés parO
ou9
. L'important est le motif, selon les règles. Mais vérifiez d'abord