Défi
Créez une fonction ou un programme qui, lorsqu'un entier est attribué size
, effectue les opérations suivantes:
Si size
est égal à 1, sortie
H H
HHH
H H
Si size
est supérieur à 1, sortie
X X
XXX
X X
où X
est la sortie du programme / fonction poursize - 1
(Si vous préférez, vous pouvez faire correspondre le scénario de base à 0
condition que vous le précisiez dans votre réponse)
Tous les formats de sortie suivants sont acceptables, selon ce qui vous convient le mieux:
Une chaîne de la structure requise avec deux caractères distincts correspondant à
H
etspace
Un tableau à deux dimensions avec la structure requise, avec deux valeurs distinctes correspondant à
H
etspace
Un tableau / une liste de chaînes, avec une ligne de la sortie dans chaque chaîne, avec deux valeurs distinctes correspondant à
H
etspace
Les espaces de début sont autorisés, tant qu'il y a un nombre constant d'espaces de début sur chaque ligne. Les deux caractères de sortie distincts peuvent dépendre de tout ce que vous choisissez, tant qu'ils sont différents.
Spécifiez le format de sortie renvoyé par votre code.
Cas de test
1
H H
HHH
H H
2
H H H H
HHH HHH
H H H H
H HH HH H
HHHHHHHHH
H HH HH H
H H H H
HHH HHH
H H H H
3
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
Il s’agit d’un code-golf , le nombre d’octets le plus faible pour chaque langue a donc gagné!
la source
Réponses:
Wolfram Language (Mathematica) , 46 octets
Retourne un tableau 2d de
0
s et1
s.Essayez-le en ligne!
la source
Nest
(plusieurs fois) la fonction plusieurs fois. Comme toutes les autres soumissions (Jelly?) LeArrayFlatten
... est ... bien intégré, mais il se comporte un peu commeFlatten[#,{{1,3},{2,4}}]
dans ce cas. (n'a pas testé)Toile ,
14 à12 octetsEssayez-le ici!
Explication:Où
I
est l'entrée,X
le motif généré par la boucle précédente ("H" pour la première boucle) et<space>
l'espace vide de la première et de la troisième rangée du motif, ajouté implicitement par+
.-2 octets grâce à dzaima !
la source
MATL ,
12 à11 octetsAvec une entrée donnée
n
, ceci produit une matrice contenant0
etn
.Essayez-le en ligne!
Pour convertir ceci en matrice de caractères
H
et espace ajouterg72*c
dans l'en-tête. Essayez-le aussi en ligne!Ou ajouter
]1YC
pour voir la matrice affichée graphiquement. Essayez-le sur MATL Online!Explication
la source
Stax ,
16 à15 octetsExécuter et déboguer
Ceci est la représentation ascii du programme avec commentaires. Ce programme construit le H latéralement, puis se transpose une fois à la fin.
Programme Bonus 14 octets - utilise son entrée comme caractère de sortie. Théoriquement, cela ne produirait pas la bonne forme à 10, car il a 2 chiffres, mais tenter de l'exécuter bloque mon navigateur.
la source
Ruby , 72 octets
La sortie est une liste de chaînes, une chaîne par ligne.
Essayez-le en ligne!
la source
Haskell , 50 octets
Essayez-le en ligne!
Fait une grille de 0 et de 1. Un caractère plus long pour les espaces et les H.
Haskell , 51 octets
Essayez-le en ligne!
la source
Jelly ,
171615 octetsC'est un programme complet qui imprime un tableau 2D de 1 et de 0 .
Essayez-le en ligne! ou voir la sortie avec H et les espaces.
la source
APL (Dyalog Classic) , 14 octets
Essayez-le en ligne!
⎕
entrée évaluée n,⍳⎕⍴3
tous les n-tuples avec des éléments de 0 1 22|
mod 2×/¨∘.≥⍨
forme une matrice en comparant chaque paire de tuples a et b - si tous les éléments de a sont ≥ les éléments correspondants de b, c'est un 1, sinon 0la source
SOGL V0.12 , 13 octets
Essayez-le ici!
la source
R , 64 octets
Essayez-le en ligne!
Réduit par le produit Kronecker, un port sans vergogne de la réponse de Luis Mendo .
Le pied de page affiche le résultat bien, mais cela est une fonction anonyme qui retourne un
matrix
des1
pourH
et0
pour l' espace.la source
Java (OpenJDK 9) , 135 octets
Essayez-le en ligne!
Retourne un
int[][]
avec0
pourH
et1
pourspace
. En fait, cela "sculpte" un mur deH
's au lieu de "empiler"H
.Des explications
la source
V , 22 octets
Essayez-le en ligne!
Hexdump:
C'est fondamentalement la même approche que le tapis Sierpinski et The Fractal Plus sur Anarchy Golf.
la source
Python 2 , 70 octets
Essayez-le en ligne!
La fonction génère une liste de chaînes.
Python 2 , 84 octets
Essayez-le en ligne!
Utilise le même modèle que les autres modèles fractals 3 * 3:
la source
J ,
2522 octetsEssayez-le en ligne!
la source
Haskell,
73676455 octetsCela ne fonctionne qu'avec la dernière version de
Prelude
, car il exporte<>
depuisData.Semigroup
. Pour l'exécuter sur TIO, ajoutez une importation comme faite ici: Essayez-le en ligne!Edit: -9 octets grâce à @ Potato44.
la source
(#)
jusqu'àg#f=g<>f<>g
si vous utilisez GHC 8.4. C'est parce queSemigroup
c'est maintenant dans le prélude.Perl 5 ,
4644434140 octets1 décompte basé. Usages
0
et1
pourH
et espace, a une avance1
(espace)Basé sur une idée classique de mtve.
Essayez-le en ligne!
la source
\321
est nécessaire, tout personnage semble fonctionner.//
et$'
peut également remplacer//g
et$`
, mais je ne suis pas sûr que cela mène à une amélioration.\321
trouvait le complément de bits de.
(utilisé pour générer un autre motif fractal). Mais j'ai abandonné le bit-complément, bien entendu, je n'en ai plus besoin. J'ai utilisé//g
et $ `afin que je puisse facilement tester le code depuis la ligne de commande (//
et$'
ne mène pas à un gain que je peux voir, l'octet gagné est perdu avec un espace ou!
encore)Vim -
665654 octetsA @ c H esc " r d ^ q c { ctrl-v } " a y g v r space g v d " a P P " a P V G " b y P g v ctrl-v $ d " a P . . G " b p q @ r
L'entrée est considérée comme un nombre dans la mémoire tampon.
la source
:set nowrap
pour voir le résultat, pour 4 et plus.APL (Dyalog Unicode) ,
38SBCS de 34 octetsLa sortie est un tableau à 2 dimensions avec
1
H et l'0
espace.Essayez-le en ligne!
la source
f←
et compter les caractères comme 1 octet chacun: codegolf.meta.stackexchange.com/questions/9428/… Il est également considéré comme légal de prendre des entrées⎕
, c'est-à-dire de les remplacer⍣⍵
par⍣⎕
des accolades du dfn extérieur.1 1⍴1
peut être écrit au fur⍪1
et à mesure que les parens autour de l'opérateur deviennent inutiles. Si vous connaissez les trains , ils peuvent beaucoup vous aider ici.⍨
est votre ami:(⍵,(0×⍵),⍵)
=>(⍵,⍵,⍨0×⍵)
Charbon de bois ,
3029 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Imprimez l'original
H
.Boucle sur les premières
size
puissances de 3.Ramène le curseur à l'origine.
Trim
a besoin de cela car l’impression originale de laH
et la réflexion ci-dessous déplacent le curseur.Copiez l'itération précédente vers le bas pour créer un domino.
Copiez le résultat vers le bas et à droite pour créer un tétromino.
Coupez la toile en
L
forme de triomino.Réfléchissez la toile horizontalement et verticalement avec un chevauchement, complétant l'itération.
Le charbon de bois est meilleur sur certaines fractales que sur d’autres. Voici une idée similaire, mais presque deux fois plus petite:
Essayez-le en ligne! Le lien est vers la version verbeuse du code.
la source
Python 2 , 143 octets
Essayez-le en ligne!
-30 octets grâce à récursif
le code wrapper est pour une bonne mise en forme. cela fonctionne bien si vous l'enlevez
la source
PHP 7,
125109 octetsune approche différente: au lieu d’implémenter et d’aplatir le résultat de manière récursive, il suffit de parcourir les rangées et les colonnes et d’utiliser une troisième boucle pour savoir s’il faut imprimer
H
ou non_
.Edit: beaucoup de choses en combinant les boucles de lignes / colonnes à une, bien qu’il ait fallu un peu pour que la diminution de la boucle interne soit correcte. Requiert PHP 7 pour l'opérateur électrique.
Essayez-les en ligne !
affiche le résultat. Courez comme un tuyau avec
-nR
.fonction qualifiée,
147130 octetsrenvoie une seule chaîne. Exécuter avec la configuration par défaut (non
php.ini
).la source
%3==1
peut être remplacé par%3&1
.Gelée , 25 octets
Essayez-le en ligne!
Bien que cela soit plus long que la soumission Jelly existante , elle essaie de générer chaque caractère indépendamment à partir de la coordonnée.
En particulier, si la coordonnée est
respectivement.
(x,y)
(1-indexation), le premier lien retourne0
et1
correspond àH
etDe plus, les 5 octets
ị⁾ HY
étant utilisés pour le formatage, ce programme (20 octets) est également valide (mais le résultat n'est pas aussi beau):la source
T-SQL ,
267261 octetsla source
PHP 7, 153 octets
Exécutez avec la configuration par défaut (non
php.ini
) ou essayez-le en ligne .la source
Perl, 64 octets
Requiert
-p
, l'entrée provient de stdin. La sortie est un H deH
s.Essayez-le en ligne!
la source
-p
(je pense que c'est trop clément pour perl, mais c'est comme ça maintenant)PHP (5.6+), 94 octets
Utilisé avec l'
-F
option de ligne de commande. Suppose que l’interprète utilise les valeurs par défaut (-n
). Ne fonctionnera pas sur les versions antérieures à 5.6, à cause de l'opérateur électrique.Utilisation de l'échantillon
Essayez-le en ligne!
la source
$s.$s.$s
au lieu de$s.=$s.$s
. Et vous n’avez pas besoin de<?
au-R
lieu de-F
.-R
, pouvez-vous me montrer l'utilisation complète?-nF
:echo <input> | php -nR '<code>'
.-r
est presque le même:php -nr '<code>' <arguments>
.preg_filter
consiste à itérer chaque ligne tout en préservant les nouvelles lignes, à peu près équivalentes àjoin("\n",array_map(function(){...},split("\n",$s.$s.$s)))
, mais nettement moins verbeuses. J'avais initialementstr_pad
mais changé poursprintf
parce que c'est un octet plus court:'"\0".str_pad($$i++/$i&1?"\0":"",$i)."\0"'
CJam -
103978776 octetsCe programme effectue une récursion assez verbeuse "codée à la main". Pas de multiplications matricielles intelligentes. Tout au long de la récursivité, au-dessus de la pile, il y a un tableau rassemblant les résultats obtenus à partir des appels parents. Juste après chaque ensemble d'appels récursifs, la sortie des appels récursifs doit être compressée pour que la sortie soit correcte lorsque la pile est imprimée linéairement à la fin du programme. La pile d'arguments transmise à la récursivité est conservée dans la variable
A
.Essayer en ligne
la source
K (ngn / k) , 18 octets
Essayez-le en ligne!
la source
Japt , 23 octets
Essayez-le en ligne!
Déballé et comment ça marche
Utiliser le motif transposé
est beaucoup plus facile à manipuler que le
H
motif original , du moins dans Japt où l’I
on peut le faire avec répétition de chaîne et remplissage central.la source
C ++ 11 - 138 octets
Pas sûr si cette réponse a une syntaxe valide ici cependant.
Ungolfed avec code de travail
la source