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

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


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"

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.


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.


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.


@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.


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                             /".."

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

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


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");};

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

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"},#]&

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


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)
}

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="")



2

PowerShell , 72 bis 67 Byte

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

Probieren Sie es online!


"$('"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.


1

Haskell, 51 Bytes

Indizes von 1.

f 0="LUL";f n="One more \""++f(n-1)++"\" and I'm out"

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.


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*

1

Python 3, 68 Bytes

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


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

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

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.


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';}

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!


1

Cheddar , 71 Bytes

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

Probieren Sie es online!


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.