Votre défi consiste à afficher exactement la case suivante:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
La boîte est de hauteur et largeur 50, les espaces sont larges de deux.
Vous devez écrire une fonction ou un programme qui génère ou renvoie une chaîne et ne prend aucune entrée.
Le moins d'octets gagne!
+
boîte la plus intérieure n'a qu'une seule couche en haut et en bas? Cela rendra les réponses basées sur des algorithmes un peu plus longues, car cela signifie que les deux couches les plus internes ne sont pas exactement carrées.Réponses:
Pyke,
2017 octetsEssayez-le ici!
La fonction surround a été conçue pour des questions de complexité kolmogorov comme celle-ci!
la source
J , 25 octets
Essayez-le en ligne!
Explication
la source
echo
, ce ne sera même pas une fonction, juste une valeur. Bien que J n'ait de toute façon aucune fonction à zéro argument.C, 115 octets
Définit une fonction
f
(appelez commef();
) qui imprime la chaîne dans STDOUT.la source
C,
535478477 octetsMaintenant ça fait beaucoup de golf: - /
Voici la sortie;
la source
for(;i++<51;
++i
Haskell, 72 octets
@ Solution de Zgarb à Haskell. J'ai également essayé de construire la boîte en ajoutant des couches autour du noyau
["..",".."]
, mais c'est 9 octets de plus (81 octets).la source
Empilé, non compressif, 35 octets
Essayez-le ici!
Non golfé:
Assez facile.
surround
est une fonction qui entoure bien une entité avec une entité de remplissage. Par exemple,(0) 1 surround
est((1 1 1) (1 0 1) (1 1 1))
.$surround
estsurround
en fonction, non évalué.fold
prend une valeur initiale, puis quelque chose à replier, puis une fonction. Dans ce cas,surround
estfold
ed, entourant la chaîne initialement vide''
(équiv.ε
) De chaque caractère de la chaîne.Il s'agit d'abord de créer une chaîne de caractères
$' + .'
qui, multipliée par un nombre, répète chaque caractère. Cela nous laisse avec:++ ..
. Ceci est ensuite converti en chaîne. Ensuite, nous répétons cette chaîne trois fois, et finalement ajoutons un.
, en nous donnant la chaîne souhaitée.Une approche différente pour 39 octets:
#\
est insert et prend le caractère initial de la chaîne comme valeur de départ. Il ne fonctionne également que sur les tableaux.la source
JavaScript (ES6), 117 octets
La solution non récursive m'a pris 128 octets:
Où
\n
représente le caractère de nouvelle ligne littéral.la source
C, 97 octets
la source
Gelée , 18 octets
Essayez-le en ligne!
Cette même approche que la réponse J de Zgarb:
12ŒRA
estabs([-12 … 12])
,x2
répète tous les éléments deux fois,»þ`
crée une table de valeurs maximales,ị“ + .”
cyclique des index dans une chaîne, etY
rejoint par de nouvelles lignes.la source
05AB1E ,
393533 octetsEssayez-le en ligne!
Version 33 octets qui est plus cool maintenant car Emigna a commenté me sauver 2 octets:
Essayez-le en ligne!
la source
". + "DøJ3×'.«.pvy¤25yg-׫«})«»
pour 33 octets.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»
pour 34 octets sur la "version plus froide".MATL , 21 octets
Essayez-le en ligne!
la source
Rubis, 77 octets
la source
[i%26-13,i/52].map(&:abs).max%4
(enregistre un octet)Fusain , 25 octets
Essayez-le en ligne! Le lien contient un mode détaillé pour l'explication
la source
Python 3 , 89 octets
Essayez-le en ligne!
la source
Haskell, 385 octets
Première ronde de golf à code ici ... impatient de voir comment les autres s'y attaqueront.
Production:
la source
where
dans une seule ligne et les utiliser;
pour la séparation. 3)f:f:[]
estf:[f] and
d: '': '': [] `estd:" "
. 4)m
prend un paramètre mais ne l'utilise pas. En lignem
ett
. 5) définir une nouvelle fonction#
à remplacerreplicate
:c#x=c<$[1..8*n+x]
et l'appeler commed#2
et' '#(-6)
. 6)mod 2 == 0
peut être remplacé pareven
, ou retourner le test et l' utilisationodd
et de le golfeurotherwise
:1<2
. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x]
.Octave, 53 octets
Générez un motif répétitif de 1 à 8 du centre vers l'extérieur et utilisez-le comme index pour l'extraction des éléments de
. ++ .
Essayez-le en ligne!
la source
Bash, 191 octets
Peut probablement devenir plus petit, mais était plus petit que mes tentatives algorithmiques.
la source
C #, 203 octets
Programme complet et lisible:
Fonction golf :
la source
05AB1E , 33 octets
Essayez-le en ligne!
Explication
la source
PowerShell ,
171151 octetsEssayez-le en ligne!
Ho-hum réponse. Je suis sûr qu'il existe un moyen plus court (compte tenu de la longueur des autres réponses, je suis confiant), mais cela montre quelques astuces intéressantes.
Explication:
1..12|%{' . +'[$_%4]}
génère un tableau de chaînes (d'un caractère), dans le modèle correct dont nous avons besoin. Essayez-le en ligne!Nous ajoutons ensuite celui
|%{($a+=$_+$_)})+"$a."
qui prend le tableau et le développe latéralement en fonction de la ligne précédente. Essayez-le en ligne!Ces chaînes sont ensuite envoyées dans une boucle,
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}
. À chaque itération, nous choisissons le bon caractère (soit un plus, un point ou un espace), puis nous utilisons la.PadRight
fonction pour remplir le nombre approprié de caractères. Essayez-le en ligne!Maintenant, nous avons la fondation du coin supérieur droit. Nous devons inverser chaque chaîne
|%{,($_+-join$_[($z=25..0)])*2}
et les ajouter ensemble afin de pouvoir obtenir le haut du bloc. Cela se fait avec la-join
commande et l'indexation en arrière25..0
. De plus, nous encapsulons les chaînes dans un tableau,(...)
et les faisons doubler*2
pour obtenir tout le haut. Essayez-le en ligne!Tout cela est stocké dans
$x
et encapsulé dans des parens, de sorte qu'il place les chaînes sur le pipeline. Enfin, nous inversons$x
(en étant sûr de couper la ligne du milieu duplicate-duplicate, sinon nous en aurions quatre..
au milieu) et de les laisser sur le pipeline. Un impliciteWrite-Output
colle une nouvelle ligne entre les chaînes, donc nous l'obtenons gratuitement.la source