Thêm một LUL và tôi ra ngoài


57

Mô tả thử thách

Trên một số kênh trên một trang web phát trực tuyến phổ biến twitch.tv, một thông điệp phổ biến mà mọi người có xu hướng spam trong các cuộc trò chuyện để dụ mọi người vào spam "LUL" là

One more LUL and I'm out

LUL là một emote phổ biến được sử dụng để thể hiện rằng một cái gì đó buồn cười đã xảy ra trên luồng.

Ngay sau đó các meme đã cho thấy tiềm năng của họ và một sự nhại lại của bản sao được tiếp theo:

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

Đó là cùng một thông điệp lồng trong chính nó. Cho một số nguyên không âm N, xuất ra Nthời gian lồng LUL-pasta theo mẫu bên dưới.

Quy tắc tiêu chuẩn được áp dụng, mã ngắn nhất tính theo byte sẽ thắng.

Đầu vào / đầu ra mẫu

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

Ghi chú

  • Dòng mới hàng đầu / dấu được cho phép
  • Viết hoa phải được bảo tồn
  • Mã của bạn có thể là một chương trình đầy đủ hoặc một chức năng
  • Thay vì in, bạn có thể trả về một chuỗi hoặc tương đương với chuỗi trong ngôn ngữ bạn chọn
  • Bạn có thể lập chỉ mục từ 1thay vì0

6
Tôi có thể thêm "vào đầu và cuối không?
Rod

8
@Rod: Không, bạn không thể.
shooqie

27
Tiêu đề của thử thách này rất khó xử đối với những người nói tiếng Hà Lan ...
PA71

5
@Pakk Nhưng đó là sự thật. Tôi thấy một LUL, và tôi ra khỏi đây ...
steenbergh

7
Điều này có thể được mở rộng sang YOLO : You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOO, v.v.
DJMcMayhem

Câu trả lời:


24

Python 2 , 56 byte

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

Hãy thử trực tuyến!
Nó là 1 chỉ mục


3
Tôi giả sử [1:-1]ở cuối cắt bỏ dấu ngoặc kép ở đầu và cuối?
Nzall

@Nzall Chính xác
Rod

Với x = 0, điều này mang lại 'U', nhưng sẽ cung cấp "Thêm một LUL và tôi ra ngoài".
Wolfram

3
@Wolfram Nó được lập chỉ mục 1, thêm thông tin này vào câu trả lời
Rod

18

JavaScript, 57 56 54 52 byte

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

Đoạn kiểm tra:

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>

Vì một số lý do, đoạn trích đồ ăn vặt bị lỗi khi đầu vào là 0, nhưng điều này hoạt động khác. Gọi nó như thế nào f(4).

Giải trình

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"

Trước hết inputlà một thuộc tính HTML không hợp lệ, có thể muốn xóa nó. Thứ hai, đó là vì nó lấy đầu vào là một chuỗi chứ không phải là một số. Như vậy "0"là sự thật trong khi 0là giả. Cách dễ nhất để xử lý đó là đặt +phía trước this.valuekhi bạn đi qua nó.
Patrick Roberts

@PatrickRoberts Cảm ơn, tôi không biết tại sao tôi có thêm một inputlĩnh vực :)
Kritixi Lithos

Thật tuyệt, có lẽ tôi đã thử sử dụng .replace.
Sản phẩm ETH

Chồng tràn khi số âm.
lập trình

@ lập trình
viên500

11

Befunge, 91 byte

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

Hãy thử trực tuyến!

Đây là một sự cố của mã nguồn với các phần thành phần khác nhau được tô sáng.

Mã nguồn với các đường dẫn thực thi được tô sáng

*Chúng tôi bắt đầu bằng cách đọc số N lặp lại và lưu trữ hai bản sao của nó trong bộ nhớ.
*Sau đó, chúng tôi đếm ngược N đầu tiên , đẩy nhiều bản sao "và tôi ra" vào ngăn xếp ngược lại. Mỗi bản sao bổ sung được tách ra từ bản trước với một trích dẫn. Trích dẫn được tạo ra với trình tự 90g(về cơ bản là đọc một bản sao từ dòng đầu tiên của nguồn), vì đó là cách ngắn nhất để làm điều đó.
*Khi vòng lặp đầu tiên này hoàn tất, chúng tôi sẽ đẩy "LUL" lên ngăn xếp (về mặt kỹ thuật thì điều này ngược lại, nhưng rõ ràng nó không có gì khác biệt khi nó là một bảng màu).
*Sau đó, chúng tôi có một vòng lặp khác, băng qua biên giới bên phải, qua bên trái của sân chơi, và sau đó quay lại. Lần này chúng ta đang đếm ngược đến N thứ hai, đẩy nhiều bản sao của "Một lần nữa" lên ngăn xếp (một lần nữa ngược lại). Và một lần nữa, mỗi bản sao bổ sung được tách ra từ bản trước với một trích dẫn.
*Khi vòng lặp thứ hai hoàn tất, toàn bộ cụm từ hiện nằm trên ngăn xếp (ngược lại), vì vậy chúng ta chỉ cần viết nó ra.


Sử dụng tốt để có được đẩy a ". Cảm ơn lời giải thích
MildlyMilquetoast

6

05AB1E , 30 29 byte

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

Hãy thử trực tuyến!

Các kiểu chuỗi khác nhau dường như không trộn lẫn với nhau, vì vậy, vì một số lý do, tôi cần kết thúc vòng lặp hai lần.


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

thay thế "LUL" cho toàn bộ chuỗi N lần.

Bất cứ ai cũng có golf tốt hơn?

Hãy thử trực tuyến!

Cảm ơn rất nhiều đến Kritixi Lithoshvd , vì, uh, giúp đỡ rất nhiều.


@Kritixi Bây giờ nó có một đoạn.
Matthew Roh

Cái này ngắn hơn Và tôi nghĩ rằng bạn có thể cần phải đưa <string>câu lệnh nhập khẩu vào bytecount, không chắc chắn
Kritixi Lithos

Ngoài ra, bạn có thể thay đổi for(int i=0;i<x;i++)thànhfor(int i=0;i++<x;)
Kritixi Lithos

Ngoài ra, r.find("L")ngắn hơn r.find("LOL")2 byte :)
Kritixi Lithos

Phiên bản đệ quy: Hãy thử trực tuyến! Ngoài ra, bạn có thể sử dụng đầu trang và chân trang trên TIO cho các công cụ bổ sung và sau đó chỉ đếm mã của bạn trong số 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)

Gọi như thế f(n).

Bạn cũng có thể gọi nó như thế f(n, "LUL")và thay thế LUL bằng bất kỳ từ nào bạn muốn.


Vì câu hỏi chỉ yêu cầu "LUL", nên bạn có thể loại bỏ tính linh hoạt của việc thay đổi văn bản và chơi một số byte. Dù sao thì, giải pháp tuyệt vời, +1
Farhan Anam

2
@FarhanAnam Tôi nghĩ rằng đây là một bài viết khởi đầu tốt mà sau đó tôi sẽ chỉnh sửa, nhưng sau khi tôi đăng bài tôi thấy ai đó đã đăng một câu trả lời tốt hơn và cho dù tôi có cố gắng chơi golf đến đâu thì tôi vẫn luôn kết thúc câu trả lời của họ. Vì vậy, tôi nghĩ rằng tôi nên để nó ở đây với sự linh hoạt để ai đó có một số niềm vui với nó.

5

V , 39 37 byte

Hai byte với sự trợ giúp của @KritixiLithos để đưa ra phương thức thay thế

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

Hãy thử trực tuyến!

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

Đó là LUL chứ không phải LOL;)
geisterfurz007

4

Java, 79 77 byte

Chơi gôn

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

Ungolfed, với bài kiểm tra:

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

Đầu ra chương trình:

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

Bạn có thể thay đổi cả "\""đến '"'(ký tự đơn) để tiết kiệm 2 byte.
Kevin Cruijssen

1
@KevinCruijssen cảm ơn, tôi biết có một cái gì đó tôi đã bỏ lỡ.

3

Python, 79 byte

Tôi chỉ muốn làm một giải pháp đệ quy, mặc dù nó dài hơn các câu trả lời khác.

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]

Dùng thử trực tuyến


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

Tôi tự hỏi nếu bạn có thể sử dụng phép nội suy chuỗi thay vì Format...
Bob

Thay đổi stringđể varlưu hai byte.
devR Rich

@devR Rich Không thể vì tôi khai báo 2 biến
TheLethalCoder

@Bob Tôi đã sử dụng nó, không chắc tôi có thể sử dụng nó ở nơi khác không
TheLethalCoder

Rất tiếc, tôi đã không thông báo, xin lỗi.
Bob

3

C, 140 111 byte

Nỗ lực đầu tiên của tôi tại một câu hỏi chơi gôn .. 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;}

Tôi đã nhận ra là đầu ra sai vì q (0) chỉ cho LUL. Nỗ lực tiếp theo:

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

Chương trình ví dụ (được thử nghiệm với GCC trên 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;
}

Cung cấp đầu ra

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

Toán học, 69 68 byte

Cảm ơn Martin Ender đã lưu 1 byte khó tìm!

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

Hàm không tên lấy một đối số nguyên không âm và trả về một chuỗi. Nestáp dụng một hàm nhiều lần cho một đối số ban đầu; trong trường hợp này, hàm là bao quanh đối số của nó bằng các từ và dấu ngoặc kép thích hợp. Chúng tôi bắt đầu từ "LUL"và lặp đi lặp lại N+1nhiều lần; dẫn đến các dấu ngoặc kép không mong muốn kèm theo toàn bộ cụm từ, nhưng[[2]] chỉ giữ lại các nội dung giữa chúng. Cuối cùng, ""<>biến danh sách lồng nhau kết quả thành một chuỗi duy nhất.

Trình trước:

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

1
Quản lý để tắt một byte bằng cách bắt đầu từ LUL:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
Martin Ender

Aha! [[2]]! Đó là cách để vượt qua những trích dẫn không mong muốn đầu tiên: D
Greg Martin

3

C #, 119 85 71 byte

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

Đã lưu 14 byte nhờ @Luc


Có vẻ như nó hoạt động (thông qua LINQPad). Đẹp. Các chuỗi xen kẽ lồng nhau nghe có vẻ hơi iffy, nhưng có vẻ như nó bị bóp nghẹt đầu tiên.
Bob

@ Hãy giải quyết vấn đề tôi đang cố gắng làm cho nó hoạt động là do các trích dẫn hoặc ít nhất đó là những gì tôi nghĩ là gây ra nó nên tôi dường như không thể xóa cái đầu tiên string.Formatvà lồng chúng
TheLethalCoder

Làm thế nào về $ "Thêm một {(n <1?" LUL ": $" \ "{m (- n)} \" ")} và tôi ra ngoài"
Luc

@Luc bạn đã thử chưa? Vì tôi chắc chắn tôi đã làm một cái gì đó tương tự và nó đã không hoạt động. Trên điện thoại của tôi ngay bây giờ vì vậy không thể kiểm tra
TheLethalCoder

Trong mọi trường hợp, bạn có thể thay thế chuỗi.Format bằng + để nhận 73 ký tự:
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)}

Ung dung:

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

"Thêm một hàm đệ quy và tôi ra"

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

Chỉnh sửa: Hóa ra cách tiếp cận không đệ quy ngắn hơn một chút:

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




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

Rõ ràng cố gắng chuỗi. Lặp lại "One moreand I'm out"nhập chính xác + 1 lần, với một LULkhoảng giữa, sau đó xóa trích dẫn đầu tiên và cuối cùng.


1

Haskell, 51 byte

Chỉ số từ 1.

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

7
Điều này dường như in không chính xác LULtrong dấu ngoặc kép.
Zgarb

Dễ dàng tạo chỉ mục từ 0 bằng cách sử dụng f -1="LUL", nhưng tôi không thấy cách xóa dấu ngoặc kép mà không có một loạt các biểu tượng mới.
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

Chỉ đơn giản là các vòng lặp cho số tiền được đưa ra, bao quanh chuỗi cuối cùng thông qua chuỗi định dạng mỗi lần.

Chỉ số bắt đầu từ một.


1

Xếp chồng lên nhau, 54 byte

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

Hãy thử nó ở đây! Ví dụ sử dụng "hàm":

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

Một cho 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]


Điều này cho đầu ra không chính xác. Ý bạn là *athay vì *5?
mbomb007

Có, tôi đã làm, cảm ơn, tôi đã không nhận ra rằng tôi đã đặt nó
sonrad10

1

CJam, 51 49 byte

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

Dùng thử trực tuyến

Ung dung:

" 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

Bạn có thể sử dụng Wthay vì -1 để lưu một byte
Business Cat

1
Dưới đây là một số thủ thuật khác để rút ngắn điều này hơn nữa: tio.run/nexus/cjam#@6/ mẹo ... Tôi đã bắt đầu bằng cách cố gắng tránh \"bằng cách có một chuỗi duy nhất và thêm "vào cả hai đầu bằng `. Sau đó, tôi cần phải tách chuỗi mà tôi không thể làm với độ dài và /, vì phần đầu tiên ngắn hơn. Vì vậy, tôi đã sử dụng một linefeed như một dấu phân cách và đã làm N/. Vì hiện tại chúng tôi có cả hai phần trong danh sách, chúng tôi có thể dễ dàng lặp lại cả hai phần cùng một lúc f*. VàLUL được chèn vào cuối với một phép nối ( *) đơn giản .
Martin Ender

Điều đó thật tuyệt, nhưng có vẻ giống như giải pháp hoàn toàn khác hơn là rút ngắn hơn nữa :) Đó là chương trình đầu tiên của tôi trên CJam, vì vậy tôi không biết những thủ thuật này, cảm ơn. Tôi có nên thêm giải pháp này vào câu trả lời?
Wolfram

@Wolfram Tùy bạn. Tôi rất vui khi bạn sử dụng nó (nếu không tôi sẽ không nhận xét;)).
Martin Ender

@Wolfram một nỗ lực đầu tiên tốt đẹp! Bạn có thể sẽ được hưởng lợi rất nhiều bằng cách xem qua câu trả lời của Martin
Một Simmons


1

Toán học, 65 63 byte

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

Hai byte tắt bằng cách nhận thấy thách thức cho phép lập chỉ mục 1.


1

PHP

Xin chào, tôi đã tìm thấy hai cách để làm điều này.

Cách thay thế 1 chỉ mục (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;}

Cách đệ quy (86 byte) .

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

Trong php, các chương trình hầu như luôn luôn ngắn hơn các hàm.
Tít

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

Ung dung:

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

Gọi chính nó đệ quy và sử dụng chuỗi bổ sung. Khá thẳng về phía trước. Ý tôi là tôi có thể nói gì khác? Ngay cả phiên bản không có bản chất là một lót.

Hãy thử trực tuyến!


1

Cheddar , 71 byte

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

Hãy thử trực tuyến!


Có thể thử đệ quy với _ f ->cú pháp có thể lưu một số byte
Downgoat

Uhh, tôi không thực sự quen thuộc với cách cú pháp đó hoạt động và tôi không thể tìm thấy nó hoặc bất kỳ ví dụ nào trong các tài liệu.
Pavel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.