Rozpoczął się środkowy jesienny festiwal !
Niestety, wszystkie moje ciastka księżycowe zostały skradzione - stają się zbyt drogie dla małych ludzi, takich jak ja, i obawiam się, że nie będę w stanie zjeść tego roku!
Zwracam się więc do ciebie o pomoc. Czy byłbyś w stanie zrobić mi trochę?
Dla tych, którzy nie są świadomi, pozwólcie, że nauczę cię, jak wygląda ciastko księżycowe.
Mooncakes są w wielu różnych rozmiarach!
Więc dam wam moje wejście , n , kiedy chcesz.
Oto kilka przykładów danych wyjściowych, które chcę:
Ciasto księżycowe o rozmiarze n = 3:
(@@@@@)
(@MAF@)
(@@@@@)
Mooncake o rozmiarze n = 6:
(@@@@@@@@@@@)
(@ @)
(@ M @)
(@ F @)
(@ @)
(@@@@@@@@@@@)
To znaczy, że księżycowy rozmiar n to:
- n linii wysoko
- 2n - 1 @ s długości
- Długość 2n + 1 znaków (@s i nawiasy kwadratowe)
I lepiej nie wrzucaj mi swoich zbyt małych ćwiczeń księżycowych ciastek!
Załóżmy, że dane wejściowe zawsze będą n> = 3 .
Mooncakes zawierają również jedną z następujących dekoracji :
- MF
- MAF
- HMF
- JCJ
- TTT
- ZJ
- LF
- RF
- CF
Który z nich nie ma znaczenia - o ile jest wyśrodkowany pionowo i poziomo .
Można go również pisać pionowo lub poziomo!
Chcę różnorodności!
Jeśli naprawdę zamierzasz zrobić ze mnie dwa takie same ciasteczka księżycowe, dekoracja powinna być inna!
Oznacza to, że wielokrotne wykonywanie programu z dokładnie tym samym wejściem nie zawsze musi dawać tę samą dekorację .
Nie mogę się doczekać, aby zjeść ciasteczka księżycowe, więc im szybciej je otrzymam (im krótszy kod ), tym lepiej!
Powodzenia!
Dla tych, którzy zastanawiają się nad dekoracjami:
są to inicjały wszystkich alternatywnych nazw na Święto Środka Jesieni.
Listę można znaleźć na stronie Wikipedii, do której link znajduje się na początku tego postu.
Wyjaśnienia:
Nie ma żadnych zasad dotyczących początkowych i końcowych białych znaków .
Miej tyle, ile chcesz!
Dekoracje muszą znajdować się w samym środku twojego ciasteczka księżycowego!
W przypadku poziomych dekoracji oznacza to, że musi znajdować się na środkowej linii ciasta, a liczba znaków po lewej i prawej stronie łańcucha dekoracji musi być równa.
W przypadku dekoracji pionowych oznacza to, że musi znajdować się w środkowej kolumnie ciasta, a liczba znaków powyżej i poniżej dekoracji musi być równa.
Nie wszystkie dekoracje muszą być użyte!
Jedynym wymaganiem jest to, że musi istnieć więcej niż jedna możliwość dla dowolnego wejścia n . Możliwości również nie muszą być równe.
Funkcje są dopuszczalne.
MAF
a nieMF
? Nie widzęA
w twoich opcjach dekoracji.Odpowiedzi:
Pyth,
71655958 bajtówZapisano 1 bajt dzięki @StevenH.
Wypróbuj online. Zestaw testowy.
Tyle paddingu.
źródło
?%Q2
z@,
(odwrotna kolejność dwóch opcji) ...Q
. (Ab) użyłem tego bardzo często podczas gry w golfa z moją własną odpowiedzią na Pythona.JavaScript ES6,
206196192188187180176169165156 bajtówAwaria
Moja pierwsza próba golfa kodowego. To może być bardziej golfa.
zapisano 4 bajty dzięki @ETHProductions
Edytuj Zezwoliłem na używanie w celu spełnienia:
Date.now()%2
new Date%2
pozwala mi to zaoszczędzić kolejne 7 bajtów
+Math.random()>.5
zapisał kolejne 4 bajty dzięki @Arnauld
źródło
['MA','HA'][r]+'F'
można grać w golfa'MH'[r]+'AF'
.[' R ',' C '][r]
z" ${'RC'[r]} "
zastępując każdy"
z grawis.['MA','HM'][r]+'F'
tak naprawdę jest o dwa bajty dłuższy niż['MAF','HMF'][r]
;)' @'[+!s]
zamiast(s?' ':'@')
new Date%2
zamiastDate.now()%2
.Pyth,
9979716864 bajtówPyth jest
bardzo zływ tworzeniu ciągów. A może jestem po prostuzłycoraz lepiej je golfa.Może tworzyć dekoracje
MAF
iHMF
poziomo, a także dekoracjeMF
iCF
pionowo.Wypróbuj online!
źródło
Vim, 118 bajtów
Pobiera dane wejściowe jako bufor (np. Plik z liczbą n jako zawartością).
Oto z niedrukowalnymi znakami kontrolnymi w formacie xxd:
Wypróbuj online! (Jak się okazuje, interpreter V działa również dobrze dla normalnego kodu Vima.)
Wyjaśnienie
źródło
@a
to arg1,@b
arg2 itd., Ale jest to cecha specyficzna dla V. To technicznie nie ma znaczenia, ponieważ masz"aD
na początku, ale pomyślałem, że zwrócę na to uwagę. 2) Możesz zrobić jeden bajt, jeślidd@ap
Y@apdd
dd@ap
nie działa niestety.dd@aP
działa, ale wymaga dodatkowejj
i dodatkowejk
linii.PHP,
342292249185178176 bajtówZadzwoń z
php -r '<code>' <size>
historia
Rev 1: wersja początkowa; wszystkie rozmiary (w tym małe ciasta), wszystkie dekoracje, wszystkie możliwe kierunki
Wersja 2: usunięto małe ciasta (-36 bajtów), zrestrukturyzowano opcje dekoracji, usunięto jeden przedmiot dekoracji (-21) i jednobajtowy golf (-1).
Rev. 3: Do czterech dekoracji; (-17), tylko poziomy dla nieparzystych rozmiarów (-18) plus drobne gry w golfa (-8).
Rev. 4: Podziękowania dla Jörga za grę w golfa w części „ciasto z farbą”; zdjął niesamowitą (-31).
Kolejne -6 z moim dodatkowym golfem i -27 za użycie pojedynczego łańcucha zamiast szeregu łańcuchów.
Obj. 5: -7 bajtów głównie dzięki Christallkeksowi
awaria
Z każdą godziną robi się coraz szczuplejsza. :)
źródło
for($i=0;$i<$n=$argv[1];$i++){$o[]=str_pad("(@",2*$n-1,!$i|$i==$n-1?"@":" ")."@)";}
!$i|$i==$n-1?"@":" "
; trójka po prostu nie zaakceptuje twojej (na mojej maszynie), chociaż jest poprawna.for(;$i<$n=$argv[1];)$o.=str_pad("(@",2*$n-1," @"[$i++%($n-1)==0])."@)\n";
Wygląda na to, że „MAD” gra w deco ;-)Java 7,
399349 bajtówZaktualizowana wersja z pomocą @Dodge i @Kevin Cruijssen:
Wypróbuj tutaj!
Nowa wersja jest znacznie bardziej zoptymalizowana i pozbyła się
String
obsługi tablicy. Również zgodnie z sugestią są teraz tylko 4 dekoracje: 2 dla parzystych danych wejściowych (MF
,ZJ
) i 2 dla nieparzystych danych wejściowych (MAF
,HMF
), które są połączone w jedenString
.Nie golfowany:
źródło
"MAF"
powtarza?char[]
bardziej efektywnie wykorzystać pętle i zainicjować dekorację i dalej grać w golfa. @Cyoce zduplikowałem,MAF
ponieważ wtedy mam wszystkie dekoracje dla parzystego wejścia w indeksach0,2,4,6,8
i wszystkie dekoracje dla nieparzystego wejścia w indeksach1,3,5,7,9
. Ułatwia to obliczenie indeksu losowego dla danych wejściowych.Math.random()*5
daje losową liczbę od0-4
.*2
rozprzestrzenia to na0,2,4,6,8
.+n%2
dodaje,1
aby uzyskać nieparzyste dane wejściowe1,3,5,7,9
.Partia, 386 bajtów
Wysyła tylko odpowiednio HMF, MAF, MF lub CF. Uwaga: niektóre linie kończą się spacją. Zmienne:
n
Parametr wejściowy (odczytany ze STDIN)f
Prefiksy dekoracji (F
implikowany jest przyrostek )o
Dziwnośćn
(używana tylko raz, aleif
instrukcje nie akceptują wyrażeń)l
Rząd górnego pionowego znaku lub0
do poziomej dekoracjiu
Rząd o niższym pionowym znaku lub0
do poziomej dekoracjih
Rząd poziomej dekoracji (zostaje zastąpiony dekoracją pionową)d
Indeks dekoracji w prefiksie dekoracji (0/1 dla poziomej lub 1/3 dla pionowej)c
Ciągn-3
spacjis
Łańcuch wyjściowy dla każdego wiersza%1
Numer wiersza, ale ustawiony równieżn
na pierwszy wiersz, tak aby zarówno pierwszy, jak i ostatni wiersz używały@
s zamiast spacji.źródło
C, 233 bajtów
Powinien być w stanie zagrać trochę w golfa stąd ...
Wielkie wyzwanie, kodowanie było trudne i brzydkie.
Uruchom z tym głównym func;
źródło
Ruby 2.3.1,
449265245233230 znakówWydaje się, że powinna być odpowiedź rubinowa, więc oto odpowiedź rubinowa. To naprawdę nie jest takie mądre, mam nadzieję, że ktoś tutaj będzie mądrzejszy;)
Wersja golfowa:
Sztuczki golfowe:
Wersja do odczytu
Testowanie
źródło
Nudziłem się ... oto dwie kolejne wersje:
PHP, 193 bajtów
port odpowiedzi Lmis
PHP, 191 bajtów
drukowanie ciasta znak po znaku w jednej pętli
awaria
źródło
Python 3,
318301297285272 bajtówZrzucono 17 bajtów za pomocą DJMcMayhem
Powalono 4 bajty dzięki mbomb007
Powalił kolejne 12 bajtów dzięki DJMcMayhem
Powalił kolejne 13 bajtów dzięki mbomb007
Mój pierwszy golf w historii, więc nie jest tak wspaniale. Użyłem: aliasingu matematyki.ceil jako y i str.format jako z, formatów zagnieżdżania, importu jednowierszowego, lambda i operacji bitowej plus kilka innych rzeczy, aby uzyskać to tak, jak jest.
Wersja bez golfa (oddzielne importy, brak aliasów i brak operacji bitowej):
Co ciekawe, użycie niebitowej wersji tego nadal zapewnia poprawne wyjście, jednak wyjście jest inne:
Nie bitowe:
Bitowe:
źródło
from ... import*
import typu, aby zaoszczędzić trochę bajtówimport math;y=math.ceil
aby zdjąć dwa bajty. To daje ciimport random;import math;y=math.ceil;lambda n:"{a}{}{a}".format("{d}(@{}{b}F{c}@)\n{e}".format(" "*(y((2*n-5)/2)),b=random.sample(["L","R"],1)[0],c=" "*((2*n)-(5+y((2*n-5)/2))),d="(@{}@)\n".format(" "*(2*n-3))*y((n-3)/2),e="(@{}@)\n".format(" "*(2*n-3))*(n-(3+(y((n-3)/2))))),a="({})\n".format("@"*(2*n-1)))
13 bajtów mniej.format
ponieważ często go nazywasz. Problem polega na tym, że nie wiem dokładnie, jak aliasować do funkcji członka (jakstr.format
), więc trzeba by trochę poeksperymentować. Nie jestem pewien, czy byłoby to krótsze.C # 448 bajtów
Gra w golfa:
Sprawdź to tutaj
Nie golfowany:
źródło