Le festival de la mi-automne a commencé!
Malheureusement, tous mes gâteaux de lune ont été volés - ils deviennent trop chers pour les petits comme moi, et je crains de ne pas pouvoir en manger cette année!
Je me tourne donc vers vous pour obtenir de l'aide. Pourriez-vous m'en faire?
Pour ceux qui ne le savent pas, permettez-moi de vous expliquer à quoi ressemble un gâteau de lune.
Les gâteaux de lune viennent dans de nombreuses tailles différentes!
Je vais donc vous donner mon avis , n , quand j'en veux un.
Voici quelques exemples de la sortie que je souhaite:
Mooncake de taille n = 3:
(@@@@@)
(@MAF@)
(@@@@@)
Mooncake de taille n = 6:
(@@@@@@@@@@@)
(@ @)
(@ M @)
(@ F @)
(@ @)
(@@@@@@@@@@@)
Autrement dit, un gâteau de lune de taille n est:
- n lignes hautes
- 2n - 1 @s de long
- 2n + 1 caractères de long (@s et crochets)
Et vous feriez mieux de ne pas me jeter vos gâteaux de lune trop minuscules!
Supposons que l'entrée sera toujours n> = 3 .
Les gâteaux de lune contiennent également l' une des décorations suivantes :
- MF
- MAF
- HMF
- JCJ
- TTT
- ZJ
- LF
- RF
- CF
Lequel, peu importe - tant qu'il est centré verticalement et horizontalement .
Il peut également être écrit verticalement ou horizontalement!
Je veux de la variété!
Si vous allez vraiment me faire deux du même mooncake, la décoration vaut mieux être différente!
C'est-à-dire que plusieurs exécutions de votre programme avec la même entrée exacte ne doivent pas toujours produire la même décoration .
J'ai hâte de manger vos gâteaux de lune, donc plus vite je pourrai les recevoir ( plus votre code sera court ) mieux ce sera!
Bonne chance!
Pour ceux qui s'interrogent sur les décorations:
ce sont les initiales de tous les autres noms du Festival de la mi-automne.
Une liste peut être trouvée dans la page Wikipedia liée en haut de cet article.
Précisions:
Il n'y a pas de règles concernant les espaces de début et de fin .
Ayez autant ou aussi peu que vous le souhaitez!
Les décorations doivent être au centre même de votre gâteau de lune!
Sur les décorations horizontales, cela signifie qu'il doit être sur la ligne médiane de votre gâteau et que le nombre de caractères à gauche et à droite de la chaîne de décoration doit être égal.
Sur les décorations verticales, cela signifie qu'il doit résider dans la colonne du milieu de votre gâteau et que le nombre de caractères au-dessus et en dessous de la décoration doit être égal.
Toutes les décorations ne doivent pas être utilisées!
La seule exigence est qu'il doit y avoir plus d'une possibilité pour une entrée n donnée. Les possibilités n'ont pas non plus besoin d'être égales.
Les fonctions sont acceptables.
MAF
et nonMF
? Je n'en vois pasA
dans vos options de décoration.Réponses:
Pyth,
71655958 octets1 octet enregistré grâce à @StevenH.
Essayez-le en ligne. Suite de tests.
Tant de rembourrage.
la source
?%Q2
avec@,
(inverser l'ordre des deux choix) ...Q
. J'ai (ab) beaucoup utilisé cela pour jouer ma propre réponse Pyth.JavaScript ES6,
206196192188187 187180176169165156 octetsPanne
Ma première tentative de code-golf. Cela peut probablement être joué plus.
économisé 4 octets grâce à @ETHProductions
Edit j'ai pris la liberté d'utiliser pour satisfaire:
Date.now()%2
new Date%2
cela me permet d'économiser 7 autres octets sur
+Math.random()>.5
sauvé encore 4 octets grâce à @Arnauld
la source
['MA','HA'][r]+'F'
on peut jouer au golf'MH'[r]+'AF'
.[' R ',' C '][r]
par" ${'RC'[r]} "
, en remplaçant chacun"
par un backtick.['MA','HM'][r]+'F'
est en fait deux octets de plus que['MAF','HMF'][r]
;)' @'[+!s]
place de(s?' ':'@')
new Date%2
place deDate.now()%2
.Pyth,
9979716864 octetsPyth est
très mauvaispour faire des chaînes. Ou peut-être que je suis tout simplementmauvais dem'améliorer en jouant au golf.Peut créer les décorations
MAF
etHMF
horizontalement, et les décorationsMF
etCF
verticalement.Essayez-le en ligne!
la source
Vim, 118 octets
Prend l'entrée comme tampon (par exemple un fichier avec le nombre n comme contenu).
Le voici avec les caractères de contrôle non imprimables au format xxd:
Essayez-le en ligne! (Il s'avère que l'interpréteur V fonctionne également très bien pour le code Vim normal.)
Explication
la source
@a
à arg1,@b
à arg2, etc. mais c'est une fonctionnalité spécifique à V. Techniquement, cela n'a pas d'importance depuis"aD
le début, mais je pensais juste le signaler. 2) Vous pourriez retirer un octet si vous ledd@ap
Y@apdd
dd@ap
ne fonctionne pas vraiment hélas.dd@aP
fonctionne, mais nécessite alors un supplémentairej
et un supplémentairek
sur toute la ligne.PHP,
342292249185178 178176 octetsAppeler avec
php -r '<code>' <size>
histoire
Rev 1: version initiale; toutes les tailles (y compris les petits gâteaux), toutes les décorations, toutes les directions possibles
Rév.2: suppression de minuscules gâteaux (-36 octets), restructuration des options de décoration, suppression d'un élément de décoration (-21) et d'un golf à un octet (-1).
Rév. 3: jusqu'à quatre décorations; (-17), uniquement horizontal pour les tailles impaires (-18) plus le golf mineur (-8).
Rév. 4: Merci à Jörg d'avoir joué au golf dans la partie "gâteau de peinture"; il a décollé un incroyable (-31).
Un autre -6 avec mon golf supplémentaire, et -27 pour l'utilisation d'une seule chaîne au lieu d'un tableau de chaînes.
Rév.5: -7 octets principalement grâce à Christallkeks
panne
Cela s'amincit d'heure en heure. :)
la source
for($i=0;$i<$n=$argv[1];$i++){$o[]=str_pad("(@",2*$n-1,!$i|$i==$n-1?"@":" ")."@)";}
!$i|$i==$n-1?"@":" "
; le ternaire n'accepterait tout simplement pas le vôtre (sur ma machine), bien qu'il soit correct.for(;$i<$n=$argv[1];)$o.=str_pad("(@",2*$n-1," @"[$i++%($n-1)==0])."@)\n";
En outre, il semble que vous ayez "MAD" pour jouer à vos décos ;-)Java 7,
399349 octetsVersion mise à jour avec l'aide de @Dodge et @Kevin Cruijssen:
Essayez-le ici!
La nouvelle version est beaucoup plus optimisée et s'est débarrassée de la
String
gestion des baies. Comme suggéré, il n'y a maintenant que 4 décorations: 2 pour les entrées paires (MF
,ZJ
) et 2 pour les entrées impaires (MAF
,HMF
) qui sont combinées en une seuleString
.Ungolfed:
la source
"MAF"
répété?char[]
plus efficacement et jouer au golf plus loin. @Cyoce J'ai dupliquéMAF
car alors j'ai toutes les décorations pour une entrée paire aux indices0,2,4,6,8
et toutes les décorations pour une entrée impaire aux index1,3,5,7,9
. Cela facilite le calcul de l'index aléatoire pour une entrée donnée.Math.random()*5
donne un nombre aléatoire de0-4
.*2
le propage à0,2,4,6,8
.+n%2
ajoute1
pour les entrées impaires à obtenir1,3,5,7,9
.Lot, 386 octets
Ne sortira que HMF, MAF, MF ou CF selon le cas. Remarque: certaines lignes se terminent par un espace blanc. Variables:
n
Paramètre d'entrée (lu depuis STDIN)f
Préfixes de décoration (le suffixeF
est implicite)o
Curiosité den
(utilisé une seule fois, mais lesif
instructions n'acceptent pas d'expressions)l
Ligne du caractère vertical supérieur, ou0
pour une décoration horizontaleu
Ligne du caractère vertical inférieur, ou0
pour une décoration horizontaleh
Ligne du décor horizontal (écrasée par un décor vertical)d
Indice de décoration en préfixe de décoration (0/1 pour horizontal ou 1/3 pour vertical)c
Chaîne d'n-3
espacess
Chaîne de sortie pour chaque ligne%1
Numéro de ligne, mais défini également surn
la première ligne, de sorte que la première et la dernière lignes utilisent@
s au lieu d'espaces.la source
C, 233 octets
Devrait être en mesure de jouer au golf un peu d'ici ...
Grand défi, c'était difficile et moche à coder.
Exécutez avec cette fonction principale;
la source
Ruby 2.3.1,
449265245233230 caractèresIl semble qu'il devrait y avoir une réponse rubis, alors voici une réponse rubis. Ce n'est vraiment pas si intelligent, j'espère que quelqu'un d'autre ici sera plus intelligent;)
Version golfée:
Astuces de golf:
Version lisible
Essai
la source
Je m'ennuyais ... voici deux autres versions:
PHP, 193 octets
un port de réponse de Lmis
PHP, 191 octets
impression du gâteau caractère par caractère en une seule boucle
panne
la source
Python 3,
318301297285272 octetsSupprimé 17 octets avec l'aide de DJMcMayhem
Coupé de 4 octets grâce à mbomb007
Coupé encore 12 octets grâce à DJMcMayhem
13 autres octets supprimés grâce à mbomb007
Mon tout premier golf, donc ce n'est pas terrible. J'ai utilisé: aliasing math.ceil as y et str.format as z, formats d'emboîtement, importations sur une seule ligne, lambda et opération au niveau du bit, ainsi que d'autres choses pour que les choses soient telles qu'elles sont.
Version non golfée (importations séparées, pas d'alias et pas d'opération au niveau du bit):
Fait intéressant, l'utilisation de la version non bit à bit de ce produit toujours une sortie correcte, cependant, la sortie est différente:
Non binaire:
Au niveau du bit:
la source
from ... import*
taper les importations pour économiser quelques octetsimport math;y=math.ceil
pour retirer deux octets. Cela vous donneraitimport random;import math;y=math.ceil;lambda n:"{a}{}{a}".format("{d}(@{}{b}F{c}@)\n{e}".format(" "*(y((2*n-5)/2)),b=random.sample(["L","R"],1)[0],c=" "*((2*n)-(5+y((2*n-5)/2))),d="(@{}@)\n".format(" "*(2*n-3))*y((n-3)/2),e="(@{}@)\n".format(" "*(2*n-3))*(n-(3+(y((n-3)/2))))),a="({})\n".format("@"*(2*n-1)))
13 octets de moins.format
puisque vous l'appelez beaucoup. Le problème est que je ne sais pas exactement comment créer un alias vers une fonction membre (commestr.format
), vous devrez donc expérimenter un peu. Je ne suis pas certain que ce serait plus court cependant.C # 448 octets
Golfé:
Testez-le ici
Ungolfed:
la source