Un autre LUL et je suis sorti


57

Description du challenge

Sur certains canaux d’un site de diffusion en continu très répandu, twitch.tv, un message courant a tendance à provoquer des spams dans les chats pour les inciter à envoyer du spam "LUL".

One more LUL and I'm out

LUL est un émote populaire utilisé pour exprimer le fait que quelque chose de drôle est arrivé en direct.

Bientôt, les mèmes humides montrèrent leur potentiel et une parodie des copies-pâtes s’en suivit:

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

Quel est le même message imbriqué en soi. Pour un nombre entier non négatif N, les Ntemps imbriqués LUL-pasta en sortie suivent le modèle ci-dessous.

Les règles standard de s'appliquent, le code le plus court en octets l'emporte.

Échantillon entrée / sortie

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

Remarques

  • Les retours à la ligne sont autorisés
  • La capitalisation doit être préservée
  • Votre code peut être un programme complet ou une fonction
  • Au lieu d'imprimer, vous pouvez retourner une chaîne ou son équivalent dans la langue de votre choix
  • Vous pouvez indexer à partir 1de0

6
puis-je ajouter "au début et à la fin aussi?
Rod

8
@Rod: Non, vous ne pouvez pas.
shooqie

27
Le titre de ce défi est très délicat pour les néerlandophones ...

5
@ Pakk Mais c'est vrai. Je vois un LUL, et je suis hors d'ici ...
mercredi

7
Cela peut être étendu à You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOO
YOLO:,

Réponses:


24

Python 2 , 56 octets

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

Essayez-le en ligne!
Il est indexé 1


3
Je suppose que [1:-1]la fin limite les guillemets au début et à la fin?
Nzall

@Nzall Justement
Rod

Pour x = 0, cela donne "U", mais devrait donner "Un LUL de plus et je suis absent".
Wolfram

3
@Wolfram Il est indexé 1, a ajouté cette information à la réponse
Rod

18

JavaScript, 57 56 54 52 octets

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

Extrait de test:

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>

Pour une raison quelconque, l'extrait de collation est bogué lors de la saisie 0, mais cela fonctionne autrement. Appelez ça comme f(4).

Explication

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"

Tout d’abord, il inputs’agit d’un attribut HTML non valide, vous voudrez peut-être l’enlever. Deuxièmement, c’est parce qu’il prend l’entrée sous forme de chaîne, pas de nombre. Il en "0"va de même 0pour la vérité. Le moyen le plus simple de gérer cela consiste à mettre un +devant this.valuelorsque vous le passez.
Patrick Roberts

@ PatrickRoberts Merci, je ne sais pas pourquoi j'ai un inputchamp supplémentaire :)
Kritixi Lithos

Bien, j'aurais probablement essayé d'utiliser .replace.
ETHproductions

La pile déborde lorsque le nombre est négatif.
programmer5000

@ programmer500 Le numéro d'entrée est considéré comme non négatif, ce qui ne pose pas de problème
Kritixi Lithos

11

Befunge, 91 octets

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

Essayez-le en ligne!

Il s’agit d’une répartition du code source avec les différents composants en surbrillance.

Code source avec les chemins d'exécution mis en évidence

*Nous commençons par lire le nombre de répétitions N et en stockant deux copies en mémoire.
*Nous comptons ensuite le premier N , poussant plusieurs copies de "and I'm out" sur la pile en sens inverse. Chaque copie supplémentaire est séparée de la précédente par un devis. La citation est générée avec la séquence 90g(en lisant une copie de la première ligne de la source), car c’est le moyen le plus rapide de le faire.
*Une fois cette première boucle terminée, nous poussons "LUL" sur la pile (techniquement, c'est l'inverse, mais cela ne fait évidemment aucune différence lorsqu'il s'agit d'un palindrome).
*Nous avons ensuite une autre boucle, qui passe au-delà du bord droit, à gauche du champ de jeu, puis revient. Cette fois, nous comptons sur le deuxième N, en poussant plusieurs copies de "One more" sur la pile (à nouveau en sens inverse). Et encore une fois, chaque copie supplémentaire est séparée de la précédente par un devis.
*Une fois que la deuxième boucle est terminée, la phrase entière est maintenant sur la pile (en sens inverse), nous avons donc simplement besoin de l'écrire.


Belle utilisation de get to push a ". Merci pour l'explication
MildlyMilquetoast

6

05AB1E , 30 29 octets

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

Essayez-le en ligne!

Différents types de chaînes ne semblent pas bien se mélanger, donc, pour une raison quelconque, je dois terminer la boucle deux fois.


6

C ++, 118 + 16 = 134 octets

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

remplace "LUL" par toute la chaîne N fois.

Quelqu'un a de meilleurs golfs?

Essayez-le en ligne!

Merci beaucoup à Kritixi Lithos et à hvd pour leur aide massive.


@Kritixi Maintenant, il a un extrait.
Matthew Roh

C'est plus court. Et je pense que vous pourriez avoir besoin d'inclure la <string>déclaration d'importation dans le décompte, vous ne savez pas trop
Kritixi Lithos

Vous pouvez également changer le for(int i=0;i<x;i++)àfor(int i=0;i++<x;)
Kritixi Lithos

De plus, il r.find("L")est plus court que r.find("LOL")de 2 octets :)
Kritixi Lithos

Version récursive: essayez-le en ligne! Vous pouvez également utiliser l'en-tête et le pied de page sur TIO pour des tâches supplémentaires, puis ne compter que votre code dans le nombre d'octets.
nmjcman101

5

Javascript (ES6), 68 octets

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

Appelle comme f(n).

Vous pouvez également l'appeler comme f(n, "LUL")et remplacer LUL par n'importe quel mot.


Puisque la question ne demande que "LUL", vous pourriez probablement éliminer la possibilité de changer le texte et de perdre quelques octets. Belle solution quand même, +1
Farhan Anam

2
@FarhanAnam Je pensais que c'était un bon post de départ que je pourrais ensuite éditer, mais après avoir posté, j'ai vu que quelqu'un avait posté une meilleure réponse et peu importe la difficulté avec laquelle j'ai essayé de jouer au golf, je finissais toujours par leur réponse. Alors j'ai pensé que je devrais laisser ça ici avec la flexibilité pour que quelqu'un s'amuse un peu avec.

5

V , 39 37 octets

Deux octets à l’aide de @KritixiLithos pour la création de la méthode de substitution

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

Essayez-le en ligne!

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

C'est LUL et non LOL;)
geisterfurz007

4

Java, 79 77 octets

Golfé:

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

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

Sortie du programme:

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

Vous pouvez changer les deux "\""en '"'(caractère unique) pour économiser 2 octets.
Kevin Cruijssen

1
@ KevinCruijssen merci, je savais que quelque chose m'avait manqué.

3

Python, 79 octets

Je voulais juste faire une solution récursive, même si elle est plus longue que les autres réponses.

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]

Essayez-le en ligne


3

C #, 125 octets

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

Je me demande si vous pouvez utiliser l' interpolation de chaîne au lieu de Format...
Bob

Changez stringpour varenregistrer deux octets.
devRicher

@devRicher Je ne peux pas parce que je déclare 2 variables
TheLethalCoder

@Bob je l'utilise déjà, je ne suis pas sûr de pouvoir l'utiliser ailleurs
TheLethalCoder

Oups, je n'ai pas remarqué, désolé.
Bob

3

C, 140 111 octets

Ma première tentative à une question de golf .. Golfed:

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

Je me suis rendu compte que la sortie est mauvaise puisque q (0) donne simplement LUL. La prochaine tentative:

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

Exemple de programme (testé avec GCC sur 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;
}

Donne la sortie

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 octets

Merci à Martin Ender pour avoir sauvegardé 1 octet difficile à trouver!

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

Fonction sans nom prenant un argument entier non négatif et renvoyant une chaîne. Nestapplique une fonction à plusieurs reprises à un argument initial; dans ce cas, la fonction doit entourer son argument des mots et des guillemets appropriés. Nous commençons "LUL"et itérons des N+1temps; il en résulte que des guillemets indésirables englobent la phrase entière, mais [[2]]ne gardent que les éléments entre eux. À la fin, ""<>transforme la liste fortement imbriquée résultante en une seule chaîne.

Soumission précédente:

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

1
Réussi à raser un octet en partant de LUL:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
Martin Ender le

Aha! [[2]]! Voilà comment contourner ces premières citations non désirées: D
Greg Martin

3

C #, 119 85 71 octets

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

14 octets sauvés grâce à @Luc


On dirait que cela fonctionne (via LINQPad). Agréable. Les chaînes imbriquées imbriquées semblent un peu douteuses, mais il semble que cela étouffe le ternaire en premier.
Bob

@Bob le problème que j'ai à essayer de le faire fonctionner est à cause des citations, ou du moins c'est ce que je pense qui est la cause, donc je ne peux pas sembler supprimer le premier string.Formatet les imbriquer
TheLethalCoder

Que diriez-vous de $ "One more {(n <1?" LUL ": $" \ "{m (- n)} \" ")} et je suis absent"
Luc

@ Luc avez-vous essayé ça? Parce que je suis sûr d'avoir fait quelque chose de similaire et que cela n'a pas fonctionné. Sur mon téléphone en ce moment, donc je ne peux pas tester
TheLethalCoder

Vous pouvez dans tous les cas remplacer string.Format avec + pour obtenir 73 caractères:
Chris F Carroll le


2

R, 97 octets

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 octets

"Encore une fonction récursive et je suis absent"

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

Edit: Il s'avère qu'une approche non récursive est légèrement plus courte:

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 octets

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

Essayez-le en ligne!


"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')rasés 5 à l'aide d' une garniture () au lieu d'une jointure pour sauter la fin "« s
colsw

@ConnorLSW bien! bon appel, merci
briantiste

1

Lua, 101 octets

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

Tentative évidente. Répète "One moreet saisit and I'm out"exactement + 1 fois, avec un LULentre-deux, puis supprime la première et la dernière citation.


1

Haskell, 51 octets

Index de 1.

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

7
Cela semble imprimer incorrectement les LULguillemets.
Zgarb

Facile à faire index à partir de 0 en utilisant f -1="LUL", mais je ne vois pas comment supprimer des guillemets supplémentaires sans un tas de nouveaux symboles.
Wolfram

1

Ruby, 70 octets

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

Boucle simplement pour le montant donné, entourant la dernière chaîne via une chaîne de format à chaque fois.

L'index commence à un.


1

Empilé, 54 octets

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

Essayez-le ici! Exemple d'utilisation de "fonction":

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

Un pour 56 octets:

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

1

Python 3, 68 octets

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


Cela donne une sortie incorrecte. Vouliez-vous dire *aau lieu de *5?
mbomb007

Oui je l'ai fait, merci, je n'avais pas réalisé que je
mettrais

1

CJam, 51 49 octets

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

Essayez-le en ligne

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

Vous pouvez utiliser Wau lieu de -1 pour enregistrer un octet
Business Cat

1
Voici quelques autres astuces pour raccourcir ceci davantage: tio.run/nexus/cjam#@6/… ... J'ai commencé par essayer d'éviter le \"en utilisant une seule chaîne et en ajoutant le "pour les deux bouts avec `. Ensuite, j'ai eu besoin de scinder la chaîne, ce que je ne pouvais pas faire avec une longueur et /parce que la première partie est plus courte. J'ai donc utilisé un saut de ligne comme séparateur et je l'ai fait N/. Puisque nous avons maintenant les deux parties dans une liste, nous pouvons facilement les répéter en même temps avec f*. Et le LULest inséré à la fin avec un simple join ( *).
Martin Ender

C'est cool, mais cela ressemble plus à une solution complètement différente que de raccourcir ceci davantage :) C'est mon premier programme sur CJam, donc je ne connaissais pas ces astuces, merci. Devrais-je ajouter cette solution à la réponse?
Wolfram

@ Wolfram C'est à vous de voir. Je suis heureux que vous l'utilisiez (sinon je n'aurais pas commenté;)).
Martin Ender

@Wolfram un joli premier effort! Vous obtiendrez probablement beaucoup en examinant la réponse de Martin
A Simmons le

1

Groovy, 54 octets

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

Assez simple, identique à la réponse python mais 2 octets plus court. Il est également indexé 1.

Essayez-le en ligne!


1

Mathematica, 65 63 octets

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

Deux octets en remarquant que le défi permet une indexation 1.


1

PHP

Bonjour, j'ai trouvé jusqu'à présent deux façons de le faire.

Le moyen de remplacement indexé 1 (121 octets) .

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 manière récursive (86 octets) .

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

En php, les programmes sont presque toujours plus courts que les fonctions.
Titus

1

C ++, 80 + 16 = 96 octets

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

S'appelle de manière récursive et utilise l'addition de chaînes. Assez simple. Je veux dire quoi d'autre puis-je dire? Même la version non-golfée est essentiellement un one-liner.

Essayez-le en ligne!


1

Cheddar , 71 octets

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

Essayez-le en ligne!


Peut-être essayez-vous la récursion avec une _ f ->syntaxe qui vous permettra d'économiser quelques octets
Jeu le

Euh, je ne suis pas vraiment au courant de la façon dont cette syntaxe fonctionne, et je ne la trouve pas ou des exemples dans la documentation.
Pavel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.