Défi
Étant donné une taille s, imprimez un cube net de cette taille composé de symboles de hachage ( #
) et d'espaces ( ).
Exemples:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
Le filet peut en fait être n'importe quel filet de cube valide qui peut se replier en cube, par exemple ceux-ci:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
Règles
- Le filet résultant doit être géométriquement valide (pliable en cube)
- Failles standard interdites
- Lisez attentivement les règles
- Il s'agit du code-golf , la réponse la plus courte l'emporte, mais ne sera pas sélectionnée
Réponses:
Python 2, 47 octets
Essayez-le en ligne!
Imprime ce filet, choisi pour être justifié à gauche:
Les lignes ont
n
ou des4*n
copies de'# '
. Pour chacun1,4,1
, nous imprimons desn
temps autant de copies, desn
temps faits pour lesn
lignes. Avoir uneexec
boucle à l'intérieur d'unefor
boucle semble être du gaspillage, mais je n'ai pas vu mieux.Alternatives que j'ai testées:
(Les
def
fonctions peuvent toutes être plus courtes en tant que programme.)la source
Octave,
58444232 octetsen partie inspiré par la réponse python de @xnor.
crée un motif carré de '#' pour l'entrée 2 donne le motif suivant:
quatre
z
s sont concaténés horizontalement:z
ety
etz
sont concaténés verticalementEssayez-le en ligne!
Réponse précédente:
Essayez-le en ligne!
Génère un en forme de T
la source
Mathematica,
776052 octetsMerci à Martin Ender d'avoir joué au golf à 8 octets!
Fonction sans nom prenant un argument entier positif
#
et renvoyant une chaîne avec des retours à la ligne (y compris un retour à la ligne de fin); chaque ligne a également un espace de fin. D'abord, nous définissons±
comme une fonction qui répète ses#
temps d' entrée ;a
est alors défini comme±"# "
(#
c'est un caractère, pas l'entrée!), et à partir de celab
est défini comme l'ensemble des#
lignes courtes, tandis que±{a,a,a,a}<>n
l'ensemble des#
lignes longues. (Dans les deux cas, il y a un saut de ligne littéral entre les guillemets correspondants.) La finale<>b
concatène la liste résultante de chaînes avec la deuxième copie de l'ensemble de lignes courtes. Exemple de sortie lorsque#=2
( la réponse de xnor m'a appris que cette orientation est golfeuse):Version précédente de cette implémentation:
Soumission originale:
Construit une chaîne sur des
4*(3#+1)
pièces, qui est soit chacun"# "
," "
ou"\n"
; calcule simplement les pièces à utiliser en fonction de l'indexn
. Exemple de sortie lorsque#=2
:la source
JavaScript (ES6), 59 octets
La sortie comprend un espace de fin à la fin de chaque ligne et une nouvelle ligne de fin.
la source
Rubis, 36 octets
Usage:
Rubis, 38 octets
Cette forme est plus longue en Ruby mais je m'attends à ce qu'il y ait certaines langues où elle est plus courte.
Usage:
Les deux réponses peuvent être plus courtes s'il est permis de renvoyer (de préférence) un tableau de chaînes ou (moins préférablement) une seule chaîne au lieu d'imprimer.
la source
Scala, 56 octets
la source
JavaScript (ES6), 71
Tester
la source
Java 8, 99 octets
la source
V ,
2423201820 octetsAvec tous les personnages cachés montrés
^[
is0x1b
(littéral caractère d'échappement) et^V
is0x16
(C-v
)Essayez-le en ligne!
J'ai dû augmenter bytecount parce que la
Ä
commande était buggée dans ce nouveau pull VSorties dans ce format:
avec une nouvelle ligne leader
Hexdump:
Explication
Maintenant qu'une face du filet est terminée, nous devons créer le filet
Solution alternative si nous ne sortons pas les espaces:
2120181618 octets(pour la même raison que la meilleure solution, ce lien TIO est modifié)
Essayez-le en ligne!
la source
V , 14 octets (non concurrent)
Essayez-le en ligne!
Pour une raison quelconque, ce défi a révélé de nombreux bugs. Maintenant qu'ils sont tous corrigés, cette version n'est malheureusement pas concurrente, mais c'est agréable de voir à quoi devrait ressembler une réponse V à ce défi quand elle n'a pas besoin d'ajouter des tonnes d'octets pour suivre mon codage bâclé.
Explication:
la source
J
problème n'était pas bâclé de codage AFAIK, je pense que c'était juste nvim par défaut?Gelée ,
2019 octetsEssayez-le en ligne!
-1 grâce à 44874 (steenbergh).
JE NE PEUX PAS AIDER LE MUDDYFISH AIDE!
Est-ce jouable au golf ???
2019 octets semble trop , voir le lien 1.Explication:
la source
@
mais permutant les opérandes àx
vous:”#xẋ³Wẋ³K€Y
.Fusain , 20 octets
Le code se termine par un espace. Essayez-le en ligne!
Explication
Le fusain est une langue spécialisée dans l'art ASCII. Il est également incomplet, bogué et sous-documenté. Qu'il suffise de dire que cela a pris pas mal d'essais et d'erreurs avant de faire ce qu'il était censé faire.
Nλ
entre un nombre dansλ
.G
est la commande polygone, que nous utiliserons ici pour dessiner un rectangle.↑λ←×⁶λ↓λ
spécifie la bordure du polygone:λ
pas vers le haut, pas de 6 fois vers la gaucheλ
etλ
pas vers le bas . (C'est troisλ
parλ
blocs côte à côte.) Le bord inférieur du rectangle est déduit. Le polygone est ensuite rempli avec la chaîne#
.D
vide le canevas courant vers stdout, ce qui donne quelque chose comme ceci:G
commande, le curseur se trouve dans le coin inférieur gauche du canevas.M×⁴λ←
le déplace vers la gauche par pas de 4 foisλ
(équivalent à deuxλ
parλ
blocs).Mettez-les ensemble et vous avez un filet de cube.
la source
Utilitaires Bash / Unix,
72696866 octetsEssayez-le en ligne!
Cela fonctionne en utilisant le fait que [4 ^ k / 3], lorsqu'il est écrit en base 2, est 10101010 ... 01, avec k 1. (Les crochets indiquent ici la fonction de plancher.)
la source
Pyke, 16 octets
Essayez-le ici!
Équivalent à
En raison d'imprimables
Cela utilise quelques astuces pour réduire le nombre d'octets:
[1, 4, 1]
XF
vide automatiquement la sortie dans la pile"#
à la fin est échangée avec la dernière*
, ce qui signifie que la fermeture"
n'est pas requise. Cela se produit implicitement lorsque le dernier jeton est une chaîne.la source
Python 2 ,
687165 octets-6 avec merci à @sagiksp
Essayez-le en ligne!
En l'absence de trouver un moyen de battre @xnor, je publierai ma fonction récursive simplement comme une approche alternative. Pour les impressions f (5)
Ce modèle a été choisi simplement parce qu'il peut être divisé en deux parties contrairement à toutes les autres.
la source
PHP,
6462 octetsEnregistré 2 octets grâce à Christoph .
Imprime un filet comme ceci:
(avec une nouvelle ligne leader)
la source
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
enregistre 2 octets.Lot, 111 octets
la source
Pushy ,
322928 octetsImprime le cube net justifié à gauche. C'était difficile de jouer au golf ...
Essayez-le en ligne!
la source
Rétine ,
3937 octetsC'est ma première utilisation de Retina, j'essaie toujours de comprendre comment faire les choses.
(avec deux espaces de fin après les 4e et 5e lignes)
Merci à Martin Ender pour avoir joué au golf 2 octets!
Essayez-le en ligne!
la source
$_
en bas en inversant certaines choses après avoir supprimé la ligne vide. tio.run/nexus/… est le même nombre d'octets mais un peu plus laid.QBIC ,
526740 octetsRéécriture complète:
Cela utilise maintenant ce modèle:
Où ils
-
sont remplis d'espaces.la source
Pip ,
281716 octets15 octets de code, +1 pour l'
-n
indicateur.Prend la taille comme argument de ligne de commande. Essayez-le en ligne!
Explication
Ce qui suit n'est pas exactement comment les données sont modifiées, mais cela donne l'idée de base (pour
a=2
):la source
05AB1E , 13 octets
Essayez-le en ligne!
Explication
Exemple d'entrée
n=2
la source
C #, 152 octets
la source
SmileBASIC,
5750 octetsExpliqué:
Après la première impression (taille = 2, @ est la position du curseur):
Après le défilement:
Après la deuxième impression:
la source
Lisp commun,
838179 octetsUsage:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Sortie:
Comment ça marche?
Les idées d'amélioration sont les bienvenues.
la source