Ancora un LUL e sono fuori


57

Descrizione della sfida

Su alcuni canali su un popolare sito di streaming twitch.tv un messaggio comune le persone tendono a fare spam nelle chat per attirare le persone nello spamming "LUL" è

One more LUL and I'm out

LUL è un'emote popolare usata per esprimere che qualcosa di divertente è successo in streaming.

Presto i meme umidi mostrarono il loro potenziale e ne seguì una parodia della pasta-copia:

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

Qual è lo stesso messaggio nidificato in sé. Dato un numero intero non negativo N, genera i Ntempi annidati di LUL-pasta in sé seguendo lo schema seguente.

Si applicano le regole standard del , vince il codice più breve in byte.

Ingresso / uscita campione

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

Appunti

  • Sono consentite nuove linee guida / finali
  • Le maiuscole devono essere preservate
  • Il tuo codice può essere un programma completo o una funzione
  • Invece di stampare, puoi restituire una stringa o il suo equivalente nella tua lingua preferita
  • Puoi indicizzare 1invece di0

6
posso aggiungere anche "all'inizio e alla fine?
Rod

8
@Rod: No, non puoi.
shooqie,

27
Il titolo di questa sfida è molto imbarazzante per chi parla olandese ...

5
@Pakk Ma è vero. Vedo un LUL, e sono fuori di qui ...
Steenbergh,

7
Questo può essere esteso a YOLO You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOO
:,

Risposte:


24

Python 2 , 56 byte

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

Provalo online!
È 1 indicizzato


3
Presumo che [1:-1]alla fine tagli le doppie virgolette all'inizio e alla fine?
Nzall,

@Nzall Precisely
Rod

Per x = 0 questo dà 'U', ma dovrebbe dare "Un altro LUL e sono fuori".
Wolfram,

3
@Wolfram È 1-indicizzato, ha aggiunto queste informazioni alla risposta
Rod

18

JavaScript, 57 56 54 52 byte

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

Snippet di prova:

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>

Per qualche motivo lo snippet di snack viene buggy quando l'ingresso è 0, ma questo funziona diversamente. Chiamalo come f(4).

Spiegazione

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"

Prima di tutto inputè un attributo HTML non valido, potrebbe volerlo rimuovere. In secondo luogo, è perché accetta l'input come stringa, non come numero. Così "0"è vero mentre 0è falso. Il modo più semplice per gestirlo è metterlo +di fronte this.valuequando lo si passa.
Patrick Roberts,

@PatrickRoberts Grazie, non so perché ho un inputcampo in più :)
Kritixi Lithos

Bene, probabilmente avrei provato ad usare .replace.
ETHproductions

Lo stack trabocca quando il numero è negativo.
programmatore

@ programmer500 Il numero di input è considerato non negativo, quindi non è un problema
Kritixi Lithos

11

Befunge, 91 byte

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

Provalo online!

Questa è una suddivisione del codice sorgente con le varie parti componenti evidenziate.

Codice sorgente con percorsi di esecuzione evidenziati

*Iniziamo leggendo il conteggio delle ripetizioni N e memorizzandone due duplicati in memoria.
*Quindi conto alla rovescia della prima N , spingendo più copie di "e io sono fuori" sulla pila al contrario. Ogni copia aggiuntiva è separata da quella precedente con un preventivo. La citazione viene generata con la sequenza 90g(fondamentalmente leggendo una copia dalla prima riga della fonte), poiché questo è il modo più breve per farlo.
*Una volta completato questo primo ciclo, spingiamo "LUL" nello stack (tecnicamente è al contrario, ma ovviamente non fa differenza quando è un palindromo).
*Quindi abbiamo un altro anello, che si snoda attraverso il bordo destro, a sinistra del campo di gioco, e poi di nuovo indietro. Questa volta stiamo contando il secondo N, spingendo più copie di "One more" sulla pila (di nuovo al contrario). E ancora, ogni copia aggiuntiva è separata da quella precedente con un preventivo.
*Una volta completato il secondo ciclo, l'intera frase è ora in pila (al contrario), quindi dobbiamo semplicemente scriverla.


Un buon uso di arrivare a spingere a ". Grazie per la spiegazione
MildlyMilquetoast,

6

05AB1E , 30 29 byte

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

Provalo online!

Diversi tipi di stringa non sembrano mescolarsi bene, quindi per qualche motivo ho bisogno di terminare il ciclo due volte.


6

C ++, 118 + 16 = 134 byte

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

sostituisce "LUL" all'intera stringa N volte.

Qualcuno ha golf migliori?

Provalo online!

Grazie infinite a Kritixi Lithos e hvd , per l'aiuto enorme .


@Kritixi Ora ha uno snippet.
Matthew Roh,

Questo è più breve. E penso che potrebbe essere necessario includere la <string>dichiarazione di importazione nel Bytecount, non sono sicuro
Kritixi Lithos,

Inoltre puoi cambiare for(int i=0;i<x;i++)infor(int i=0;i++<x;)
Kritixi Lithos il

Inoltre, r.find("L")è più breve di r.find("LOL")2 byte :)
Kritixi Lithos,

Versione ricorsiva: provala online! Inoltre è possibile utilizzare l'intestazione e il piè di pagina su TIO per ulteriori informazioni e quindi contare solo il codice nel conteggio dei byte.
nmjcman101,

5

Javascript (ES6), 68 byte

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

Chiama come f(n).

Puoi anche chiamarlo come f(n, "LUL")e sostituire LUL con qualsiasi parola tu desideri.


Dal momento che la domanda richiede solo "LUL", probabilmente potresti eliminare la flessibilità di modificare il testo e scartare alcuni byte. Bella soluzione comunque, +1
Farhan Anam il

2
@FarhanAnam Ho pensato che questo fosse un buon post di partenza che avrei poi modificato, ma dopo aver pubblicato ho visto che qualcuno aveva pubblicato una risposta migliore e non importava quanto faticassi a giocare a golf, finivo sempre per rispondere. Quindi ho pensato che avrei dovuto lasciarlo qui con la flessibilità in modo che qualcuno si divertisse un po '.

5

V , 39 37 byte

Due byte con l'aiuto di @KritixiLithos per aver escogitato il metodo di sostituzione

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

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

È LUL e non LOL;)
geisterfurz007,

4

Java, 79 77 byte

golfed:

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

Ungolfed, con 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";
  }    
}

Uscita del programma:

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

È possibile modificare entrambi "\""in '"'(caratteri singoli) per salvare 2 byte.
Kevin Cruijssen,

1
@KevinCruijssen grazie, sapevo che c'era qualcosa che mi mancava.

3

Python, 79 byte

Volevo solo fare una soluzione ricorsiva, anche se è più lunga di altre risposte.

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]

Provalo online


3

C #, 125 byte

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

Mi chiedo se puoi usare l'interpolazione di stringhe invece di Format...
Bob

Passare stringa varper salvare due byte.
devRicher

@devRicher Non posso perché sto dichiarando 2 variabili
TheLethalCoder

@Bob Lo sto già usando, non sono sicuro di poterlo usare altrove
TheLethalCoder

Spiacenti, non ho notato, scusa.
Bob,

3

C, 140 111 byte

Il mio primo tentativo di una domanda sul golf.

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

Mi sono reso conto che è l'output sbagliato poiché q (0) dà solo LUL. Il prossimo tentativo:

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

Programma di esempio (testato con GCC su 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;
}

Fornisce output

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 byte

Grazie a Martin Ender per aver salvato 1 byte difficile da trovare!

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

Funzione senza nome che accetta un argomento intero non negativo e restituisce una stringa. Nestapplica ripetutamente una funzione a un argomento iniziale; in questo caso, la funzione è di circondare il suo argomento con le parole e le virgolette appropriate. Partiamo da "LUL"e ripetiamo i N+1tempi; ciò si traduce in virgolette indesiderate che racchiudono l'intera frase, ma [[2]]mantiene solo le cose tra di loro. Alla fine ""<>trasforma l'elenco risultante fortemente nidificato in una singola stringa.

Presentazione precedente:

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

1
Riesce a radere via un byte a partire da LUL:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
Martin Ender,

Aha! [[2]]! Ecco come aggirare quelle prime citazioni indesiderate: D
Greg Martin

3

C #, 119 85 71 byte

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

14 byte salvati grazie a @Luc


Sembra che funzioni (tramite LINQPad). Bello. Le stringhe interped nidificate sembrano un po 'incerte, ma sembra che soffoca prima sul ternario.
Bob,

@Bob il problema che sto provando a farlo funzionare è a causa delle virgolette, o almeno è quello che penso lo stia causando, quindi non riesco a rimuovere il primo string.Formate
annidarli

Che ne dici di $ "Un altro {(n <1?" LUL ": $" \ "{m (- n)} \" ")} e sono fuori"
Luc

@Luc ci hai provato? Perché sono sicuro di aver fatto qualcosa di simile e non ha funzionato. Sul mio telefono in questo momento, quindi non posso provare
TheLethalCoder

Puoi in ogni caso sostituire la stringa. Formatta con + per ottenere 73 caratteri:
Chris F Carroll


2

R, 97 byte

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 byte

"Un'altra funzione ricorsiva e io sono fuori"

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

Modifica: risulta che un approccio non ricorsivo è leggermente più breve:

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 67 byte

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

Provalo online!


"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')rasata 5 utilizzando un assetto () al posto di un join per saltare alla fine "'s
colsw

@ConnorLSW nice! buona telefonata, grazie
geniale

1

Lua, 101 byte

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

Evidente tentativo di stringa. Ripete "One moree and I'm out"inserisci esattamente + 1 volte, con una LULpausa, quindi rimuove la prima e l'ultima citazione.


1

Haskell, 51 byte

Indici da 1.

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

7
Questo sembra stampare erroneamente le LULvirgolette.
Zgarb

Facile da fare indice da 0 utilizzando f -1="LUL", ma non vedo come rimuovere le virgolette extra senza un sacco di nuovi simboli.
Wolfram,

1

Rubino, 70 byte

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

Effettua semplicemente il ciclo per la quantità che viene fornita, circondando ogni volta l'ultima stringa tramite una stringa di formato.

L'indice inizia da uno.


1

Impilato, 54 byte

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

Provalo qui!Esempio di utilizzo di "funzione":

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

Uno per 56 byte:

@n'One more LUL and I''m out':@o['LUL' '"'o'"'+ +repl]n*

1

Python 3, 68 byte

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


Questo dà un output errato. Intendevi *ainvece di *5?
mbomb007,

Sì, grazie, non mi ero reso conto di averlo messo
sonrad10

1

CJam, 51 49 byte

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

Provalo online

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

È possibile utilizzare Winvece di -1 per salvare un byte
Business Cat

1
Ecco alcuni altri trucchi per accorciare ulteriormente questo aspetto : tio.run/nexus/cjam#@6/… ... Ho iniziato cercando di evitare il \"con una singola stringa e aggiungendo "entrambe le estremità `. Quindi ho dovuto dividere la stringa che non potevo fare con una lunghezza e /, poiché la prima parte è più corta. Quindi ho usato un linefeed come separatore e l'ho fatto N/. Dato che ora abbiamo entrambe le parti in un elenco, possiamo facilmente ripeterle entrambe contemporaneamente f*. E il LULviene inserito alla fine con un semplice join ( *).
Martin Ender,

È fantastico, ma sembra più una soluzione completamente diversa che accorciare ulteriormente :) Questo è il mio primo programma su CJam, quindi non conoscevo questi trucchi, grazie. Devo aggiungere questa soluzione alla risposta?
Wolfram,

@Wolfram Dipende da te. Sono felice che tu lo usi (altrimenti non avrei commentato;)).
Martin Ender,

@Wolfram un bel primo sforzo!
Ne trarrai

1

Groovy, 54 byte

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

Abbastanza semplice, uguale alla risposta di Python ma più corta di 2 byte. Inoltre è 1-indicizzato.

Provalo online!


1

Mathematica, 65 63 byte

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

Due byte di sconto notando la sfida consente l'indicizzazione 1.


1

PHP

Ciao, ho trovato finora due modi per farlo.

Il modo di sostituzione 1-indicizzato (121 byte) .

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

Il modo ricorsivo (86 byte) .

function r($n){$v=($n==0)?'LUL':'"'.r($n-1).'"';return'One more '.$v.' and i\'m out';}

In php, i programmi sono quasi sempre più brevi delle funzioni.
Tito

1

C ++, 80 + 16 = 96 byte

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

Si chiama ricorsivamente e utilizza l'aggiunta di stringhe. Abbastanza diretto. Voglio dire cos'altro posso dire? Anche la versione non golfata è essenzialmente una fodera.

Provalo online!


1

Cheddar , 71 byte

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

Provalo online!


Forse prova la ricorsione con la _ f ->sintassi che può salvare alcuni byte
Downgoat

Uhh, non ho molta familiarità con il funzionamento di quella sintassi, e non riesco a trovarla né a nessun esempio nei documenti.
Pavel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.