Opis wyzwania
Na niektórych kanałach popularnego serwisu streamingowego twitch.tv powszechna wiadomość, że ludzie spamują na czacie, aby nakłonić innych do spamowania „LUL” to
One more LUL and I'm out
LUL to popularna emotka używana do wyrażenia, że w strumieniu wydarzyło się coś śmiesznego.
Wkrótce wilgotne memy pokazały swój potencjał i powstała parodia kopiowanego makaronu:
One more "One more LUL and I'm out" and I'm out
To jest ta sama wiadomość zagnieżdżona w sobie. Biorąc pod uwagę nieujemną liczbę całkowitą N
, wyprowadzaj N
czas zagnieżdżenia makaronu LUL sam w sobie zgodnie z poniższym wzorem.
Obowiązują standardowe zasady gry w golfa , wygrywa najkrótszy kod w bajtach.
Przykładowe wejście / wyjście
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
Notatki
- Wiodące / końcowe znaki nowej linii są dozwolone
- Wielkie litery muszą być zachowane
- Twój kod może być pełnym programem lub funkcją
- Zamiast drukowania możesz zwrócić ciąg znaków lub jego odpowiednik w wybranym języku
- Państwo może indeks z
1
zamiast0
"
na początku i na końcu?You Only YOLO once --> YOYOLOO. You Only YOYOLOO Once --> YOYOYOLOOO
itd.Odpowiedzi:
Python 2 , 56 bajtów
Wypróbuj online!
Jest indeksowany 1
źródło
[1:-1]
na końcu przycina podwójne cudzysłowy na początku i na końcu?JavaScript,
57565452 bajtyFragment testowy:
Z jakiegoś powodu fragment kodu przekąski jest błędny, gdy dane wejściowe są dostępne
0
, ale działa to inaczej. Nazwij to jakf(4)
.Wyjaśnienie
źródło
input
jest to nieprawidłowy atrybut HTML, który może chcieć go usunąć. Po drugie, ponieważ pobiera dane wejściowe jako ciąg, a nie liczbę. Tak"0"
jest prawdą, podczas gdy0
jest fałszem. Najłatwiejszym sposobem na poradzenie sobie z tym jest postawienie+
przed sobą,this.value
kiedy go mijasz.input
pole :).replace
.Befunge, 91 bajtów
Wypróbuj online!
Jest to podział kodu źródłowego z wyróżnieniem różnych części składowych.
Zaczynamy od odczytania liczby powtórzeń N i zapisania dwóch duplikatów w pamięci.
Następnie odliczamy pierwsze N , wypychając wiele kopii „i nie ma mnie” na stosie w odwrotnej kolejności. Każda dodatkowa kopia jest oddzielona od poprzedniej cytatem. Cytat jest generowany z sekwencją
90g
(w zasadzie odczytywanie kopii z pierwszego wiersza źródła), ponieważ jest to najkrótszy sposób, aby to zrobić.Po zakończeniu pierwszej pętli wciskamy „LUL” na stos (technicznie jest to odwrotnie, ale oczywiście nie ma znaczenia, gdy jest to palindrom).
Następnie mamy kolejną pętlę, owijającą się przez prawą granicę, na lewo od pola gry, a następnie z powrotem. Tym razem odliczamy drugie N., wypychając wiele kopii „Jeszcze jednego” na stos (ponownie w odwrotnej kolejności). I znowu, każda dodatkowa kopia jest oddzielona od poprzedniej cytatem.
Po zakończeniu drugiej pętli cała fraza znajduje się teraz na stosie (w odwrotnej kolejności), więc po prostu musimy ją zapisać.
źródło
"
. Dzięki za wyjaśnienie05AB1E ,
3029 bajtówWypróbuj online!
Różne typy łańcuchów nie wydają się dobrze mieszać, więc z jakiegoś powodu muszę dwukrotnie zakończyć pętlę.
źródło
C ++, 118 + 16 = 134 bajtów
#include<string>
- +16zamienia „LUL” na cały ciąg N razy.
Czy ktoś ma lepsze golfa?
Wypróbuj online!
Ogromne podziękowania dla Kritixi Lithos i hvd za ogromną pomoc.
źródło
<string>
importu do bajtu, nie jestem pewienfor(int i=0;i<x;i++)
dofor(int i=0;i++<x;)
r.find("L")
jest krótszy niżr.find("LOL")
o 2 bajty :)JavaScript (ES6), 68 bajtów
Zadzwoń jak
f(n)
.Możesz także nazwać to jak
f(n, "LUL")
i zastąpić LUL dowolnym słowem, które chcesz.źródło
V ,
3937 bajtówDwa bajty za pomocą @KritixiLithos do wymyślenia metody podstawiania
Wypróbuj online!
Hexdump:
źródło
Java,
7977 bajtówGra w golfa:
Nie golfowany, z testem:
Wyjście programu:
źródło
"\""
na'"'
(pojedyncze znaki), aby zapisać 2 bajty.Python, 79 bajtów
Chciałem tylko zrobić rozwiązanie rekurencyjne, mimo że jest ono dłuższe niż inne odpowiedzi.
Wypróbuj online
źródło
C #, 125 bajtów
źródło
Format
...string
abyvar
zapisać dwa bajty.C,
140111 bajtówMoja pierwsza próba pytania o golfa. Grał w golfa:
Zrozumiałem, że jest to zły wynik, ponieważ q (0) po prostu daje LUL. Następna próba:
Przykładowy program (przetestowany z GCC na OSX):
Daje wynik
źródło
Mathematica,
6968 bajtówPodziękowania dla Martina Endera za uratowanie 1 trudnego do znalezienia bajtu!
Funkcja bez nazwy, która przyjmuje nieujemną liczbę całkowitą i zwraca ciąg znaków.
Nest
stosuje funkcję wielokrotnie do początkowego argumentu; w tym przypadku funkcją jest otoczenie argumentu odpowiednimi słowami i cudzysłowami. Zaczynamy od czasów"LUL"
iteracyjnychN+1
; skutkuje to niechcianymi znakami cudzysłowu otaczającymi całą frazę, ale[[2]]
zachowuje tylko to, co między nimi. Na koniec""<>
zamienia wynikową mocno zagnieżdżoną listę w pojedynczy ciąg.Poprzednie zgłoszenie:
źródło
LUL
:""<>Nest[{q="\"",{"One more ",#," and I'm out"},q}&,"LUL",#+1][[2]]&
[[2]]
! Oto jak ominąć pierwsze niepożądane cytaty: DC #,
1198571 bajtówZaoszczędź 14 bajtów dzięki @Luc
źródło
string.Format
i zagnieździć ichSiatkówka , 51 bajtów
Wypróbuj online!
źródło
R, 97 bajtów
Nie golfowany:
źródło
R,
100 9792 bajtów„Jeszcze jedna funkcja rekurencyjna i nie ma mnie”
Edycja: Okazuje się, że podejście nierekurencyjne jest nieco krótsze:
źródło
Japt , 39 bajtów
Dziękuję @ETHproductions za pomoc.
Wypróbuj tutaj!
źródło
Rubinowy, 51 bajtów
Jeden indeksowany. Wypróbuj online
źródło
PowerShell ,
7267 bajtówWypróbuj online!
źródło
"$('"One more '*($c=1+"$args"))LUL$(' and I''m out"'*$c)".Trim('"')
ogolone 5 za pomocą zaworu () zamiast łączyć pominąć END"
„SLua, 101 bajtów
Oczywista próba ciągu. Powtarza się
"One more
iand I'm out"
dokładnie wprowadza + 1 razy, zLUL
odstępem pomiędzy, a następnie usuwa pierwszy i ostatni cytat.źródło
Haskell, 51 bajtów
Indeksy od 1.
źródło
LUL
w cudzysłowie.f -1="LUL"
, ale nie widzę, jak usunąć dodatkowe cudzysłowy bez wielu nowych symboli.Rubinowy, 70 bajtów
Po prostu zapętla się podaną kwotę, otaczając ostatni ciąg za każdym razem ciągiem formatu.
Indeks zaczyna się od pierwszej.
źródło
Skumulowane, 54 bajty
Wypróbuj tutaj! Przykładowe użycie „funkcji”:
Jeden na 56 bajtów:
źródło
Python 3, 68 bajtów
def f(a):return('"One more '*a+'LUL'+(' and I%sm out"'%"'")*a)[1:-1]
źródło
*a
zamiast*5
?CJam,
5149 bajtówWypróbuj online
Nie golfowany:
źródło
W
zamiast -1, aby zapisać jeden bajt\"
jednego łańcucha i dodania"
do niego obu końców`
. Potem musiałem rozdzielić strunę, czego nie mogłem zrobić z długością, a/
ponieważ pierwsza część jest krótsza. Więc użyłem kanału jako separatora i tak zrobiłemN/
. Ponieważ mamy teraz obie części na liście, możemy z łatwością powtórzyć obie z nich jednocześnief*
. ILUL
jest wstawiany na końcu prostym złączeniem (*
).Groovy, 54 bajty
Całkiem proste, takie same jak odpowiedź pytona, ale o 2 bajty krótsze. Jest również indeksowany 1.
Wypróbuj online!
źródło
Mathematica,
6563 bajtówDwa bajty wyłączone, zauważając, że wyzwanie umożliwia indeksowanie 1.
źródło
PHP
Witam, znalazłem do tej pory dwa sposoby na zrobienie tego.
Sposób zastępowania 1-indeksowany (121 bajtów) .
Sposób rekurencyjny (86 bajtów) .
źródło
C ++, 80 + 16 = 96 bajtów
#include<string>
- +16Nie golfowany:
Wywołuje się rekurencyjnie i używa dodawania łańcucha. Całkiem prosto. Mam na myśli, co jeszcze mogę powiedzieć? Nawet wersja bez golfa jest w zasadzie jednowarstwowa.
Wypróbuj online!
źródło
Cheddar , 71 bajtów
Wypróbuj online!
źródło
_ f ->
składnią, która może zaoszczędzić trochę bajtów