Organizujesz igrzyska olimpijskie i na tę okazję musisz zbudować fantastyczną pulę, ale przełożeni często zmieniają zdanie na temat wymiarów i potrzebują szybkiego sposobu na odbudowanie go o żądanym rozmiarze!
Biorąc pod uwagę dwie liczby całkowite, L
a x
Twoim zadaniem jest zbudowanie basenu długości L
i linii x
.
Jak budowany jest basen?
Zawiera wewnętrzny kwadrat, którego poziome ściany są wykonane z
L
kolejnych kresek (-
), a pionowe ściany z3x - 1
prętów (|
). Dodatkowo+
w każdym rogu znajdują się 4 znaki. Weźmy przykład (L = 10, x = 2
):+ ---------- + | | | | | | | | | | + ---------- +
Każda linia ma szerokość 2 jednostek pionowych. Wewnętrzny kwadrat jest wypełniony
x-1
separatorami linii, składającymi się zL
poziomo następujących po sobie:
symboli. Po umieszczeniu separatorów linii nasza pula powinna wyglądać następująco:+ ---------- + | | | | | :::::::::: | | | | | + ---------- +
Pula zawiera również wypełnienie (zewnętrzny kwadrat), którego poziomymi ścianami są (L + 4)
-
si pionowymi ścianami (3x + 1)|
s, które otaczają wewnętrzny kwadrat:+ -------------- + | + ---------- + | | | | | | | | | | | :::::::::: | | | | | | | | | | | + ---------- + | + -------------- +
I to jest nasz basen olimpijski **!
Okular:
Dla celów projektowych i funkcjonalnych masz gwarancję, że
100 ≥ L ≥ 10
i15 ≥ x ≥ 2
.Dane wyjściowe muszą być dokładnie takie, jak pokazano. Generowanie puli „zbudowanej pionowo” * jest niedozwolone.
Dozwolone są spacje końcowe i wiodące.
Możesz przyjmować dane wejściowe i dostarczać dane wyjściowe dowolną standardową metodą .
Przykłady / przypadki testowe:
L = 20, x = 3 + ------------------------ + | + -------------------- + | | | | | | | | | | | :::::::::::::::::::: | | | | | | | | | | | | :::::::::::::::::::: | | | | | | | | | | | + -------------------- + | + ------------------------ + L = 50, x = 5: + ------------------------------------------------- ----- + | + ------------------------------------------------- - + | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | + ------------------------------------------------- - + | + ------------------------------------------------- ----- + L = 10, x = 15 + -------------- + | + ---------- + | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | + ---------- + | + -------------- +
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach !
* Woda może wypłynąć, jeśli jest zbudowana pionowo: P
** Tak, wiem, że im więcej pasów i im krótsza jest pula, tym mniej rysunek wygląda jak pula!
x>=L
?L=10
ix=15
? Czy nie byłoby więcej pasów, niż można by umieścić w basenie? Mogę nieOdpowiedzi:
Węgiel drzewny , 32 bajty
Wypróbuj online!
-4 dzięki Neilowi .
AST:
źródło
-a
argumentu wiersza poleceń.-a
podnosi błąd> _ <Węgiel drzewny ,
403937 bajtówWypróbuj online!
Wiem, że Neil ma już odpowiedź na węgiel drzewny o tej samej długości, ale podjąłem trochę inne podejście, więc pomyślałem, że równie dobrze mogę wysłać moją.
Wyjaśnienie
źródło
B
jest opcjonalny? Fajnie, to oszczędza mi dwa bajty!Węgiel drzewny,
40383631 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Prymitywy rysunkowe Węgla drzewnego wykorzystują ogólną liczbę znaków, w tym
+
s, jednak wejście jest tylko liczbą-
s, więc musimy dodać 2, aby uzyskać szerokość wewnętrznej ściany.Oblicz ponownie wysokość wewnętrznej ściany, w tym dolnego rzędu, czyli trzy na linię plus jeden.
Narysuj linie. To jest po prostu wypełniony prostokąt
:
literą s oddzieloną pionowo dwiema pustymi liniami (pilcrows reprezentują znaki nowej linii).Rectangle
Polecenie jest dokładnie to, czego potrzebujemy, aby narysować ścianę wewnętrzną. Edytować:Box
pozwala pominąć trzeci parametr, oszczędzając mi 2 bajty.I jeszcze raz, aby narysować ścianę zewnętrzną, z wyjątkiem nieco szerszej i wyższej i wyśrodkowanej na ścianie wewnętrznej.
źródło
T-SQL,
284281 bajtówDane pobierane są z INT kolumn L i x w istniejącej tabeli t , zgodnie z naszymi dozwolonymi metodami wprowadzania .
Zasadniczo tworzę długi ciąg z literami reprezentującymi powtarzające się znaki (d = myślniki, s = spacje, c = dwukropki, b = podział linii), a następnie WYMIENIJ je wszystkie na końcu z odpowiednimi wypełniaczami.
Sformatowany:
Wewnątrz pętli dołączam 2 rzędy spacji i 1 rząd dwukropków, a następnie na końcu odcinam ten rząd rozdzielający i dołączam granicę puli przed wykonaniem zamiany.
EDYCJA : Zapisano 3 bajty, przełączając
@
się na najczęściej używaną zmienną i zamieniając kolejność inicjalizacji.źródło
JavaScript (ES6),
137124 bajtówGrałem trochę w golfa na moim telefonie, więcej do naśladowania.
Spróbuj
źródło
Python 2 ,
124120117 bajtów-2 bajty dzięki Hyper Neutrino
Wypróbuj online!
źródło
t
jest niepotrzebna)SOGL V0.12 ,
5251 bajtówWypróbuj tutaj!
Nieźle, biorąc pod uwagę, że 20 bajtów to funkcja prostokąta, dla której węgiel ma wbudowaną funkcję.
Wyjaśnienie:
źródło
C # (.NET Core) , 202 bajty
Wypróbuj online!
źródło
Python 2 ,
128126 bajtówWypróbuj online!
-2 bajty dzięki @ Mr.Xcoder
źródło
PHP , 153 bajty
Wypróbuj online!
źródło
Python 2 , 97 bajtów
Wypróbuj online!
Python 2 , 98 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 36 bajtów
Wypróbuj online!
Jest to algorytm bardziej węglowy niż moja inna odpowiedź.
źródło
C (gcc) , 195 bajtów
Wypróbuj online!
źródło
Perl 5 , 124 + 1 (-a) = 125 bajtów
Wypróbuj online!
źródło