Das Mittherbstfest hat begonnen!
Leider wurden alle meine Mondkuchen gestohlen - sie werden für kleine Leute wie mich zu teuer, und ich fürchte, ich werde in diesem Jahr keine mehr essen können!
Also bitte ich Sie um Hilfe. Könntest du mir welche machen?
Lassen Sie sich von mir erklären, wie ein Mondkuchen aussieht.
Mooncakes gibt es in vielen verschiedenen Größen!
So bin ich Ihnen mein Gonna geben Eingang , n , wenn ich einen will.
Hier sind einige Beispiele für die Ausgabe, die ich möchte:
Mondkuchen der Größe n = 3:
(@@@@@)
(@MAF@)
(@@@@@)
Mondkuchen der Größe n = 6:
(@@@@@@@@@@@)
(@ @)
(@ M @)
(@ F @)
(@ @)
(@@@@@@@@@@@)
Das heißt, ein Mondkuchen der Größe n ist:
- n Zeilen hoch
- 2n - 1 @s lang
- 2n + 1 Zeichen lang (@s und Klammern)
Und du wirfst mir besser nicht deine zu winzigen Übungsmondkuchen!
Angenommen, die Eingabe ist immer n> = 3 .
Mooncakes enthalten auch eine der folgenden Dekorationen :
- MF
- MAF
- HMF
- JCJ
- TTT
- ZJ
- LF
- RF
- CF.
Welches, spielt keine Rolle - solange es vertikal und horizontal zentriert ist .
Es kann auch vertikal oder horizontal geschrieben werden!
Ich will Abwechslung!
Wenn du mich wirklich zu zwei gleichen Mooncakes machen willst, ist die Dekoration besser anders!
Das heißt, mehrere Ausführungen Ihres Programms mit genau der gleichen Eingabe müssen nicht immer die gleiche Dekoration ergeben .
Ich kann es kaum erwarten, deine Mondkuchen zu essen. Je früher ich sie bekomme (je kürzer dein Code ) , desto besser!
Viel Glück!
Für diejenigen, die sich über die Dekoration wundern:
Sie sind die Initialen aller alternativen Namen für das Mid-Autumn Festival.
Eine Liste finden Sie auf der Wikipedia-Seite, die oben in diesem Beitrag verlinkt ist.
Klarstellungen:
Es gibt keine Regeln für führende und nachfolgende Leerzeichen .
Haben Sie so viel oder so wenig, wie Sie möchten!
Die Dekorationen müssen in der Mitte Ihres Mondkuchens sein!
Bei horizontalen Dekorationen bedeutet dies, dass sie sich in der mittleren Zeile Ihres Kuchens befinden müssen und die Anzahl der Zeichen links und rechts von der Dekorationszeichenfolge gleich sein muss.
Bei vertikalen Dekorationen muss sich diese in der mittleren Spalte Ihres Kuchens befinden und die Anzahl der Zeichen über und unter der Dekoration muss gleich sein.
Es müssen nicht alle Dekorationen verwendet werden!
Die einzige Voraussetzung ist, dass es für eine bestimmte Eingabe n mehr als eine Möglichkeit geben muss. Die Möglichkeiten müssen auch nicht gerade sein.
Funktionen sind akzeptabel.
MAF
und nichtMF
? Ich sehe keineA
in Ihren Dekorationsoptionen.Antworten:
Pyth,
71655958 Bytes1 Byte dank @StevenH gespeichert.
Probieren Sie es online aus. Testsuite.
So viel Polsterung.
quelle
?%Q2
mit@,
(die Reihenfolge der zwei Möglichkeiten rückwärts) ...Q
. Ich (ab) habe das oft genutzt, um meine eigene Pyth-Antwort herunterzuspielen.JavaScript ES6,
206196192188187180176169165156 BytesNervenzusammenbruch
Mein erster Versuch, Code-Golf zu spielen. Damit kann wohl mehr golfen werden.
4 Bytes gespart dank @ETHProductions
Bearbeiten Ich habe die Freiheit der Verwendung zu erfüllen:
Date.now()%2
new Date%2
Dadurch kann ich weitere 7 Bytes speichern
+Math.random()>.5
hat dank @Arnauld weitere 4 Bytes gespart
quelle
['MA','HA'][r]+'F'
kann Golf spielen'MH'[r]+'AF'
.[' R ',' C '][r]
mit" ${'RC'[r]} "
jedem Ersatz"
mit einem Graviszeichen.['MA','HM'][r]+'F'
ist eigentlich zwei Bytes länger als['MAF','HMF'][r]
;)' @'[+!s]
anstelle von(s?' ':'@')
new Date%2
anstelle von verwendenDate.now()%2
.Pyth,
9979716864 BytesPyth ist
sehr schlecht darin, Streicher zu machen. Oder vielleicht bin ich nurschlecht darin, sie besser zu spielen.Kann die Dekorationen
MAF
undHMF
horizontal und die DekorationenMF
undCF
vertikal erstellen .Probieren Sie es online!
quelle
Vim, 118 Bytes
Übernimmt die Eingabe als Puffer (zB eine Datei mit der Nummer n als Inhalt).
Hier ist es mit den nicht druckbaren Steuerzeichen im xxd-Format:
Probieren Sie es online! (Wie sich herausstellt, funktioniert der V-Interpreter auch für normalen Vim-Code einwandfrei.)
Erläuterung
quelle
@a
eingeben, ist sie vordefiniert für arg1,@b
arg2 usw., dies ist jedoch eine V-spezifische Funktion. Das ist technisch nicht wichtig, da Sie es"aD
am Anfang haben, aber ich dachte nur, ich würde darauf hinweisen. 2) Sie könnten ein Bytedd@ap
Y@apdd
dd@ap
funktioniert leider nicht ganz .dd@aP
funktioniert, erfordert dann aber eine zusätzlichej
und eine zusätzlichek
auf der ganzen Linie.PHP,
342292249185178176 BytesMit anrufen
php -r '<code>' <size>
Geschichte
Rev 1: Erstausgabe; Alle Größen (einschließlich winziger Kuchen), alle Dekorationen, alle möglichen Richtungen
Rev. 2: Entfernte winzige Kuchen (-36 Bytes), restrukturierte Dekorationsoptionen, entfernte einen Dekorationsgegenstand (-21) und ein Einzelbyte-Golf (-1).
Rev. 3: Bis zu vier Dekorationen; (-17), nur horizontal für ungerade Größen (-18) plus leichtes Golfen (-8).
Rev. 4: Danke an Jörg für das Golfen im "Paint Cake" Teil; Er hat einen unglaublichen (-31) abgelegt.
Ein weiteres -6 mit meinem zusätzlichen Golfspiel und -27 für die Verwendung einer einzelnen Saite anstelle einer Reihe von Saiten.
Rev. 5: -7 Bytes vor allem dank Christallkeks
Nervenzusammenbruch
Dies wird von Stunde zu Stunde schlanker. :)
quelle
for($i=0;$i<$n=$argv[1];$i++){$o[]=str_pad("(@",2*$n-1,!$i|$i==$n-1?"@":" ")."@)";}
!$i|$i==$n-1?"@":" "
; Die Ternäre würde Ihre (auf meinem Computer) einfach nicht akzeptieren, obwohl dies korrekt ist.for(;$i<$n=$argv[1];)$o.=str_pad("(@",2*$n-1," @"[$i++%($n-1)==0])."@)\n";
Es sieht auch so aus, als hättest du "MAD" beim Golfen ;-)Java 7,
399349 BytesAktualisierte Version mit Hilfe von @Dodge und @Kevin Cruijssen:
Probieren Sie es hier aus!
Die neue Version ist viel optimierter und hat das
String
Array-Handling überflüssig gemacht. Auch wie vorgeschlagen, gibt es jetzt nur 4 Dekorationen: 2 für gerade Eingänge (MF
,ZJ
) und 2 für ungerade Eingänge (MAF
,HMF
), die zu einer einzigen kombiniert werdenString
.Ungolfed:
quelle
"MAF"
wiederholt?char[]
effizienter nutzen und andere Dinge weiter Golf spielen. @Cyoce Ich habe dupliziert,MAF
weil ich dann alle Dekorationen für eine gerade Eingabe bei Indizes0,2,4,6,8
und alle Dekorationen für eine ungerade Eingabe bei Indizes habe1,3,5,7,9
. Dadurch ist es einfacher, den Zufallsindex für eine bestimmte Eingabe zu berechnen.Math.random()*5
gibt eine Zufallszahl aus0-4
.*2
verbreitet es zu0,2,4,6,8
.+n%2
fügt1
für ungerade Eingänge zu bekommen1,3,5,7,9
.Batch, 386 Bytes
Gibt nur HMF, MAF, MF oder CF entsprechend aus. Hinweis: Bestimmte Zeilen enden in Leerzeichen. Variablen:
n
Eingabeparameter (aus STDIN gelesen)f
Dekorationspräfixe (SuffixF
ist impliziert)o
Seltsamkeit vonn
(nur einmal verwendet, aberif
Anweisungen akzeptieren keine Ausdrücke)l
Zeile des oberen vertikalen Zeichens oder0
für eine horizontale Dekorationu
Zeile des unteren vertikalen Zeichens oder0
für eine horizontale Dekorationh
Zeile der horizontalen Dekoration (wird durch eine vertikale Dekoration überschrieben)d
Dekorationsindex im Dekorationspräfix (0/1 für horizontal oder 1/3 für vertikal)c
Zeichenfolge vonn-3
Leerzeichens
Ausgabezeichenfolge für jede Zeile%1
n
Zeilennummer , aber auch für die erste Zeile festgelegt, sodass sowohl die erste als auch die letzte Zeile@
s anstelle von Leerzeichen verwenden.quelle
C 233 Bytes
Sollte in der Lage sein, dies ein bisschen von hier aus zu golfen ...
Große Herausforderung, das war schwierig und hässlich zu programmieren.
Führen Sie mit dieser Hauptfunktion aus.
quelle
Ruby 2.3.1,
449265245233230 ZeichenScheint, als sollte es eine rubinrote Antwort geben, also hier eine rubinrote Antwort. Es ist wirklich nicht so schlau, hoffentlich wird jemand anderes hier schlauer sein;)
Golf Version:
Golftricks:
Lesbare Version
Testen
quelle
Mir war langweilig ... hier sind zwei weitere Versionen:
PHP, 193 Bytes
ein Hafen von Lmis 'Antwort
PHP, 191 Bytes
druckt den Kuchen zeichenweise in einer einzigen Schleife
Nervenzusammenbruch
quelle
Python 3,
318301297285272 Bytes17 Bytes mit Hilfe von DJMcMayhem abgeschlagen
4 Bytes dank mbomb007 abgeschlagen
Weitere 12 Bytes dank DJMcMayhem abgeschlagen
Weitere 13 Bytes dank mbomb007 abgeschlagen
Mein allererstes Golfspiel, es ist also nicht so toll. Ich benutzte: Aliasing von math.ceil als y und str.format als z, Verschachtelungsformate, Import einzelner Zeilen, Lambda und bitweise Operationen sowie einige andere Dinge, um das so zu machen, wie es ist.
Ungolfed-Version (getrennte Importe, keine Aliase und keine bitweise Operation):
Interessanterweise erzeugt die Verwendung der nicht-bitweisen Version davon immer noch eine korrekte Ausgabe, jedoch ist die Ausgabe anders:
Nicht bitweise:
Bitweise:
quelle
from ... import*
Typ-Importe ändern , um einige Bytes zu sparenimport math;y=math.ceil
zwei Bytes entfernen. Dies würde Ihnen geben,import 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)))
die 13 Bytes kürzer ist.format
da Sie es häufig nennen. Das Problem ist, dass ich nicht genau weiß, wie man einen Alias für eine Mitgliedsfunktion (wiestr.format
) erstellt, sodass Sie ein wenig experimentieren müssen. Ich bin mir nicht sicher, ob es kürzer wäre.C # 448 Bytes
Golf gespielt:
Teste es hier
Ungolfed:
quelle