Étant donné un nombre n , générez les n premières colonnes de ce modèle:
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################ ...
La hauteur de la colonne à (indexé 1) n est le nombre de 0
bits de fin dans n la représentation binaire de , plus un. Par conséquent, la couche inférieure contient toutes les colonnes, la deuxième couche toutes les deux colonnes, la troisième couche toutes les quatre colonnes, etc.
Règles
- Vous pouvez entrer et sortir par n'importe quelle méthode standard.
- Vous pouvez supposer que l'entrée est un entier compris entre 1 et 999 inclus.
- La sortie peut contenir n'importe quelle quantité d'espace, tant que le motif est intact.
- Le modèle doit être indexé 1 et dans le même format que celui illustré ici.
- Vous pouvez utiliser n'importe quel caractère non blanc à la place de
#
, mais vous ne pouvez pas changer le caractère espace.
Cas de test
1
#
2
#
##
3
#
###
4
#
# #
####
5
#
# #
#####
7
#
# # #
#######
32
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################
Quelques cas de test plus importants peuvent être trouvés ici .
Notation
Ceci est un code-golf , de sorte que le code le plus court en octets dans chaque langue gagne.
#
?Réponses:
Python 2 , 54 octets
Essayez-le en ligne!
Imprime avec beaucoup d'espaces blancs de premier plan. Chaque ligne
i
décomptant à partir den
répète un motif d'2**i-1
espaces suivi d'un#
. Ce motif est répété jusqu'à la largeur de la règle, qui est l'entréen
. Cela se fait en multipliant la chaîne de motif parn
et en prenant les premiersn
caractères avec[:n]
.Le modèle peut être créé par formatage de chaîne pour une alternative de longueur égale.
Une méthode de découpage mignonne est plus longue.
la source
Python 3 , 74 octets
Essayez-le en ligne!
la source
a=2**len(bin(n))
pour 72 octetsV ,
17, 16 octetsEssayez-le en ligne!
Hexdump:
Merci à @KritixiLithos d'avoir enregistré un octet!
Cet algorithme est horriblement inefficace, mais il devrait fonctionner en théorie pour n'importe quelle entrée de taille.
Il fonctionne en générant les n premières itérations du modèle suivant:
Et puis couper toutes les colonnes sauf les n premières . En tant que tel, cela produira une tonne d'espaces blancs de premier plan, mais le PO a déclaré:
Explication:
la source
|
.JavaScript (ES6),
6158 octetsSauvegardé 1 octet grâce à @ETHProductions, puis 2 octets supplémentaires quand j'ai vu que n'importe quel caractère pouvait être utilisé.
Une solution récursive.
Cas de test:
Afficher l'extrait de code
Animation:
Afficher l'extrait de code
la source
c/2|0
pourc>>1
enregistrer un octet.APL (Dyalog) , 21 octets
Essayez-le en ligne!
'# '[
… `] Indexez la chaîne avec⎕
obtenir une entrée⍳
que beaucoup i ntegers2⊥⍣¯1
convertir en binaire, en utilisant autant de chiffres que nécessaire (un nombre dans chaque colonne )⊖
retourner la tête en bas∨⍀
réduction OR cumulative verticale0⍪
concaténer des zéros sur le dessus⊖
retourner à l'envers (c'est-à-dire reculer)1+
ajouter un (pour l'indexation basée sur 1)la source
Gelée ,
1110 octetsEssayez-le en ligne!
1 octet enregistré après l'OP a ajouté une relaxation que le caractère n'a pas à être
#
.la source
Octave, 45 octets
Essayez-le sur Octave Online!
Au lieu d'
'#'
impressions'!'
.la source
PHP , 139 octets
Essayez-le en ligne!
la source
Japt ,
2017 octets3 octets enregistrés grâce à @Shaggy et @ETHproductions
Essayez-le en ligne!
Explication:
Entrée: 5
la source
l
n&-n
capturer que le s final1
et tous les0
s finauxn
. Je ne sais pas si cela va aider, mais ça vaut le coup ...C,
8474 octetsNon golfé:
Testez avec:
Explication
Encore une fois, la récursivité prend moins de caractères en C que l'itération, donc les deux boucles sont exprimées comme les deux invocations récursives.
De plus, C est un excellent langage pour jouer des tours avec des expressions booléennes, permettant de décider de mettre un blanc ou un
#
à exprimer par l'expression32+3*!(i&m)
. Un espace a la valeur ASCII de 32,#
c'est ASCII 35, donc nous obtenons un blanc si l'un des bits du masque est définii
.la source
int i,l,m
?Pyth , 15 octets
Essayez!
explication
la source
Python 2 , 47 octets
Essayez-le en ligne!
la source
JavaScript (ES8), 71 octets
La fonction padStart () a été introduite dans ECMAScript 2017!
Afficher l'extrait de code
JavaScript (ES6), 77 octets
Afficher l'extrait de code
la source
Mathematica, 69 octets
la source
( WESRRMICGSE ): 237 octets
Bien. 'temps de splaining.
Tout d'abord, remplacez tout
COUNTA(R1C:R[-1]C,R[1]C:R[1024]C)+1
par simplement[i]
, pour entrée. le jeton compte le nombre de cellules, sans compter lui-même, qui contiennent une formule, puis en ajoute une, pour s’inclure. Étant donné que WESRRMICGSE fait glisser une formule en fonction de l'entrée que vous lui donnez, ce jeton entraîne toujours l'entrée.on a:
C'est beaucoup plus lisible. Vous allez voir
FLOOR(LOG([i],2),1)
beaucoup le jeton, ce qui signifie simplement prendre la puissance la plus proche de 2, ce qui est inférieur au nombre input ([i]
). par exemple:4->4, 5->4, 6->4, 7->4, 8->8 ...etc
. Je vais le remplacer parGS[[i]]
mieux. en décomposant la clause if, nous testons si la ligne est inférieure ou égale à
GS[[i]]+3
, car la hauteur de toutes les règles est égale à GS [[i]] + 1, cela sélectionne les lignes qui sont égales à la hauteur de la règle.+1
pour les lignes d'indexation 1, et+1
encore pour le décalage WESRRMICGSE.Le
FALSE
résultat donne une cellule vide (""), et un vrai résultat donneLEFT(REPT(REPT(" ",,FLOOR(POWER(2,LOG([i],2)-ROW()+2),1),1)-1) &"#",[i]),[i])
actuellement en cours d'édition, restez à l'écoute
la source
Haskell ,
6462 octetsEssayez-le en ligne! Exemple d' utilisation:
f 10
.la source
k, 33 octets
Cela ne semble fonctionner que dans l'interprète d'AW .
La version oK (que vous pouvez essayer en ligne) semble avoir un bug, nécessitant un léger changement pour le faire fonctionner:
la source
C #, 174 octets
Cette méthode a deux paramètres, une entrée pour la longueur de la règle et une sortie qui est la règle sous forme de chaîne.
Golfé:
Dentelé:
Essayez-le en ligne!
la source
Func<int, string>
vous ferait-elle économiser quelques octets?Fusain ,
2723 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Modifier: enregistré 4 octets en basculant sur
JumpTo
.la source
JumpTo
(désolé)J, 38 octets
Pas génial. Lmk si le nombre d'octets est désactivé - je suis sur mon téléphone.
la source
3
le début ne soit entré ...0|.@|:'#'#"0~1#.2~:/\i.#:@,]
Java (OpenJDK 8) , 91 octets
Essayez-le en ligne!
Non golfé:
la source
CJam, 34 octets
Meh.
la source
C (gcc) , 70 octets
Essayez-le en ligne!
la source
n+~x
place den^x+1
Perl 5 , 60 + 1 (-n) = 61 octets
Essayez-le en ligne!
la source