Una LUL más y estoy fuera

57

Descripción del desafío

En algunos canales en un sitio de transmisión popular twitch.tv, un mensaje común que las personas tienden a enviar spam en los chats para atraer a la gente a enviar spam "LUL" es

One more LUL and I'm out

LUL es un emote popular usado para expresar que algo gracioso sucedió en la transmisión.

Pronto, los memes húmedos mostraron su potencial y se produjo una parodia de la copia-pasta:

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

Cuál es el mismo mensaje anidado en sí mismo. Dado un número entero no negativo N, genera los Ntiempos anidados de pasta LUL en sí mismo siguiendo el patrón a continuación.

Se aplican las reglas estándar de , gana el código más corto en bytes.

Entrada / salida de muestra

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

Notas

  • Se permiten nuevas líneas iniciales / finales
  • La capitalización debe ser preservada
  • Su código puede ser un programa completo o una función
  • En lugar de imprimir, puede devolver una cadena o su equivalente en el idioma que elija
  • Puede indexar desde en 1lugar de0
shooqie
fuente
66
¿Puedo agregar "al principio y al final también?
Rod
8
@ Rod: No, no puedes.
shooqie
27
El título de este desafío es muy incómodo para los hablantes de holandés ...
55
@Pakk Pero es verdad. Veo un LUL, y me voy de aquí ...
steenbergh
77
Esto se puede extender a YOLO:, You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOOetc.
DJMcMayhem

Respuestas:

24

Python 2 , 56 bytes

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

Pruébalo en línea!
Está indexado 1

varilla
fuente
3
Supongo que [1:-1]al final recorta las comillas dobles al principio y al final.
Nzall
@Nzall Precisamente
Rod
Para x = 0 esto da 'U', pero debería dar "Un LUL más y estoy fuera".
Wolfram
3
@Wolfram Está indexado en 1, agregó esta información a la respuesta
Rod
18

JavaScript, 57 56 54 52 bytes

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

Fragmento de prueba:

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>

Por alguna razón, el fragmento de snack tiene errores cuando la entrada es 0, pero esto funciona de otra manera. Llámalo como f(4).

Explicación

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
fuente
En primer lugar inputes un atributo HTML no válido, podría querer eliminarlo. En segundo lugar, es porque toma la entrada como una cadena, no como un número. Entonces "0"es verdad mientras 0es falso. La forma más fácil de manejar eso es poner un +frente this.valuecuando lo pasas.
Patrick Roberts el
@PatrickRoberts Gracias, no sé por qué tengo un inputcampo extra :)
Kritixi Lithos
Bien, probablemente lo hubiera intentado usar .replace.
ETHproductions
La pila se desborda cuando el número es negativo.
programador
@ programmer500 El número de entrada no es negativo, por lo que no es un problema
Kritixi Lithos
11

Befunge, 91 bytes

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

Pruébalo en línea!

Este es un desglose del código fuente con las diversas partes componentes resaltadas.

Código fuente con rutas de ejecución resaltadas

* *Comenzamos leyendo la cuenta de repetición N y almacenando dos duplicados en la memoria.
* *Luego hacemos la cuenta regresiva de la primera N , empujando varias copias de "y estoy fuera" en la pila en reversa. Cada copia adicional se separa de la anterior con una cotización. La cita se genera con la secuencia 90g(básicamente leyendo una copia de la primera línea de la fuente), ya que esa es la forma más corta de hacerlo.
* *Una vez que se completa este primer bucle, empujamos "LUL" en la pila (técnicamente esto es a la inversa, pero obviamente no hace ninguna diferencia cuando se trata de un palíndromo).
* *Luego tenemos otro bucle, envolviendo el borde derecho, a la izquierda del campo de juego, y luego nuevamente. Esta vez estamos contando la segunda N, empujando varias copias de "One more" en la pila (nuevamente al revés). Y nuevamente, cada copia adicional se separa de la anterior con una cita.
* *Una vez que se completa el segundo ciclo, la frase completa está ahora en la pila (en reversa), por lo que simplemente necesitamos escribirla.

James Holderness
fuente
Buen uso de llegar a empujar a ". Gracias por la explicación
MildlyMilquetoast
6

05AB1E , 30 29 bytes

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

Pruébalo en línea!

Parece que diferentes tipos de cadenas no se mezclan bien, por lo que, por alguna razón, necesito finalizar el ciclo dos veces.

Emigna
fuente
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

reemplaza "LUL" a toda la cadena N veces.

¿Alguien tiene mejores campos de golf?

Pruébalo en línea!

Enormes gracias a Kritixi Lithos y hvd , por, eh, ayuda masiva.

Matthew Roh
fuente
@ Kritixi Ahora tiene un fragmento.
Matthew Roh el
Esto es mas corto. Y creo que es posible que deba incluir la <string>declaración de importación en el bytecount, no estoy seguro
Kritixi Lithos
También puede cambiar el for(int i=0;i<x;i++)afor(int i=0;i++<x;)
Kritixi Lithos
Además, r.find("L")es más corto que r.find("LOL")2 bytes :)
Kritixi Lithos
Versión recursiva: ¡ Pruébelo en línea! También puede usar el encabezado y el pie de página en TIO para cosas adicionales, y luego solo contar su código en el recuento de bytes.
nmjcman101
5

Javascript (ES6), 68 bytes

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

Llama como f(n).

También puede llamarlo como f(n, "LUL")y reemplazar LUL con cualquier palabra que desee.


fuente
Dado que la pregunta solo pide "LUL", probablemente podría eliminar la flexibilidad de cambiar el texto y eliminar algunos bytes. Buena solución de todos modos, +1
Farhan Anam
2
@FarhanAnam Pensé que esta era una buena publicación inicial que luego editaría, pero después de publicar, vi que alguien había publicado una mejor respuesta y no importaba cuánto intentara jugar al golf, siempre terminaba con su respuesta. Así que pensé que debería dejarlo aquí con la flexibilidad para que alguien se divierta.
5

V , 39 37 bytes

Dos bytes con la ayuda de @KritixiLithos para encontrar el método de sustitución

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

Pruébalo en línea!

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
fuente
Es LUL y no LOL;)
geisterfurz007
4

Java, 79 77 bytes

Golfizado:

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

Sin golf, con prueba:

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

Salida del programa:

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

fuente
Puede cambiar ambos "\""a '"'(caracteres únicos) para guardar 2 bytes.
Kevin Cruijssen
1
@KevinCruijssen gracias, sabía que había algo que extrañaba.
3

Python, 79 bytes

Solo quería hacer una solución recursiva, aunque sea más larga que otras respuestas.

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]

Pruébalo en línea

mbomb007
fuente
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
fuente
Me pregunto si puede usar la interpolación de cadenas en lugar de Format...
Bob
Cambie stringa varpara guardar dos bytes.
devRicher
@devRicher No puedo porque estoy declarando 2 variables
TheLethalCoder
@Bob Ya lo estoy usando, no estoy seguro si puedo usarlo en otro lugar
TheLethalCoder
Vaya, no me di cuenta, lo siento.
Bob
3

C, 140 111 bytes

Mi primer intento de una pregunta de golf. 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;}

Me he dado cuenta de que la salida es incorrecta ya que q (0) solo da LUL. El siguiente intento:

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

Programa de ejemplo (probado con GCC en 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;
}

Da salida

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
fuente
3

Mathematica, 69 68 bytes

¡Gracias a Martin Ender por guardar 1 byte difícil de encontrar!

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

Función sin nombre que toma un argumento entero no negativo y devuelve una cadena. Nestaplica una función repetidamente a un argumento inicial; en este caso, la función es rodear su argumento con las palabras y comillas apropiadas. Comenzamos "LUL"e iteramos N+1veces; eso da como resultado comillas no deseadas que encierran la frase completa, pero [[2]]mantiene solo el contenido entre ellas. Al final, ""<>convierte la lista anidada resultante en una sola cadena.

Presentación previa:

""<>Nest[{o,q="\"",#,q,a}&,{o="One more ","LUL",a=" and I'm out"},#]&
Greg Martin
fuente
1
Se las arregló para eliminar un byte a partir de LUL:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
Martin Ender
¡Ajá! [[2]]! Así es como evitar esas primeras citas no deseadas: D
Greg Martin
3

C #, 119 85 71 bytes

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

Guardado 14 bytes gracias a @Luc

TheLethalCoder
fuente
Parece que funciona (a través de LINQPad). Agradable. Las cuerdas intercaladas anidadas suenan un poco dudosas, pero parece que primero se ahoga en el ternario.
Bob
@Bob, el problema que estoy tratando de hacer que funcione es debido a las citas, o al menos eso es lo que creo que lo está causando, así que parece que no puedo eliminar la primera string.Formaty
anidarlas
¿Qué tal $ "One more {(n <1?" LUL ": $" \ "{m (- n)} \" ")} y estoy fuera"
Luc
@Luc, ¿intentaste eso? Porque estoy seguro de que hice algo similar y no funcionó. En mi teléfono ahora mismo, así que no puedo probarlo
TheLethalCoder
En cualquier caso, puede reemplazar la cadena. Formatee con + para obtener 73 caracteres:
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)}

Sin golf:

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
fuente
2

R, 100 97 92 bytes

"Una función recursiva más y estoy fuera"

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

Editar: Resulta que un enfoque no recursivo es ligeramente más corto:

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

PowerShell , 72 67 bytes

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

Pruébalo en línea!

briantista
fuente
"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')5 afeitado mediante el uso de un recorte () en lugar de una unión para saltar al final "'s
colsw
@ConnorLSW agradable! buena llamada, gracias
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)))

Obvio intento de cuerda. Repite "One moree ingresa and I'm out"exactamente + 1 veces, con un LULintermedio, luego elimina la primera y la última cita.

devRicher
fuente
1

Haskell, 51 bytes

Índices de 1.

f 0="LUL";f n="One more \""++f(n-1)++"\" and I'm out"
gntskn
fuente
77
Esto parece imprimir incorrectamente LULentre comillas.
Zgarb
Es fácil hacer un índice desde 0 usando f -1="LUL", pero no veo cómo eliminar comillas adicionales sin un montón de símbolos nuevos.
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

Simplemente recorra la cantidad que se le da, rodeando la última cadena a través de una cadena de formato cada vez.

El índice comienza en uno.

NO_BOOT_DEVICE
fuente
1

Apilado, 54 bytes

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

Pruébalo aquí! Ejemplo de uso de "función":

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

Uno para 56 bytes:

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

Python 3, 68 bytes

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

sonrad10
fuente
Esto da una salida incorrecta. ¿Quiso decir en *alugar de *5?
mbomb007
Sí, lo hice, gracias, no me había dado cuenta de que lo había puesto
sonrad10
1

CJam, 51 49 bytes

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

Pruébalo en línea

Sin golf:

" 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
fuente
Puede usar en Wlugar de -1 para guardar un byte
Business Cat
1
Aquí hay otros trucos para acortar esto aún más: tio.run/nexus/cjam#@6/… ... Comencé tratando de evitar el \"tener una sola cadena y agregando el "a ambos extremos con `. Luego necesitaba dividir la cadena que no podía hacer con una longitud y /, porque la primera parte es más corta. Así que usé un salto de línea como separador y lo hice N/. Como ahora tenemos ambas partes en una lista, podemos repetirlas fácilmente a la vez con f*. Y LULse inserta al final con una combinación simple ( *).
Martin Ender
Eso es genial, pero parece más una solución completamente diferente que acortar esto aún más :) Ese es mi primer programa en CJam, así que no conocía estos trucos, gracias. ¿Debo agregar esta solución a la respuesta?
Wolfram
@Wolfram Depende de usted. Estoy feliz de que lo uses (de lo contrario no habría comentado;)).
Martin Ender
@Wolfram un buen primer esfuerzo! Probablemente se beneficiará mucho al leer la respuesta de Martin
A Simmons el
1

Groovy, 54 bytes

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

Bastante sencillo, igual que la respuesta de Python pero 2 bytes más corto. También está indexado en 1.

Pruébalo en línea!

Gurupad Mamadapur
fuente
1

Mathematica, 65 63 Bytes

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

Dos bytes desactivados al notar el desafío permiten la indexación 1.

Un simmons
fuente
1

PHP

Hola, encontré hasta ahora dos formas de hacer esto.

La forma de reemplazo 1 indexado (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;}

La forma recursiva (86 bytes) .

function r($n){$v=($n==0)?'LUL':'"'.r($n-1).'"';return'One more '.$v.' and i\'m out';}
Antoine B.
fuente
En php, los programas son casi siempre más cortos que las funciones.
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

Sin golf:

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

Se llama recursivamente y usa la suma de cadenas. Muy claro. Quiero decir, ¿qué más puedo decir? Incluso la versión sin golf es esencialmente un trazador de líneas.

Pruébalo en línea!

BrainStone
fuente
1

Cheddar , 71 bytes

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

Pruébalo en línea!

Pavel
fuente
Tal vez intente la recursividad con _ f ->sintaxis que puede ahorrar algunos bytes
Downgoat
Uhh, no estoy realmente familiarizado con cómo funciona esa sintaxis, y no puedo encontrarla ni ningún ejemplo en los documentos.
Pavel