Oreoorererereoo
Geben Sie bei einer Eingabezeichenfolge, die dem Wort "oreo" ähnelt, eine ASCII-Darstellung des Cookies an, die so breit ist wie die Eingabezeichenfolge (um die Stabilität des Cookies zu gewährleisten).
Regeln
- Die Eingabe erfolgt in Kleinbuchstaben. Dabei handelt es sich um eine nicht leere Zeichenfolge ohne Leerzeichen, die eine beliebige Kombination der Zeichenfolgen "o" und "re" enthält und nur diese Zeichenfolgen enthält.
- Die Zeichenfolge "o" steht für das feste Cookie, während die Zeichenfolge "re" die Füllung darstellt.
- Die Ausgabe muss ein gestapeltes Cookie sein, das so breit wie die Eingabezeichenfolge ist.
- Die Ausgabe ist möglicherweise kein Array von Zeichenfolgen
- Der Cookie muss die Füllung auf jeder Seite um ein Zeichen überlappen
- Die Zeichen, die für die Ausgabe verwendet werden, müssen nicht mit der Ausgabe unten (█ und ░) übereinstimmen, sondern müssen für die beiden Teile des Cookies unterschiedliche Nicht-Leerzeichen-Zeichen sein
- Das Leerzeichen auf der linken Seite der Füllung muss ausgefüllt werden. Nachgestellte Leerzeichen sind optional
Beispiele
Input: oreo
Output:
████
░░
████
Input: o
Output:
█
Input: re
Output: (two spaces)
Input: rere
Output:
░░
░░
Input: oreoorererereoo
Output:
███████████████
░░░░░░░░░░░░░
███████████████
███████████████
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
███████████████
███████████████
Da dies Codegolf ist, gewinnt die kürzeste Antwort, viel Glück :)
re
jetzt akzeptabel sein sollte1 or 2 spaces
, nicht unbedingt 2?Antworten:
Jelly ,
16 1413 Bytes-1 Danke an Erik den Outgolfer
Verwendet
1
für die Sahne und0
für den Keks.Probieren Sie es online!
Wie?
Vorherige 16 Byter:
Verwendet
r
für die Cr
eam undo
für die Co
Okie.Probieren Sie es online!
quelle
Pepe , 364 Bytes
Leider kümmert sich der Online-Interpreter nicht um das Komprimieren von Kommentaren, daher werden alle
o
Zeichen durch ein Leerzeichen ersetzt. Weder die Leerzeichen noch dieo
sind notwendig, daher könnten dies 295 Bytes sein, aber es gefällt mir besser so:Probieren Sie es online!
Ungolfed
Möglicherweise gibt es einige Golfmöglichkeiten mit Flaggen, die ich verpasst habe, aber jetzt bin ich fertig:
quelle
Canvas ,
191817 BytesProbieren Sie es hier aus!
Benutzt den ärgerlich langen Code von
:r≠*┤]
, umr
s aus der Eingabe zu entfernen .quelle
Japt
-R
,1615 BytesVersuch es
Alternativen
quelle
C # (Visual C # Interactive Compiler) , 95 Byte
Probieren Sie es online!
Alternative mit Aggregat, 108 Bytes
Probieren Sie es online!
quelle
o
, dan.Length-2
dies zu "" führt-1
.n.Length-2
ist, wenn der Eingang hatre
.R , 106 Bytes
Probieren Sie es online!
Vorherige Version mit Erläuterung:
R , 118 Bytes
Probieren Sie es online!
Abgerollter Code und Erklärung:
quelle
05AB1E ,
181716 Bytes-1 Byte danke an @Emigna
Verwendet
o
für den Cookie undr
zum Füllen.Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
oro
ist keine mögliche Eingabe, da die Eingabe nuro
s undre
s enthält. Unabhängig davon,oro
scheint immer noch richtig nach der Spezifikation auszugeben, da es ausgibtooo\n r\nooo
. Was ist daran falsch?2*
kann sein·
und das fehlende Leerzeichen kann durch Ändern».c
zu.c.B»
·
, danke! :) Und es ist immer schön, wenn sich dieNetzhaut ,
7473 BytesIch habe das Gefühl, seit langer Zeit keine Antwort mehr gepostet zu haben. Also, hier bin ich. Außerdem hat sich Retina sehr verändert und ich habe das Gefühl, dass ich jetzt daran lutsche.
Probieren Sie es online!
quelle
[or]
bedeutet ,o
oderr
anstelle von[
oder]
. Macht meinen Kopf weh.Netzhaut , 21 Bytes
Probieren Sie es online! Erläuterung:
Löschen Sie das
r
s.Listen Sie jeden Buchstaben in einer eigenen Zeile auf, die sich bis zur Länge der ursprünglichen Eingabe wiederholt.
Ersetzen Sie die ersten zwei
ee
s in jeder Zeile durch ein Leerzeichen.quelle
&
: PC (gcc) ,
135,113,109104 BytesZweiundzwanzigsiebenundzwanzig Bytes dank gespeichert NieDzejkob .Probieren Sie es online!
quelle
-D$=putchar
e=o
in den Zustand der ersten for-Schleife versetzen und dann die else entfernen.JavaScript ES6, 103 Byte
Verwenden von Ersetzen 103 Bytes:
Probieren Sie es online!
Verwendung von split und map 116 bytes:
Probieren Sie es online!
quelle
${"|".repeat(s>1?s-2:0)}
und deren Leerzeichen anstelle von verwenden" "+"|".repeat(s>1?s-2:0)
.Perl 5
-p
, 47 BytesProbieren Sie es online!
quelle
Python 3 , 77 Bytes
Probieren Sie es online!
quelle
+" \n"
, um ein Byte zu speichern.Mathematica,
11191 BytesProbieren Sie es online!
Dies wurde majorly durch verkürzte Misha ‚s Bearbeitungen .
Mein ursprünglicher Code:
Dieser Code ist nicht besonders ausgefallen, aber es scheint zu teuer, ihn von Strings zu konvertieren und dann wieder zurück zu kehren oder andere clevere Dinge zu tun.
Insbesondere mit nur 3-4 Befehlen, die den Namen String haben, konnte mein ursprünglicher Ansatz überhaupt keine Bytes sparen, indem er versuchte, dies zu abstrahieren. Das Folgende ist zum Beispiel 129 Bytes:
quelle
StringRepeat
Kann sein,Table
da<>
die Liste später in eine Zeichenfolge konvertiert wird; dasIf
ist unnötig, da wir denre
Zweig erst nehmen, wennn
mindestens 2 ist; Wir können Klammern einsparen, indem wirn
nur definieren , wann wir sie verwenden. Probieren Sie es online!If
wurde hinzugefügt, weilStringRepeat
es einen Fehler im Fall von "re" auslösen würde; Sie können eine Zeichenfolge nicht 0-mal wiederholen.Table
hat keine solche Einschränkung, das ist also eine große Ersparnis!Perl 6 , 37 Bytes
Probieren Sie es online!
Anonymer Codeblock, der eine Zeichenfolge verwendet und das Oreo mit
o
als Cookie undr
als Creme ausgibt.Erläuterung:
quelle
o
dass anstelle von verwendet werden könnte∘
. Sehr schön golfen.Java 11, 110 Bytes
Verwendet
=
für den Keks und~
zum Füllen.Probieren Sie es online aus.
Erläuterung:
Die obige Lösung verwendet einen Ersatz. Die folgende Abbildung zeigt stattdessen die Zeichen der Eingabe:
Java 11,
113112 Bytes-1 Byte dank @Neil .
Probieren Sie es online aus.
Erläuterung:
quelle
~c&1
?PHP ,
1009993 BytesProbieren Sie es online!
AUTSCH. Die waaaay_too_long-Funktionsnamen von PHP schlagen wieder zu!
Ausgabe:
quelle
PHP ,
968785 BytesDank an @gwaugh -9 Bytes
Dank an @manatwork -2 Bytes
Probieren Sie es online!
Probieren Sie es online! (87 Bytes)
Probieren Sie es online aus (Original 97 Bytes Submition)!
Und eine rekursive Funktion
PHP , 135 Bytes
Probieren Sie es online! (rekursiv)
quelle
<?=
können wir verwenden<?
, oder irre ich mich?' '.$r(o,$l-2).""
→" {$r(o,$l-2)}"
.""
isead of deklariert wird''
$argn
: Online ausprobieren!JavaScript,
726564 BytesProbieren Sie es online aus
quelle
Powershell,
716966 Bytes-2 Bytes danke @Veskah
-3 Bytes danke @AdmBorkBork
Weniger Golf-Testskript:
Ausgabe:
quelle
$args
69 Bytes[string[]]
ist ein[int[]]
... Das[int[]]
ist,[int]
wenn das Array nur ein Element enthält. Toll! Vielen Dank!r
sein kann" "+'%'*($l-2)
stattdessen für -3 Bytes.Holzkohle , 19 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Durchlaufen Sie die Zeichen der Eingabezeichenfolge.
Schalte jeden Charakter ein.
In diesem
o
Fall wird die Eingabezeichenfolge#
in einer eigenen Zeile durch s ersetzt.Wenn es sich um eine
e
Bewegung nach rechts handelt, drucken Sie eine Zeile mit-
s, die um zwei kürzer als die Länge der Eingabezeichenfolge ist, und bewegen Sie sich dann nach unten und links.quelle
Bash, 87 Bytes
Ohne
sed
:Vielen Dank an @manatwork.
Mit
sed
(90 Bytes):quelle
test.sh
. Dann rufen Sie von der Kommandozeile test.sh wie folgt:bash test.sh oreoorererereoo
.f
wird benötigt, um das Zeichen$2
$1
mehrmals zu wiederholenC # (Visual C # Interactive Compiler) , 71 Byte
Probieren Sie es online!
Ich habe mir mit Sicherheit einige Ideen aus der Antwort von Verkörperung der Ignoranz ausgeliehen .
-6 Bytes dank @ASCIIOnly!
Das Gesamtkonzept besteht darin, ein Zeichenfolgenaggregat über die Eingabezeichen nach diesen Regeln zu berechnen:
r
auftritt, fügen Sie ein einzelnes Leerzeichenzum Einrücken hinzu. Wir wissen, dass der nächste Charakter ein sein wird
e
.o
oder eine
wird, generieren Sie eine Zeichenfolge, indem Sie das aktuelle Zeichen eine bestimmte Anzahl von Malen wiederholen und es vor eine neue Zeile oder ein Auffüllen und eine neue Zeile setzen.PadLeft
Funktion dient zur Generierung der sich wiederholenden Zeichenkette.Das Ergebnis ist die Verkettung all dieser Zeichenfolgen.
quelle
Pyth , 28 Bytes
Probieren Sie es hier aus!Dieser verwendet eine Schleife.
Pyth, 30 Bytes
(Als String ersetzen)
Probieren Sie es hier aus!Dieser verwendet String-Ersetzung.
Ich mag Python wirklich (es ist das, in dem ich meine ursprünglichen Testskripte geschrieben habe), also dachte ich, ich würde zum Spaß einen Pyth-Eintrag machen :)
quelle
█
und jeweils░
drei Bytes. Oder fehle ich hier etwas?N
und sogar ein paar Bytes sparen!33 chars, 37 bytes
, jedoch nicht in Golfsprachen auf TIO. Aber in Ihren Lösungen behebt das Ändern dieser Zeichen tatsächlich das Problem, sodass es hier keine so große Sache ist.Ruby ,
6260 BytesProbieren Sie es online!
Verwendet
O
für den Keks,*
zum Füllen.-1 dank @manatwork, das auf einen dummen Fehler hinweist, und -1 wegen der Lockerung der Regeln für Leerzeichen.
quelle
.gsub
Parameter müssen nicht in Klammern gesetzt werden.C # (.NET Core) , 143 Byte
Ohne LINQ.
Probieren Sie es online!
quelle
Clojure , 137 Bytes
Ich verwende die netten Zeichen im Ausdruck in der Golfversion nicht, da diese teuer sind. Gibt eine zu druckende Zeichenfolge zurück.
Probieren Sie es online!
Erklärungen finden Sie weiter unten.
Vorgolfen:
quelle
Dart ,
120106107 BytesProbieren Sie es online!
quelle
Python 2 ,
777672 BytesProbieren Sie es online!
Der äußere Teil des Cookies ist "o" und die Füllung ist "r".
quelle
+' '
nach(l-2)
. Auch du hast einen Tippfehler,*' '
muss sein+' '
.x86-64-Computercode (Linux), 97 Byte
Diese x86-64-Funktion nimmt den Zeiger auf die Eingabezeichenfolge in rsi auf und erstellt die Ausgabe ab dem Zeiger in rdi (dies sind die Register, mit denen die ersten beiden Argumente einer C-Funktion unter Linux übergeben werden). Der Einfachheit halber habe ich dafür einen C ++ - Wrapper geschrieben, der auch die Eingabe bereinigt und die Ausgabe druckt. Dieser Code kann hier gefunden werden . Dies zeigt auch die ursprüngliche nasm-Syntax-Assembly, die ich für diese Funktion geschrieben habe (sowie die nicht golfene Version, mit der ich zuerst gearbeitet habe).
Ein paar Dinge, die beachtet werden müssen, sind, dass dieser Code keine von Angerufenen gespeicherten Register berücksichtigt, was bedeutet, dass der C ++ - Code wahrscheinlich abstürzt, wenn er nach dem Aufrufen dieser Funktion für eine Weile ausgeführt wird. Auf meinem Rechner ist das nicht der Fall, aber das ist ziemlich überraschend. Ich füge auch kein Null-Byte hinzu, um die Ausgabezeichenfolge zu begrenzen, und stattdessen wird der für die Ausgabezeichenfolge zugewiesene Speicherplatz mit Bytes vorab gefüllt. (Wenn dies nicht erlaubt ist, kann ich das Null-Abschlusszeichen zu einem Preis von 3 Bytes hinzufügen).
Die Logik für diesen Code besteht im Wesentlichen darin, die Länge der Zeichenfolge zu zählen, dann für jedes in der Eingabezeichenfolge angezeigte 'o' und 'r' Zeichen eine Zeile dieser Länge zu erstellen und dann für jedes angezeigte 'e' Zeichen das erste zu ersetzen und letzte Zeichen in der vorherigen Zeile mit Leerzeichen.
Ich kann nirgendwo online finden, um eine Mischung aus C ++ - und nasm-Quellcode zu kompilieren und auszuführen, daher könnte ich einen kleinen Wrapper-Code schreiben, um zu beweisen, dass dies funktioniert.Andernfalls sollten Sie in der Lage sein, dies mit dem Makefile in dem Link zu kompilieren und auszuführen, den ich mit dem Befehl gab:Ich konnte die Assembly so formatieren, dass sie von gcc akzeptiert wird sie sie also online aus!
quelle