Mach mich zum S'more ! Ich sage dir die Breite, die Menge Graham Cracker, die Menge Schokolade und die Menge Marshmallow. Ein Beispiel:
Eingang:
Breite: 10
Graham: 3
Schokolade: 2
Eibisch: 1
.
Ausgabe:
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
Ist es so einfach Ähm ... ja.
Beachten Sie, dass die Eingabe eine Liste von Argumenten für eine Funktion oder ein Programm sein sollte, keine Zeichenfolge. Sie könnten zuerst Width und dann Graham auswählen, aber jede Reihenfolge ist in Ordnung.
Vollständige Testfälle, wenn Sie interessiert sind.
Stack-Snippet (zum Testen usw.)
Dies dient zum Testen der Ausgabe.
var smore = function(width, graham, chocolate, marshmallow){
return ("G".repeat(width) + "\n").repeat(graham) +
("C".repeat(width) + "\n").repeat(chocolate) +
("M".repeat(width) + "\n").repeat(marshmallow) +
("G".repeat(width) + "\n").repeat(graham);
};
Snippetify(smore);
<script src="https://programmer5000.com/snippetify.min.js"></script>
Width: <input type = "number">
Graham: <input type = "number">
Chocolate: <input type = "number">
Marshmallow: <input type = "number">
<button>Try it out!</button>
<pre data-output></pre>
Anmerkungen:
- Sie können am Ende der letzten Zeile eine abschließende neue Zeile einfügen. Sie können auch ein
\
anstelle eines Zeilenumbruchs verwenden. - Das ist Code-Golf .
- Irgendwelche Fragen? Kommentiere unten:
Antworten:
Jelly , 11 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 ,
7348 BytesProbieren Sie es online!
Erstellt eine transponierte Version der Antwort und transponiert sie dann mit in das richtige Format
zip(*l)
quelle
05AB1E ,
211919 BytesProbieren Sie es online!
-2 danke an mein Versehen und Emigna.
(Siehe Emignas Antwort, es ist besser: /codegolf//a/116787/59376 )
quelle
©
da drin gelassen zu haben .¬¸
mitD
als die zusätzlichen Elemente verloren gehen , wenn Sie sehen lassen.JavaScript (ES6), 71 Byte
Woohoo, schlagen Sie 3 andere JavaScript-Antworten!
Code-Snippet anzeigen
quelle
MATL , 17 Bytes
Das Eingabeformat ist: erste Eingabe
[G, C, M]
, zweite EingabeW
.Probieren Sie es online!
Erklärung mit Beispiel
Betrachten Sie Eingaben
[3 2 1]
und10
.quelle
C # , 204 Bytes
Golf gespielt
Ungolfed
Ungolfed lesbar
Vollständiger Code
Releases
204 bytes
- Anfangslösung.Anmerkungen
quelle
05AB1E ,
1716 BytesDank Carusocomputing 1 Byte gespart .
Probieren Sie es online!
Eingabereihenfolge ist
W, [G,C,M]
Erläuterung
10, [3,2,1]
als Beispiel verwendet.quelle
"GCMG"S×vy²Nè.D»
Wunder-Zwillingskräfte, aktiviere! Form von, 05AB1E Code! Auch werden Argumente ausgetauscht, aber es ist immer noch 16.Ruby, 47 Bytes
danke an ventero
Ruby, 51 Bytes
Rufen Sie wie folgt an:
quelle
->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}
ist etwas kürzerPowerShell , 49 Byte
Probieren Sie es online!
Übernimmt die Eingabe als vier Befehlszeilenargumente
width graham chocolate marshmallow
, speichert das erste in$a
und den Rest in$b
(implizit als Array). Loops über den Bereich0,1,2,0
. Jede Schleife wird in eine Zeichenfolge indiziertGCM
,char
als Zeichenfolge neu umgewandelt und mit$a
(der Breite) multipliziert. Mit dem Komma-Operator,
wird die Schleife in ein Array umgewandelt, indem der entsprechende Index von$b
(dh wie viele) multipliziert wird Lagen). Diese resultierenden String-Arrays verbleiben alle in der Pipeline und die Ausgabe erfolgt implizit mit einer neuen Zeile zwischen den Elementen.quelle
C
108105 BytesVielen Dank an @Quentin für das Speichern von 3 Bytes!
Probieren Sie es online!
quelle
#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);
spart drei Bytes :)Batch, 146 Bytes
Beruht auf dem obskuren Verhalten von,
echo
dass es häufig das Symbol zwischenecho
und den Text ignorieren kann, der als Echo ausgegeben werden soll, um die vier Schleifen zu einer verschachtelten Schleife zusammenzufassen.quelle
V , 22 Bytes
Probieren Sie es online!
Hexdump:
Eingabereihenfolge ist
Erläuterung:
quelle
Excel, 104 Bytes
Oh Junge! Eine Formel, die Zeilenumbrüche erfordert.
A1
hat BreiteA2
hat GrahamA3
hat SchokoladeA4
hat MalveWenn eine Vorformatierung zulässig ist, können Sie die Zelle für vertikalen Text formatieren und die Formel auf 65 Byte kürzen:
quelle
Jelly , 13 Bytes
Ein dyadisches Programm. Eingaben sind:
[Graham's, Chocolates, Marshmallows]
,Width
.Probieren Sie es online!
Wie?
quelle
PHP, 85 Bytes
oder
Online-Versionen
PHP, 96 Bytes
Online Version
Erweitert
quelle
05AB1E , 14 Bytes
Code:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
Erläuterung:
quelle
Python 2 ,
6757 Bytes(Bearbeiten: jetzt, da Matrizen erlaubt sind, müssen sie nicht mehr mit einer neuen Zeile verbunden werden.)
quelle
C # (150 Bytes)
Ungolfed:
quelle
Java, 138 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Swift,
138137134130 Bytes7 Bytes dank @Kevin gespart
Zwei Funktionen, die den erwarteten Wert zurückgeben:
f
ist einer
Hilfsfunktion und ist die eigentliche lamdba-ähnliche Funktion, die die Ausgabe generiert. Verwendung:print(r(10,3,2,1))
Hör zu!
quelle
var f=String.init(repeating:count:);
). Und es speichert keine Charaktere, aber es kostet keine, also sollten sie beide wirklich seinlet
.r
(let r={f(f("G",$0)+"\n",$1)+f(f("C",$0)+"\n",$2)+f(f("M",$0)+"\n",$3)+f(f("G",$0)+"\n",$1)}
)f=String.init(repeating:count:)
...Konvex , 20 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 91 Byte
Schließt nachfolgende Newline ein.
quelle
JS (ES6), 87 Bytes
x
Wirkt als eigenständige Lambda-Funktion. Das Ergebnis enthält einen nachgestellten Zeilenumbruch.Versuchen Sie es in einem Snippet:
Code-Snippet anzeigen
quelle
C, 90 Bytes (basierend auf der Antwort von Steadybox )
Die Variablen wurden umbenannt und der String-Präprozessor-Operator wurde ausgenutzt, um die Makroparameter zu reduzieren. Ich hoffe, diese Idee zu posten, da ihre eigene Antwort in Ordnung ist :)
TIO-Link
quelle
F # (
14899 Bytes)Verwendung:
Ungolfed:
Ich bin noch neu in F #. Wenn ich also etwas Seltsames oder Dummes getan habe, lass es mich bitte wissen.
quelle
JavaScript ES6,
696866 BytesVielen Dank, @Arnauld, für das Golfen aus einem Byte
Probieren Sie es online!
Erläuterung
Erhält Eingaben im Curry-Format
(Width)([Graham,Chocolate,Marshmallow])
Mit wird
.replace(/./g,...)
jedes Zeichen in der ZeichenfolgeGCMG
durch den Rückgabewert der Funktion ersetzt(c,i)=>`${c.repeat(a)} `.repeat(b[i%3])
`${c.repeat(a)} `
Erstellt jede Zeile des Graham Crackers mit einer angehängten neuen.repeat(b[i%3])
Zeile und wiederholt diese Zeile so oft wie erforderlichquelle
replace()
würde ein Byte speichern:a=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a[0])}\n`.repeat(a[1+i%3]))
JS (ES6), 111 Bytes
quelle
Mathematica 102 Bytes (100 Zeichen)
Ich habe gehört, dass die eingebauten S'Mores erst in Version 12 herauskommen.
Ziemlich einfach mit der Idee, zuerst eine Säule aufzubauen. Lange Funktionsnamen verschwenden 35 Byte. Das eine kastenförmige Symbol ist eigentlich ein transponiertes Zeichen und wird in Mathematica eingefügt.
Verwendung:
%@{Graham, Chocolate, Marshmallows, Width}
zB%@{3, 2, 1, 11}
quelle
Java 7, 226 Bytes
ODER (auch 226 Bytes ):
Erläuterung:
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
Haskell , 91 Bytes
Sollte ziemlich selbsterklärend sein. Da in einem Kommentar darauf hingewiesen wurde, dass Zeichenmatrizen zulässig sind, wird in der folgenden 58-Byte- Version eine Liste von Zeichenfolgen (eine für jede Ebene) zurückgegeben:
quelle