Noch ein LUL und ich bin raus

57

Herausforderungsbeschreibung

Auf einigen Kanälen auf einer beliebten Streaming-Site twitch.tv neigen Menschen dazu, in Chats zu spammen , um Menschen dazu zu bringen, "LUL" zu spammen

One more LUL and I'm out

LUL ist ein beliebtes Emote, das verwendet wird, um auszudrücken, dass im Stream etwas Komisches passiert ist.

Bald zeigten feuchte Memes ihr Potenzial und eine Parodie der Copy-Pasta folgte:

One more "One more LUL and I'm out" and I'm out

Welches ist die gleiche Nachricht in sich verschachtelt. Bei einer nicht negativen Ganzzahl Ngeben Sie die LUL-Nudeln Nnach dem folgenden Muster in sich selbst geschachtelt aus .

Es gelten die üblichen Regeln, der kürzeste Code in Bytes gewinnt.

Sample Input / Output

0: One more LUL and I'm out
1: One more "One more LUL and I'm out" and I'm out
2: One more "One more "One more LUL and I'm out" and I'm out" and I'm out
...
7: One more "One more "One more "One more "One more "One more "One more "One more LUL and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out

Anmerkungen

  • Führende / nachfolgende Zeilenumbrüche sind zulässig
  • Die Kapitalisierung muss erhalten bleiben
  • Ihr Code kann ein vollständiges Programm oder eine Funktion sein
  • Anstatt zu drucken, können Sie eine Zeichenfolge oder eine Entsprechung in der Sprache Ihrer Wahl zurückgeben
  • Sie können 1statt von indexieren0
shooqie
quelle
6
kann ich auch "am Anfang und am Ende hinzufügen ?
Rod
8
@ Rod: Nein, kannst du nicht.
Shooqie
27
Der Titel dieser Herausforderung ist für Niederländischsprachige sehr umständlich ...
PA71
5
@Pakk Aber es ist wahr. Ich sehe einen LUL und bin raus hier ...
steenbergh
7
Dies kann auf YOLO: You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOOusw. erweitert werden.
DJMcMayhem

Antworten:

24

Python 2 , 56 Bytes

lambda x:('"One more '*x+'LUL'+' and I\'m out"'*x)[1:-1]

Probieren Sie es online!
Es ist 1-indiziert

Stange
quelle
3
Ich nehme an, das [1:-1]am Ende die doppelten Anführungszeichen am Anfang und Ende trimmt?
Nzall
@ Nzall Genau
Rod
Für x = 0 ergibt dies 'U', sollte aber "Noch ein LUL und ich bin raus" ergeben.
Wolfram
3
@Wolfram Es ist 1-indiziert, hat diese Information zu der Antwort hinzugefügt
Rod
18

JavaScript, 57 56 54 52 Bytes

f=q=>`One more ${q?`"${f(q-1)}"`:"LUL"} and I'm out`

Testschnipsel:

f=q=>`One more ${q?`"${f(q-1)}"`:"LUL"} and I'm out`
<input type=number min=0 oninput=o.textContent=f(+this.value)>

<p id=o>

Aus irgendeinem Grund ist das Snack-Snippet fehlerhaft, wenn die Eingabe erfolgt 0, aber das funktioniert anders. Nenne es so f(4).

Erläuterung

f=q=>                      //declares a function f with argument q
`One more ... and I'm out` //hardcoded string
 ${q?`"${f(q-1)}"`:"LUL"}  // does recursion based on q
                           // if q is true, ie not 0, recurse
                           // else return "LUL"
Kritixi Lithos
quelle
Zunächst einmal inputist ein ungültiges HTML-Attribut. Möglicherweise möchten Sie dieses entfernen. Zweitens, weil die Eingabe als Zeichenfolge und nicht als Zahl verwendet wird. So "0"ist Wahrheit, während sie 0falsch ist. Der einfachste Weg , das zu behandeln ist ein setzen +vor , this.valuewenn Sie es sind vorbei.
Patrick Roberts
@PatrickRoberts Danke, ich weiß nicht, warum ich ein zusätzliches inputFeld habe :)
Kritixi Lithos
Schön, ich hätte es wahrscheinlich versucht .replace.
ETHproductions
Stapel läuft über, wenn die Zahl negativ ist.
programmer5000
@ programmer500 Die eingegebene Nummer ist nicht negativ, so dass dies kein Problem ist
Kritixi Lithos
11

Befunge, 91 Bytes

&:00p10p>"tuo m'I dna "1v
09p00-1<^g09p01-1_v#:g0<<vg
>>00g:#^_$>:#,_@  >$"LUL">" erom enO"

Probieren Sie es online!

Dies ist eine Aufschlüsselung des Quellcodes, wobei die verschiedenen Komponenten hervorgehoben sind.

Quellcode mit hervorgehobenen Ausführungspfaden

*Wir beginnen damit, den Wiederholungszähler N zu lesen und zwei Duplikate davon im Speicher abzulegen.
*Wir zählen dann das erste N herunter und legen mehrere Kopien von "und ich bin raus" in umgekehrter Reihenfolge auf den Stapel. Jedes weitere Exemplar wird durch ein Zitat vom vorherigen getrennt. Das Zitat wird mit der Sequenz generiert 90g(im Grunde genommen wird eine Kopie aus der ersten Zeile der Quelle gelesen), da dies der kürzeste Weg ist, dies zu tun.
*Sobald diese erste Schleife abgeschlossen ist, drücken wir "LUL" auf den Stapel (technisch ist dies umgekehrt, aber es macht offensichtlich keinen Unterschied, wenn es sich um ein Palindrom handelt).
*Dann haben wir eine weitere Schleife, die sich über den rechten Rand, links vom Spielfeld und dann wieder zurück schlängelt. Diesmal zählen wir das zweite N herunterSchieben Sie mehrere Kopien von "One more" auf den Stapel (wieder in umgekehrter Reihenfolge). Und wieder wird jede weitere Kopie mit einem Zitat von der vorherigen getrennt.
*Sobald die zweite Schleife abgeschlossen ist, befindet sich die gesamte Phrase auf dem Stapel (in umgekehrter Reihenfolge), sodass wir sie einfach ausschreiben müssen.

James Holderness
quelle
Gute Gelegenheit, einen zu schieben ". Vielen Dank für die Erklärung
MildlyMilquetoast
6

05AB1E , 30 29 Bytes

…LULIF“"One€£ ÿ€ƒ I'm€Ä"“}}¦¨

Probieren Sie es online!

Verschiedene Saitentypen scheinen sich nicht gut zu mischen, daher muss ich die Schleife aus irgendeinem Grund zweimal beenden.

Emigna
quelle
6

C ++, 118 + 16 = 134 Bytes

auto L(int x){std::string k="One more LUL and I'm out",r=k;for(int i=0;i++<x;)r.replace(i*10-1,3,'"'+k+'"');return r;}

#include<string> - +16

Ersetzt "LUL" N-mal durch die gesamte Zeichenfolge.

Hat jemand bessere Golfplätze?

Probieren Sie es online!

Massiver Dank an Kritixi Lithos und hvd für massive Hilfe.

Matthew Roh
quelle
@Kritixi Jetzt hat es einen Ausschnitt.
Matthew Roh
Das ist kürzer. Und ich denke, Sie müssen möglicherweise die <string>Import-Anweisung in das bytecount aufnehmen, nicht sicher
Kritixi Lithos
Sie können auch die for(int i=0;i<x;i++)zu ändernfor(int i=0;i++<x;)
Kritixi Lithos
Darüber hinaus r.find("L")ist kürzer als r.find("LOL")2 Bytes :)
Kritixi Lithos
Rekursive Version: Probieren Sie es online! Sie können auch die Kopf- und Fußzeile von TIO für zusätzliche Informationen verwenden und dann nur Ihren Code in der Byteanzahl zählen.
Nmjcman101
5

Javascript (ES6), 68 Bytes

f=(x,y="LUL")=>~x?f(--x,`"One more ${y} and I'm out"`):y.slice(1,-1)

Rufen Sie gerne an f(n).

Sie können es auch so nennen f(n, "LUL")und LUL durch ein beliebiges Wort ersetzen.


quelle
Da in der Frage nur "LUL" abgefragt wird, können Sie wahrscheinlich die Flexibilität des Änderns des Texts aufheben und einige Bytes herausgreifen.
Trotzdem eine gute
2
@FarhanAnam Ich dachte, dies sei ein guter Startbeitrag, den ich dann bearbeiten würde, aber nachdem ich gepostet hatte, sah ich, dass jemand eine bessere Antwort gepostet hatte, und egal wie sehr ich mich bemühte, Golf zu spielen, endete ich immer mit seiner Antwort. Deshalb dachte ich, ich sollte es einfach so flexibel lassen, dass jemand Spaß daran hat.
5

V , 39 37 Bytes

Zwei Bytes mit Hilfe von @KritixiLithos für die Erarbeitung der Substitutionsmethode

iOne more LUL and I'm outÀñÓLUL/"."

Probieren Sie es online!

Hexdump:

00000000: 694f 6e65 206d 6f72 6520 4c55 4c20 616e  iOne more LUL an
00000010: 6420 4927 6d20 6f75 741b c0f1 d34c 554c  d I'm out....LUL
00000020: 2f22 122e 22                             /".."
nmjcman101
quelle
Es ist LUL und nicht LOL;)
Geisterfurz007
4

Java, 79.77 Bytes

Golf gespielt:

String f(int l){return"One more "+(l<1?"LUL":'"'+f(l-1)+'"')+" and I'm out";}

Ungolfed, mit Test:

public class OneMoreLulAndImOut {

  public static void main(String[] args) {
    OneMoreLulAndImOut obj = new OneMoreLulAndImOut();
    for (int i = 0; i < 8; ++i) {
      System.out.println(Integer.toString(i) + ": " + obj.f(i));
    }
  }

  String f(int l) {
    return "One more " + (l < 1 ? "LUL" : '"' + f(l - 1) + '"') + " and I'm out";
  }    
}

Programmausgabe:

0: One more LUL and I'm out
1: One more "One more LUL and I'm out" and I'm out
2: One more "One more "One more LUL and I'm out" and I'm out" and I'm out
3: One more "One more "One more "One more LUL and I'm out" and I'm out" and I'm out" and I'm out
4: One more "One more "One more "One more "One more LUL and I'm out" and I'm out" and I'm out" and I'm out" and I'm out
5: One more "One more "One more "One more "One more "One more LUL and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out
6: One more "One more "One more "One more "One more "One more "One more LUL and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out
7: One more "One more "One more "One more "One more "One more "One more "One more LUL and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out" and I'm out

quelle
Sie können beide "\""in '"'(einzelne Zeichen) ändern , um 2 Byte zu sparen.
Kevin Cruijssen
1
@ KevinCruijssen danke, ich wusste, dass ich etwas verpasst habe.
3

Python, 79 Bytes

Ich wollte nur eine rekursive Lösung erstellen, obwohl sie länger ist als andere Antworten.

x='"One more %s and I\'m out"'
f=lambda n,s=x:n and f(n-1,s%x)or(s%"LUL")[1:-1]

Probieren Sie es online aus

mbomb007
quelle
3

C #, 125 Bytes

n=>{string f="One more {0} and I'm out",s=f;for(int i=0;i++<n;)s=string.Format(s,$"\"{f}\"");return string.Format(s,"LUL");};
TheLethalCoder
quelle
Ich frage mich, ob Sie String-Interpolation anstelle von Format... verwenden können
Bob
Wechseln Sie stringzu var, um zwei Bytes zu speichern.
devRicher
@devRicher Kann nicht, weil ich 2 Variablen deklariere
TheLethalCoder
@ Bob Ich benutze es bereits, nicht sicher, ob ich es woanders verwenden kann
TheLethalCoder
Hoppla, ich habe es nicht bemerkt, sorry.
Bob
3

C, 140 111 Bytes

Mein erster Versuch einer Golffrage.

#define F printf(
#define P 1&&putchar(34)
int a=0;void q(n){a=a?a:n,n?n>0?F"One more "),n-P:n?n+P,F" and I'm out"):0:F"LUL"),n+a?q(n-1):0;}

Mir ist klar geworden, dass die Ausgabe falsch ist, da q (0) nur LUL ergibt. Der nächste Versuch:

#define o(Q) O(Q,n?34:0);
#define O printf
void q(int n){o("One more %c")n?q(n-1):O("LUL"),o("%c and I’m out")}

Beispielprogramm (getestet mit GCC unter OSX):

#define o(Q) O(Q,n?34:0);
#define O printf
void q(int n) {o("One more %c")n?q(n-1):O("LUL"),o("%c and I’m out")}

int main() {
    q(0),putchar('\n');
    q(1),putchar('\n');
    q(2),putchar('\n');
    q(3),putchar('\n');

    return 0;
}

Gibt die Ausgabe aus

One more LUL and I’m out
One more "One more LUL and I’m out" and I’m out
One more "One more "One more LUL and I’m out" and I’m out" and I’m out
One more "One more "One more "One more LUL and I’m out" and I’m out" and I’m out" and I’m out
Ahemone
quelle
3

Mathematica, 69 68 Bytes

Vielen Dank an Martin Ender für das Speichern von 1 schwer auffindbaren Byte!

""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&

Unbenannte Funktion, die ein nichtnegatives ganzzahliges Argument verwendet und eine Zeichenfolge zurückgibt. NestWendet eine Funktion wiederholt auf ein Anfangsargument an. In diesem Fall besteht die Funktion darin, das Argument mit den entsprechenden Wörtern und Anführungszeichen zu umgeben. Wir beginnen "LUL"und wiederholen die N+1Zeiten; das führt zu unerwünschten Anführungszeichen, die die gesamte Phrase einschließen, aber [[2]]nur das Zeug zwischen sich behalten. Am Ende wird ""<>die resultierende stark verschachtelte Liste in eine einzelne Zeichenfolge umgewandelt.

Vorherige Einreichung:

""<>Nest[{o,q="\"",#,q,a}&,{o="One more ","LUL",a=" and I'm out"},#]&
Greg Martin
quelle
1
Es ist gelungen, ein Byte zu entfernen, und zwar ab LUL:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
Martin Ender
Aha! [[2]]! So umgehen Sie die ersten unerwünschten Zitate: D
Greg Martin
3

C #, 119 85 71 Bytes

string m(int n)=>$"One more {(n<1?"LUL":$"\"{m(--n)}\"")} and I'm out";

14 Bytes gespart dank @Luc

TheLethalCoder
quelle
Sieht aus wie es funktioniert (über LINQPad). Nett. Verschachtelte interped Zeichenfolgen klingen ein bisschen zweifelhaft, aber es sieht so aus, als würde sie zuerst am Ternär ersticken.
Bob
@ Bob Das Problem, das ich habe, um es zum Laufen zu bringen, liegt an den Anführungszeichen, oder zumindest daran, dass ich denke, dass dies dazu führt, dass ich das erste nicht entfernen string.Formatund es verschachteln kann
TheLethalCoder
Wie wäre es mit $ "One more {(n <1?" LUL ": $" \ "{m (- n)} \")} und ich bin raus "
Luc
@Luc hast du das probiert? Denn ich bin mir sicher, dass ich etwas Ähnliches gemacht habe und es hat nicht funktioniert. Auf meinem Handy kann ich das gerade nicht testen
TheLethalCoder 20.01.17
Sie können auf jeden Fall string.Format mit + ersetzen, um 73 Zeichen zu erhalten:
Chris F Carroll
2

R 97 Bytes

function(n){s="One more LUL and I'm out";while(n){s=sub("LUL",paste0('"',s,'"'),s);n=n-1};cat(s)}

Ungolfed:

function(n) {
  s = "One more LUL and I'm out";
  while(n) {
    s = sub("LUL", paste0('"', s, '"'), s);
    n = n - 1
  };
  cat(s)
}
Sven Hohenstein
quelle
2

R 100 97 92 Bytes

"Noch eine rekursive Funktion und ich bin raus"

f=function(n)paste("One more",`if`(n<1,"LUL",paste0('"',f(n-1),'"')),"and I'm out");cat(f(scan()))

Bearbeiten: Es stellt sich heraus, dass ein nicht rekursiver Ansatz etwas kürzer ist:

x="One more ";y=" and I'm out";cat(x,rep(c('"',x),n<-scan()),"LUL",rep(c(y,'"'),n),y,sep="")
Billywob
quelle
2

Ruby, 51 Bytes

Einindexiert. Probieren Sie es online aus

->n{['One more ']*n*?"+'LUL'+[" and I'm out"]*n*?"}
Wert Tinte
quelle
2

PowerShell , 72 bis 67 Byte

"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')

Probieren Sie es online!

Briantist
quelle
"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')rasiert 5 durch Verwendung eines trim () anstelle eines Joins zum Überspringen des Endes "'s
colsw
@ConnorLSW schön! Guter Anruf, danke
Briantist
1

Lua, 101 Bytes

i,f,g='"One more ',' and I\'m out"',io.read()+1 print((i:rep(g).."LUL"..f:rep(g)):sub(2,g*24-(g-2)))

Offensichtlicher Saitenversuch. Wiederholt "One moreund gibt and I'm out"genau + 1 Mal ein, mit einem LULdazwischen, und entfernt dann das erste und das letzte Anführungszeichen.

devRicher
quelle
1

Haskell, 51 Bytes

Indizes von 1.

f 0="LUL";f n="One more \""++f(n-1)++"\" and I'm out"
gntskn
quelle
7
Dies scheint die LULAnführungszeichen falsch zu drucken .
Zgarb,
Einfach, den Index mit 0 zu erstellen f -1="LUL", aber ich verstehe nicht, wie ich zusätzliche Anführungszeichen ohne eine Reihe neuer Symbole entfernen kann.
Wolfram
1

Ruby, 70 Bytes

def l x,t="LUL";x.times{t='"One more %s and I\'m out"'%t};t[1..~1];end

Durchlaufen Sie einfach die angegebene Menge und umgeben Sie die letzte Zeichenfolge jedes Mal mit einer Formatzeichenfolge.

Index beginnt um eins.

NO_BOOT_DEVICE
quelle
1

Gestapelt, 54 Bytes

('"One more ' ' and I''m out"')*'LUL'join'^.|.$'εrepl

Probieren Sie es hier aus! Beispiel für die Verwendung von "function":

1
('"One more ' ' and I''m out"')*'LUL'join'^.|.$'εrepl
out

Eine für 56 Bytes:

@n'One more LUL and I''m out':@o['LUL' '"'o'"'+ +repl]n*
Conor O'Brien
quelle
1

Python 3, 68 Bytes

def f(a):return('"One more '*a+'LUL'+(' and I%sm out"'%"'")*a)[1:-1]

sonrad10
quelle
Dies führt zu einer falschen Ausgabe. Meinten Sie *astatt *5?
mbomb007
Ja, danke, ich wusste nicht, dass ich das sagen würde
sonrad10 20.01.17
1

CJam, 51 49 Bytes

" and I'm out\"""\"One more "li1+_@*"LUL"+1>@@*W<

Probieren Sie es online aus

Ungolfed:

" and I'm out\""   "\"One more " // Push two strings to the stack
     l i 1 +                     // Read a number and add 1
     _ @                         // Copy number and rise '"One more ' to the top
     *                           // Multiply '"One more ' by a number
     "LUL" +                     // Add "LUL"
     1>                          // Chop the first quote
     @@                          // Push the result down
     *                           // Multiply ' and I\'m out"' by a number
     W<                          // Chop the last quote
Wolfram
quelle
Sie können Wanstelle von -1 ein Byte speichern
Business Cat
1
Hier sind einige andere Tricks, um dies weiter zu verkürzen: tio.run/nexus/cjam#@6/… ... Ich habe versucht, das zu vermeiden, \"indem ich eine einzelne Zeichenfolge habe und die "an beiden Enden mit hinzufüge `. Dann musste ich die Saite teilen, was ich mit einer Länge und nicht machen konnte /, weil der erste Teil kürzer ist. Also habe ich einen Zeilenvorschub als Trennzeichen verwendet und getan N/. Da wir nun beide Teile in einer Liste haben, können wir beide leicht auf einmal mit wiederholen f*. Und das LULwird am Ende mit einem einfachen Join ( *) eingefügt .
Martin Ender
Das ist cool, aber es sieht eher nach einer völlig anderen Lösung aus, als dies weiter zu verkürzen :) Das ist mein erstes Programm bei CJam, daher kannte ich diese Tricks nicht, danke. Sollte ich diese Lösung zur Antwort hinzufügen?
Wolfram
@Wolfram Es liegt an dir. Ich freue mich, dass Sie es verwenden (sonst hätte ich nicht kommentiert;)).
Martin Ender
@Wolfram einen schönen ersten Versuch! Sie werden wahrscheinlich viel davon profitieren, wenn Sie Martins Antwort durchgehen
A Simmons
1

Groovy, 54 Bytes

{x->('"One more '*x+'LUL'+' and I\'m out\"'*x)[1..-2]}

Ganz einfach, genau wie die Python-Antwort, aber 2 Bytes kürzer. Es ist auch 1-indiziert.

Probieren Sie es online!

Gurupad Mamadapur
quelle
1

Mathematica, 65 63 Bytes

Nest["\"One more "<>#<>" and I'm out\""&,"LUL",#]~StringTrim~_&

Zwei Bytes weniger, wenn Sie die Herausforderung bemerken, ermöglichen eine Indizierung von 1.

Ein Simmons
quelle
1

PHP

Hallo, ich habe bisher zwei möglichkeiten dafür gefunden.

Der Ersetzungsweg 1-indiziert (121 Bytes) .

function f($x){$v='One more LUL and i\'m out';$t=$v;for($i=1;$i<=$x;$t=str_replace('LUL','"'.$t.'"',$v),$i++);return $t;}

Der rekursive Weg (86 Bytes) .

function r($n){$v=($n==0)?'LUL':'"'.r($n-1).'"';return'One more '.$v.' and i\'m out';}
Antoine B.
quelle
In PHP sind Programme fast immer kürzer als Funktionen.
Titus
1

C ++, 80 + 16 = 96 Bytes

std::string L(int c){return"One more "+(c?'"'+L(--c)+'"':"LUL")+" and I'm out";}

#include<string> - +16

Ungolfed:

std::string LUL(int count) {
    return "One more " + (count? ('"' + LUL(--count) + '"') : "LUL") + " and I'm out";
}

Ruft sich selbst rekursiv auf und verwendet Stringaddition. Ziemlich einfach. Ich meine, was kann ich sonst noch sagen? Sogar die ungolfed Version ist im Wesentlichen ein Einzeiler.

Probieren Sie es online!

BrainStone
quelle
1

Cheddar , 71 Bytes

i->('One more "'*i).slice(0,-1)+'LUL '+('and I\'m out" '*i).slice(0,-2)

Probieren Sie es online!

Pavel
quelle
Versuchen Sie es mit einer Rekursion mit einer _ f ->Syntax, die möglicherweise einige Bytes
einspart
Ähm, ich bin nicht wirklich mit der Funktionsweise dieser Syntax vertraut, und ich kann sie oder Beispiele in den Dokumenten nicht finden.
Pavel