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

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


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"

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.


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.


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.


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


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

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

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


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

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

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

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


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

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



2

PowerShell , 72 67 bytes

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

Pruébalo en línea!


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


1

Haskell, 51 bytes

Índices de 1.

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

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.


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*

1

Python 3, 68 bytes

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


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

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!


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.


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

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!


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!


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.