Warte ... das ist kein Trolling.
Hintergrund
In diesen Tagen sind die Kommentarbereiche auf YouTube mit folgenden Mustern übersät:
S
St
Str
Stri
Strin
String
Strin
Stri
Str
St
S
Wo String
ist ein bloßer Platzhalter und bezieht sich auf eine beliebige Kombination von Zeichen. Diese Muster werden normalerweise von einem It took me a lot of time to make this, pls like
oder etwas begleitet, und oft gelingt es dem OP, eine Reihe von Likes zu sammeln.
Die Aufgabe
Obwohl Sie eine große Begabung dafür haben, mit Ihren bezaubernden Golfkünsten Aufwertungen bei PPCG zu erzielen, sind Sie definitiv nicht die erste Wahl, um witzige Bemerkungen zu machen oder Memes in YouTube-Kommentarbereichen zu referenzieren. So sammeln Ihre konstruktiven Kommentare, die Sie mit Bedacht abgegeben haben, auf YouTube ein paar „Gefällt mir nicht“. Sie möchten, dass sich dies ändert. Sie greifen also auf die oben genannten Klischeemuster zurück, um Ihr letztendliches Ziel zu erreichen, ohne jedoch Zeit damit zu verschwenden, sie manuell zu schreiben.
Einfach ausgedrückt, besteht Ihre Aufgabe darin, eine Zeichenfolge zu nehmen s
und 2*s.length - 1
Teilzeichenfolgen von s
, die durch eine neue Zeile begrenzt sind, auszugeben, um dem folgenden Muster zu entsprechen:
(für s
= "Hallo")
H
He
Hel
Hell
Hello
Hell
Hel
He
H
Eingang
Eine einzelne Zeichenfolge s
. Es gelten die Eingabestandards der Community. Sie können davon ausgehen, dass die Eingabezeichenfolge nur druckbare ASCII-Zeichen enthält.
Ausgabe
Mehrere durch einen Zeilenumbruch getrennte Zeilen bilden ein geeignetes Muster, wie oben erläutert. Es gelten die Ausgabestandards der Community. Führende und nachfolgende Leerzeichen (die keine oder nicht sichtbare Zeichen wie Leerzeichen enthalten) sind in der Ausgabe zulässig.
Testfall
Ein Testfall mit mehreren Wörtern:
Input => "Oh yeah yeah"
Output =>
O
Oh
Oh
Oh y
Oh ye
Oh yea
Oh yeah
Oh yeah
Oh yeah y
Oh yeah ye
Oh yeah yea
Oh yeah yeah
Oh yeah yea
Oh yeah ye
Oh yeah y
Oh yeah
Oh yeah
Oh yea
Oh ye
Oh y
Oh
Oh
O
Beachten Sie, dass die Form der Ausgabe des obigen Testfalls offensichtlich verzerrt ist (z. B. erscheinen Zeile zwei und Zeile drei der Ausgabe gleich). Das liegt daran, dass wir die nachgestellten Leerzeichen nicht sehen können. Ihr Programm muss NICHT versuchen, diese Verzerrungen zu beheben.
Gewinnkriterium
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes in jeder Sprache!
YouTube Comments #1
im Titel.""
? Wie wäre es mit einem einzelnen Charakter"H"
? Wenn ja, welche Ausgabe sollte in beiden Fällen erfolgen?Antworten:
Brainfuck , 32 Bytes
Probieren Sie es online!
Die gleiche Schleife wird für beide Hälften des Musters verwendet.
Erläuterung:
quelle
JavaScript (ES6), 36 Byte
Probieren Sie es online!
Kommentiert
quelle
Unix (LF)
. Problem ein für allemal gelöst. :)05AB1E (Legacy) ,
43 BytesDurchgestrichen
4
ist nicht mehr 4 :)Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
In der neuen Version von 05AB1E
»
ist nach dem expliziten und erforderlichη
, weshalb ich hier die Legacy-Version von 05AB1E verwende, um ein Byte zu speichern.quelle
\xce\xb7\x2e\xe2\x88\x8a
08 2e 17
, die Sie ausführen und mit dem--osabie
Flag überprüfen können : tio.run/…IBM PC DOS, 8088-Assembly,
4443Zerlegt:
Erläuterung
Schleife
2 * input length - 1
für jede Reihe. Die String-Anzeigefunktion (INT 21H,9
) der DOS-API schreibt einen durch$
-terminierten String auf den Bildschirm, sodass jedes Mal, wenn die Schleife durchlaufen wird, das Zeichen nach dem zuletzt anzuzeigenden mit dem Endterminator des Strings ausgetauscht wird.Der Schleifenzähler wird mit der Länge der Zeichenfolge verglichen, und wenn er größer ist (dh der aufsteigende Teil der Ausgabe), wird die Zeichenfolge / Swap-Position inkrementiert, andernfalls wird sie dekrementiert (tatsächlich sind es
-1-1+1
weniger Bytes als bei einer if / else-Verzweigungsstruktur).Ein eigenständiges ausführbares Programm, das die Eingabezeichenfolge von der Befehlszeile übernimmt.
Ausgabe
YT2.COM herunterladen (43 bytes)
quelle
SHR SI, 1
.Python 2 ,
6052 BytesProbieren Sie es online!
Python 3.8 (Vorabversion) , 50 Byte
Probieren Sie es online!
quelle
x:=s[:n]
.MATL , 8 Bytes
Probieren Sie es online!
Bitte mag diesen Beitrag für den Smiley
:)
im Code, für dessen Erstellung ich viel Zeit gebraucht habe.quelle
J , 11 Bytes
Anonyme implizite Präfixfunktion. Gibt eine mit Leerzeichen aufgefüllte Zeichenmatrix zurück.
Probieren Sie es online!
]\
die Liste der Präfixe[:(
…)
Wende die folgende Funktion auf diese Liste an|.
die umgekehrte Liste,
vorangestellt mit}:
die verkürzte (ohne letzten Punkt) Listequelle
[:(
und}:,|
sieh so traurig aus ...Perl 6 , 31 Bytes
Probieren Sie es online!
Anonymer Codeblock, der eine Zeichenfolge akzeptiert und eine Liste von Zeilen zurückgibt.
Erläuterung:
quelle
Japt- R , 4 Bytes
Kumulative Reduzierung einer Zeichenfolge.
-1 Byte dank @Shaggy
Probieren Sie es online!
quelle
-flag
oder <language>-flag
. Auch: | Ich habe vergessen, dass das kumulative Reduzieren eine Sache ist. Ich schwöre, ich habe es jedes Mal übersprungen, wenn ich es gesehen habe-flag
?Japt
-R
,97 Bytes-2 Bytes dank Shaggy
Probieren Sie es online!
quelle
Ã
ist eine SachePerl 5 (
-p
), 26 BytesTIO
quelle
Haskell,
525044 Bytesinstance Semigroup b => Semigroup (a -> b)
Probieren Sie es online!
quelle
inits
erfordert, dass ein Import verwendet wird, damit Sie ihn hinzufügen müssen,import Data.List
oder etwas Ähnliches.import Data.List putStr.unlines.((++)<*>reverse.init).tail.inits
R ,
79656258 ByteProbieren Sie es online!
-14 durch Giuseppes überlegenes Funktionswissen
-3 mit sauberer Indexierung
-4 dank Nick Kennedy und Giuseppes Umzug zu
scan
undwrite
Schleifen (und
substr
) zu vermeiden ist schön.quelle
sapply
-substring
tun, was Sie wollen (mit einer zusätzlichen nachgestellten Leerzeile) und für 65 Bytes ! Ich hätte definitiv nicht daran gedacht,substring
wenn ich nicht gesehen hätte, wie gut du essubstr
hier benutzt hast .scan
undwrite
? Nur 59 Bytes!""
mit1
.Gelee ,
54 Bytes-1 Byte Danke an @JonathanAllan !
Probieren Sie es online! Ich denke, das ist meine zweite Gelee-Antwort?
Ich weiß nicht, ob das optimal ist.Ich bin mehr davon überzeugt, dass es optimal ist. Gibt ein Array von Zeilen zurück.Erläuterung
Ein weiterer Ansatz, der von @JonathanAllan vorgeschlagen wurde, besteht darin
;\ŒḄ
, die\
Verkettung (;
) kumulativ zu reduzieren , was eine weitere Möglichkeit darstellt, Präfixe zu generieren.quelle
Y
aus dem Code herausspringen können (ich würde die Fußzeile entweder machenÇY
oderÇŒṘ
den impliziten Abdruck eines Vollprogramms vermeiden). Nebenbei bemerkt ist dies auch äquivalent;\ŒḄ
zu der gleichen Byteanzahl implementiert (Sie können das Argument auch übergeben,"blah"
wenn Jelly dies als eine Liste von Zeichen interpretiert - wie Sie sehen werden, handelt es sich bei Ihrer tatsächlich um eine Liste von Zeichenlisten wenn Sie die Fußzeile machenÇŒṘ
)Python 3.8 (Vorabversion) , 48 Byte
Probieren Sie es online!
Verwendet Zuweisungsausdrücke mit
:=
, um eine Liste von Präfixen zu erstellen und das Ergebnis dann erneut zu speichern, um seine Umkehrung zu verketten (ohne das erste Zeichen).Python 2 , 51 Bytes
Probieren Sie es online!
Wir haben fast die folgende schöne 45-Byte-Lösung, aber es hat die ursprüngliche Zeichenfolge zweimal und ich sehe keinen kurzen Weg, um dies zu beheben.
Probieren Sie es online!
quelle
print('\n'.join(f(s)))
?x=[s[:i+1]for i in range(len(s))];x+x[-2::-1]
s=input();x=[s[:i+1]for i in range(len(s))];print x+x[-2::-1]
. Sehen Sie sich die Beispiele oben an .Kohle , 5 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
G
Zeichnet ein gefülltes Polygon,^
gibt an, dass die Seiten rechts und links unten sind (das Polygon schließt sich dann automatisch selbst),Lθ
gibt die Länge dieser Seiten als Länge der ursprünglichen Eingabe an und das Endergebnisθ
gibt die Füllzeichenfolge an.quelle
C # (Visual C # Interactive Compiler) ,
123109948474 ByteAngenommen, wir können ein char-Array-Array zurückgeben.
Probieren Sie es online!
quelle
Attache , 15 Bytes
Probieren Sie es online!
Ziemlich einfach.
Bounce
s (rückwärts ohne Mitte anhängen)Prefixes
des Eingangs.Alternativ 21 Byte:
Bounce@{_[0..0:~-#_]}
Präfix erneut implementieren.quelle
Brachylog (v2), 6 Bytes
Probieren Sie es online!
Funktionsübergabe, die ein Array von Zeilen zurückgibt. Lose basierend auf der Antwort von @ Fatalize .
Erläuterung
Die Tiebreak-Reihenfolge wird hier durch die festgelegt
⊆
, die bei Verwendung dieses Flussmusters die kürzestmögliche Ausgabe bevorzugt , wobei die Tiebroken durch die frühestmögliche Platzierung der angegebenen Elemente erfolgen . Die kürzestmögliche Ausgabe ist das, was wir hier wollen (da keine doppelten Präfixe möglich sind). Wenn Sie die angegebenen Elemente (dh die Präfixe) so früh wie möglich platzieren, werden sie in der ersten Hälfte (aufgerundet) der Ausgabe. Da wir auch verlangen, dass sie in der gleichen Reihenfolge angeordnet werden, erhalten wir zufällig genau das Muster, das wir benötigen, obwohl die Beschreibung, die wir Brachylog gegeben haben, sehr allgemein ist. Die Tiebreaks funktionieren genau richtig, sodass Brachylog die Ausgabe auswählt, die wir möchten, und nicht irgendeine andere Ausgabe, die der Beschreibung entspricht.quelle
PowerShell,
898766 Bytes-2 Bytes dank @AdmBorkBork
Probieren Sie es online!
Es hat tatsächlich nicht wie angegeben funktioniert, sorry! Ich habe es bearbeitet und es auch geschafft, einige Bytes weg zu rasieren.
quelle
--$d
stattdessen($d-1)
ein Paar am Ende retten.PowerShell , 46 Byte
Probieren Sie es online!
PowerShell , 42 Bytes (YouTube Spezial, Dirty)
Es ist bekannt, dass die maximale Länge eines Kommentars auf YouTube 10.000 Zeichen beträgt. Ok, benutze dies als obere Grenze.
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 9 Byte SBCS
Anonyme implizite Präfixfunktion. Gibt eine Liste von Zeichenfolgen zurück.
Probieren Sie es online!
,\
die Liste der Präfixe (beleuchtet, die kumulative Verkettung)(
…)
Wende die folgende Funktion auf diese Liste an:⌽
die umgekehrte Liste1↓
Lass den ersten Gegenstand fallen,
voranstellen⊢
die unveränderte Listequelle
Ruby ,
514240 BytesProbieren Sie es online!
Danke an Doorknob für -2 Bytes.
quelle
...
durch,
JavaScript (Node.js) , 90 Byte
Dies kann wahrscheinlich viel mehr Golf gespielt werden, Arnauld hat bereits einen viel kürzeren, aber ich hatte zumindest Spaß!
Probieren Sie es online!
quelle
SNOBOL4 (CSNOBOL4) , 118 Bytes
Probieren Sie es online!
Es scheint einen Fehler in dieser Implementierung von SNOBOL zu geben. Der Versuch, das Etikett
D
durch das Etikett zu ersetzen,2
führt zu einem Fehler, obwohl das Handbuch für Vanilla SNOBOL dies anzeigt (Hervorhebung hinzugefügt).Ich gehe davon aus, dass der CSNOBOL-Interpreter nur eine einzige Bezeichnung unterstützt, die mit einer Ganzzahl beginnt.
quelle
APL + WIN, 31 Bytes
Eingabeaufforderung für Zeichenfolge:
Erläuterung:
quelle
F # (.NET Core) ,
6761 BytesProbieren Sie es online!
Input ist a
string
und Output ist aseq<string>
Eine andere Lösung könnte
let f(s:string)=for i=1 to s.Length*2-1 do printfn"%s"s.[..s.Length-abs(i-s.Length)-1]
für 80ish Bytes sein ... Ich bin nicht sicher, ob es sich lohnt, sie zu untersuchen.quelle
sed ,
3135 bytesProbieren Sie es online!
Erläuterung
Zu Beginn jeder Iteration der Schleife ist der Musterraum ein "zentraler Teil" der gewünschten Ausgabe, und jede Schleife fügt eine verkürzte Kopie oben und unten hinzu.
quelle
sed
. Gleiches gilt für TIO. Welchesed
Implementierung benutzt Du und wie übergibst Du ihm die Eingabe? (Übrigens, die Substitution zu ändern, ums/.\n.*\|.$//
es zused
Implementierung (mit GNU Version 4.2.1), ich habe den Fehler einfach nicht bemerkt. Ich habe mit einigen anderen Korrekturen herumgespielt und kann nichts finden, das weniger als vier Bytes hinzufügt, also übernehme ich Ihre Korrektur, danke.Python 2 ,
13110084 BytesMeine erste Antwort auf Code Golf!
-47 Bytes insgesamt dank @ SriotchilismO'Zaic
Probieren Sie es online!
quelle
;
s anstelle von Zeilenumbrüchen verwenden, um Einrückungen zu vermeiden. Auch keine Leerzeichen zwischenprint
und''
a
eine Zeichenfolge anstatt einer Liste erstellen, brauchen Sie diejoin
überhaupt nicht mehr und Sie können einfachprint a
.x
.J , 12 Bytes
Probieren Sie es online!
Immer noch 1 Byte länger als bei Adám
K (oK) ,
1211 Bytes-1 Byte dank ngn
Probieren Sie es online!
quelle
{x,1_|x}@,\