Satu lagi LUL dan aku keluar


57

Deskripsi tantangan

Pada beberapa saluran di situs streaming populer, kedutan.tv pesan yang umum digunakan orang cenderung melakukan spam dalam obrolan untuk memancing orang agar mengirim spam ke "LUL" adalah

One more LUL and I'm out

LUL adalah emote populer yang digunakan untuk menyatakan bahwa sesuatu yang lucu terjadi saat streaming.

Segera meme dank menunjukkan potensi mereka dan parodi dari copy-pasta terjadi:

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

Yang merupakan pesan yang sama bersarang dalam dirinya sendiri. Dengan bilangan bulat non-negatif N, hasilkan LUL-pasta Ndengan sendirinya mengikuti pola di bawah ini.

Standar aturan berlaku, kode terpendek dalam byte menang.

Contoh 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

Catatan

  • Leading / trailing newlines diperbolehkan
  • Kapitalisasi harus dipertahankan
  • Kode Anda mungkin merupakan program atau fungsi lengkap
  • Alih-alih mencetak, Anda dapat mengembalikan string atau yang setara dalam bahasa pilihan Anda
  • Anda dapat mengindeks dari 1bukan0

6
dapatkah saya menambahkan "di awal dan akhir juga?
Rod

8
@Rod: Tidak, Anda tidak bisa.
shooqie

27
Judul tantangan ini sangat aneh bagi penutur bahasa Belanda ...

5
@ Pal Tapi itu benar. Saya melihat LUL, dan saya keluar dari sini ...
steenbergh

7
Ini dapat diperpanjang ke YOLO You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOO
:,

Jawaban:


24

Python 2 , 56 byte

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

Cobalah online!
Diindeks 1


3
Saya berasumsi [1:-1]pada akhirnya memangkas tanda kutip ganda pada awal dan akhir?
Nzall

@Nall Tepatnya
Rod

Untuk x = 0 ini memberikan 'U', tetapi harus memberikan "Satu lagi LUL dan saya keluar".
Wolfram

3
@ Wolfolf Ini adalah 1-diindeks, menambahkan info ini ke jawabannya
Rod

18

JavaScript, 57 56 54 52 byte

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

Cuplikan Tes:

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>

Untuk beberapa alasan snippet camilan sedang bermasalah saat input 0, tetapi ini bekerja sebaliknya. Sebut saja seperti f(4).

Penjelasan

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"

Yang pertama inputadalah atribut HTML yang tidak valid, mungkin ingin menghapusnya. Kedua, itu karena dibutuhkan input sebagai string, bukan angka. Begitu "0"juga kebenaran sementara 0itu palsu. Cara termudah untuk mengatasinya adalah dengan meletakkan +di depan this.valueketika Anda melewatinya.
Patrick Roberts

@ PatrickRoberts Terima kasih, saya tidak tahu mengapa saya memiliki inputbidang tambahan :)
Kritixi Lithos

Bagus, saya mungkin akan mencoba menggunakan .replace.
ETHproduk

Stack overflows ketika angka negatif.
programmer5000

@ programmer500 Nomor input diberikan menjadi non-negatif sehingga tidak menjadi masalah
Kritixi Lithos

11

Befunge, 91 byte

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

Cobalah online!

Ini adalah rincian kode sumber dengan berbagai bagian komponen disorot.

Kode sumber dengan jalur eksekusi disorot

*Kita mulai dengan membaca hitungan berulang N , dan menyimpan dua duplikatnya dalam memori.
*Kami kemudian menghitung N pertama , mendorong banyak salinan "dan saya keluar" ke tumpukan secara terbalik. Setiap salinan tambahan dipisahkan dari yang sebelumnya dengan kutipan. Kutipan dihasilkan dengan urutan 90g(pada dasarnya membaca salinan dari baris pertama sumber), karena itulah cara terpendek untuk melakukannya.
*Setelah loop pertama ini selesai, kami mendorong "LUL" ke stack (secara teknis ini terbalik, tapi jelas tidak ada bedanya ketika itu adalah palindrome).
*Lalu kita memiliki loop lain, membungkus melintasi batas kanan, ke sebelah kiri playfield, dan kemudian kembali lagi. Kali ini kita menghitung N kedua, mendorong banyak salinan "Satu lagi" ke tumpukan (sekali lagi terbalik). Dan lagi, setiap salinan tambahan dipisahkan dari yang sebelumnya dengan kutipan.
*Setelah loop kedua selesai, seluruh frasa sekarang berada di tumpukan (terbalik), jadi kita hanya perlu menuliskannya.


Penggunaan yang baik untuk mendorong a ". Terima kasih atas penjelasannya
MildlyMilquetoast

6

05AB1E , 30 29 byte

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

Cobalah online!

Tipe string yang berbeda tampaknya tidak cocok dengan baik, jadi untuk beberapa alasan saya harus mengakhiri loop dua kali.


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

menggantikan "LUL" ke seluruh string N kali.

Adakah yang memiliki golf yang lebih baik?

Cobalah online!

Terima kasih banyak kepada Kritixi Lithos dan hvd , untuk, uh, bantuan besar-besaran.


@Kixii Sekarang memiliki cuplikan.
Matius Roh

Ini lebih pendek. Dan saya pikir Anda mungkin perlu memasukkan <string>pernyataan impor ke dalam bytecount, tidak yakin
Kritixi Lithos

Anda juga dapat mengubah for(int i=0;i<x;i++)kefor(int i=0;i++<x;)
Kritixi Lithos

Selain itu, r.find("L")lebih pendek dari r.find("LOL")2 byte :)
Kritixi Lithos

Versi rekursif: Cobalah online! Anda juga dapat menggunakan header dan footer pada TIO untuk hal-hal tambahan, dan kemudian hanya menghitung kode Anda dalam jumlah byte.
nmjcman101

5

Javascript (ES6), 68 Bytes

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

Sebut seperti f(n).

Anda juga dapat menyebutnya seperti f(n, "LUL")dan mengganti LUL dengan kata apa pun yang Anda inginkan.


Karena pertanyaan hanya meminta "LUL", Anda mungkin bisa menghilangkan fleksibilitas untuk mengubah teks dan mengeluarkan beberapa byte. Solusi yang bagus, +1
Farhan Anam

2
@ FarhanAnam Saya pikir ini adalah posting awal yang baik yang kemudian akan saya edit, tetapi setelah saya memposting saya melihat seseorang telah memposting jawaban yang lebih baik dan tidak peduli seberapa keras saya mencoba golf itu, saya selalu berakhir dengan jawaban mereka. Jadi saya pikir saya harus meninggalkannya di sini dengan fleksibilitas sehingga seseorang bersenang-senang dengannya.

5

V , 39 37 byte

Dua byte dengan bantuan @KritixiLithos untuk membuat metode substitusi

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

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

Ini LUL dan bukan LOL;)
geisterfurz007

4

Java, 79 77 byte

Golf:

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

Tidak disatukan, dengan tes:

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

Output program:

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

Anda dapat mengubah keduanya "\""menjadi '"'(karakter tunggal) untuk menyimpan 2 byte.
Kevin Cruijssen

1
@KevinCruijssen terima kasih, saya tahu ada sesuatu yang saya lewatkan.

3

Python, 79 byte

Saya hanya ingin melakukan solusi rekursif, meskipun lebih lama dari jawaban lain.

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]

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

Saya ingin tahu apakah Anda dapat menggunakan interpolasi string daripada Format...
Bob

Ubah stringke varuntuk menyimpan dua byte.
devRicher

@devRicher Tidak bisa karena saya mendeklarasikan 2 variabel
TheLethalCoder

@ Bob Saya sudah menggunakannya, tidak yakin apakah saya bisa menggunakannya di tempat lain
TheLethalCoder

Ups, saya tidak perhatikan, maaf.
Bob

3

C, 140 111 byte

Upaya pertama saya pada pertanyaan 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;}

Saya menyadari bahwa ini adalah output yang salah karena q (0) hanya memberikan LUL. Upaya selanjutnya:

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

Contoh program (diuji dengan GCC pada 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;
}

Memberikan hasil

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

Terima kasih kepada Martin Ender karena telah menghemat 1 byte yang sulit ditemukan!

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

Fungsi tanpa nama mengambil argumen integer nonnegatif dan mengembalikan string. Nestmenerapkan fungsi berulang kali pada argumen awal; dalam hal ini, fungsinya adalah mengelilingi argumennya dengan kata-kata dan tanda kutip yang sesuai. Kita mulai dari "LUL"dan mengulangi N+1waktu; yang menghasilkan tanda kutip yang tidak diinginkan melampirkan seluruh frase, tetapi [[2]]hanya menyimpan barang-barang di antara mereka. Pada akhirnya, ""<>mengubah daftar yang sangat bersarang menjadi string tunggal.

Pengajuan sebelumnya:

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

1
Berhasil mencukur byte dengan mulai dari LUL:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
Martin Ender

Aha! [[2]]! Begitulah cara mengatasi kutipan-kutipan pertama yang tidak diinginkan itu: D
Greg Martin

3

C #, 119 85 71 byte

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

Disimpan 14 byte berkat @Luc


Sepertinya itu berfungsi (melalui LINQPad). Bagus. String bersarang bersarang memang terdengar agak rapuh, tetapi sepertinya tersedak dulu pada ternary.
Bob

@Bob masalah saya mencoba membuatnya bekerja adalah karena tanda kutip, atau setidaknya itulah yang saya pikir menyebabkannya jadi saya tidak bisa menghapus yang pertama string.Formatdan membuat sarangnya
TheLethalCoder

Bagaimana dengan $ "Satu lagi {(n <1?" LUL ": $" \ "{m (- n)} \" ")} dan saya keluar"
Luc

@ Luc Anda coba itu? Karena saya yakin saya melakukan sesuatu yang serupa dan itu tidak berhasil. Di ponsel saya sekarang jadi tidak bisa menguji
TheLethalCoder

Anda dapat mengganti string.Format dengan + untuk mendapatkan 73 karakter:
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)}

Tidak Disatukan:

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

"Satu lagi fungsi rekursif dan aku keluar"

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

Sunting: Ternyata pendekatan non-rekursif sedikit lebih pendek:

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('"')

Cobalah online!


"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')dicukur 5 dengan menggunakan trim () bukan sebuah bergabung untuk melewatkan akhir "'s
colsw

@ConnorLSW bagus! selamat datang, terima kasih
briantis

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

Upaya string yang jelas. Ulangi "One moredan and I'm out"masukkan + 1 kali dengan tepat, dengan LULinbetween, lalu hapus kutipan pertama dan terakhir.


1

Haskell, 51 byte

Indeks dari 1.

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

7
Ini keliru untuk mencetak LULtanda kutip.
Zgarb

Mudah membuat indeks dari 0 menggunakan f -1="LUL", tapi saya tidak melihat cara menghapus tanda kutip tambahan tanpa banyak simbol baru.
Wolfram

1

Ruby, 70 byte

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

Cukup loop untuk jumlah yang diberikan, mengelilingi string terakhir melalui string format setiap kali.

Indeks dimulai pada satu.


1

Ditumpuk, 54 byte

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

Coba di sini! Contoh penggunaan "fungsi":

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

Satu untuk 56 byte:

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


Ini memberikan output yang salah. Apakah maksud Anda *aalih-alih *5?
mbomb007

Ya saya lakukan, terima kasih, saya tidak menyadari bahwa saya akan meletakkannya
sonrad10

1

CJam, 51 49 byte

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

Cobalah online

Tidak Disatukan:

" 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

Anda bisa menggunakan Wbukannya -1 untuk menghemat satu byte
Business Cat

1
Berikut adalah beberapa trik lain untuk mempersingkat ini lebih lanjut: tio.run/nexus/cjam#@6/… ... Saya mulai dengan mencoba menghindari \"dengan memiliki string tunggal dan menambahkan "kedua ujungnya dengan `. Kemudian saya perlu memisahkan string yang tidak bisa saya lakukan dengan panjang dan /, karena bagian pertama lebih pendek. Jadi saya menggunakan linefeed sebagai pemisah dan melakukannya N/. Karena kami sekarang memiliki kedua bagian dalam daftar, kami dapat dengan mudah mengulang keduanya sekaligus f*. Dan LULdimasukkan di akhir dengan gabung sederhana ( *).
Martin Ender

Itu keren, tapi sepertinya ini solusi yang sangat berbeda daripada memperpendek ini lebih jauh :) Itu program pertama saya di CJam, jadi saya tidak tahu trik ini, terima kasih. Haruskah saya menambahkan solusi ini ke jawabannya?
Wolfram

@ Wolfram Terserah Anda. Saya senang Anda menggunakannya (kalau tidak saya tidak akan berkomentar;))
Martin Ender

@ Wolfram upaya pertama yang bagus! Anda mungkin akan mendapat banyak manfaat dengan membaca jawaban Martin
A Simmons


1

Mathematica, 65 63 Bytes

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

Dua byte mati dengan memperhatikan tantangan memungkinkan pengindeksan 1.


1

PHP

Halo, sejauh ini saya menemukan dua cara untuk melakukan ini.

Cara penggantian 1-diindeks (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;}

Cara rekursif (86 byte) .

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

Dalam php, program hampir selalu lebih pendek dari fungsi.
Titus

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

Tidak Disatukan:

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

Panggilan itu sendiri secara rekursif dan menggunakan penambahan string. Cukup lurus ke depan. Maksud saya apa lagi yang bisa saya katakan? Bahkan versi ungolfed pada dasarnya adalah satu baris.

Cobalah online!


1

Cheddar , 71 byte

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

Cobalah online!


Mungkin coba rekursi dengan _ f ->sintaks yang mungkin menghemat beberapa byte
Downgoat

Uhh, saya tidak begitu akrab dengan bagaimana sintaks itu bekerja, dan saya tidak dapat menemukannya atau contoh apa pun dalam dokumen.
Pavel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.