Przed domem mamy kwadratowy ogród o wymiarach 10 x 10 metrów. Chcemy sadzić trawę i zrobić taras. Zdecydowaliśmy, jak podzielić ogród, ale nie zdecydowaliśmy o stosunku między ilością trawy a tarasem.
Potrzebujemy pomocy w jej wizualizacji, a ASCII-art jest zdecydowanie najlepszym sposobem na zrobienie tego.
Wyzwanie:
Weź liczbę całkowitą z zakresu obejmującego [0, 100] (lub opcjonalnie dziesiętnego [0, 1]) reprezentującego, ile procent ogrodu powinien stanowić taras.
Jeden metr kwadratowy tarasu będzie reprezentowany przez myślnik -
lub bar |
. Jeden metr kwadratowy trawy będzie reprezentowany znakiem skrótu #
.
- Jeśli ilość tarasu jest mniejsza lub równa 50%, ogród należy przykryć prętami, zaczynając od lewego dolnego rogu i wypełnić pionowo, a następnie poziomo.
- Jeśli ilość tarasu jest większa niż 50%, chcemy, aby poszycie było w drugą stronę (kreski zamiast prętów) i rozpoczynające się w lewym dolnym rogu i wypełniające się poziomo, a następnie pionowo.
Przykłady:
N = 25%
||########
||########
||########
||########
||########
|||#######
|||#######
|||#######
|||#######
|||#######
N = 75%
##########
##########
-----#####
----------
----------
----------
----------
----------
----------
----------
N = 47%
||||######
||||######
||||######
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 50%
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 51%
##########
##########
##########
##########
-#########
----------
----------
----------
----------
----------
N = 0%
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
N = 100%
----------
----------
----------
----------
----------
----------
----------
----------
----------
----------
To jest code-golf, więc wygrywa najkrótszy kod w bajtach. Standardowe zasady dotyczące I / O. To jest sztuka ASCII, więc wynik powinien wyglądać jak w powyższych przykładach. Oznacza to, że wysyłanie ["|", "|" ...]
nie jest prawidłowe .
Wyjaśnienia zachęcamy jak zawsze :)
Odpowiedzi:
APL (Dyalog) , 34 bajty
Anonimowa funkcja przedrostka oczekująca liczby całkowitej w zakresie 0–100. Przyjmuje się
⎕IO
( I ndex O rigin)0
, co jest domyślne w wielu systemach.Wypróbuj online!
{
…}
Lambda;⍵
jest argumentem:'#-|[
…]
Indeksuj ciąg za pomocą następującej tablicy:50≥⍵
1, jeśli 50 jest większy lub równy argumentowi, w przeciwnym razie 0s←
przechowywać w (dla s mall)1+
przyrost⍵⍴
cyklicznie r eshape do argumentu długości100↑
weź pierwszą setkę tego, wypełnianie zerami10 10⍴
r eshape do dziesięciu wierszach i kolumnach dziesięciu⊢
dochód, (wydzielanes
z10 10
)⍉⍣s
transponuj, jeśli są małe⊖
odwróć do góry nogamiźródło
{⊖⍉⍣c⊢10 10⍴(⍵/'-|'⊃⍨c←⍵≤50),100/'#'}
99/'#'
⍴
J ,
39, 3837 bajtówJak to działa:
Wypróbuj online!
źródło
{.
z argumentem przekraczania granic to fajna sztuczka.(]|.@|:_10{&'#|-'\100{.1+$)>&50
_100{.
który umieszcza wypełnienia na początku, ale potem musiałem odwrócić każdy wiersz, więc zrezygnowałem.JavaScript (ES6), 84 bajtów
Pobiera dane wejściowe jako liczbę całkowitą w [0 ... 100] .
Przypadki testowe
Pokaż fragment kodu
Sformatowane i skomentowane
źródło
Python 2 ,
121117116 bajtówWypróbuj online!
źródło
[i*10:-~i*10]
może być[i*10:][:10]
.Galaretka , 23 bajty
Wypróbuj online!
Zmień liczbę
Ç
w stopce, aby zmienić dane wejściowe. Działa jako monadyczne łącze w programie bez argumentów wiersza poleceń, co jest dozwolone .źródło
ȷ2
->³
)SWI Prolog, 249 bajtów
Rozwiązanie jest dość proste. Procedura
a
tworzy wiersze,l
zapisuje znaki w kolumnach w rzędzie ir
decyduje, jaki znak powinien zostać wydrukowany.źródło
G<51
powinien działać zamiastG<=50
.MATL , 26 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
Python 2 , 85 bajtów
Wypróbuj online!
W obu przypadkach każda linia jest dopełniona z prawej strony
#
do długości 10, co pozwala nam dzielić ten kod między dwiema przypadkami. Liczba 10 była używana wystarczająco często, aby aliasingT=10
zaoszczędził przyzwoitą liczbę bajtów.źródło
51
i później brakuje wiersza.Rubin ,
9282 bajtówWypróbuj online!
Jak to działa:
Każda komórka w siatce ma numer progresywny rozpoczynający się od lewego dolnego rogu i przebiegający poziomo lub pionowo w zależności od wartości n:
Jeśli
n>50
jest100-y*10+x
inaczej, to jestx*10+9-y
źródło
Węgiel , 25 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Łuska , 24 bajty
Wypróbuj online!
Wyjaśnienie
źródło
SOGL V0.12 , 21 bajtów
Wypróbuj tutaj!
Wyjaśnienie:
źródło
dc ,
210197 bajtówWypróbuj online!
źródło
APL (Dyalog Classic) , 33 bajty
Wypróbuj online!
na podstawie odpowiedzi Adáma
⎕d
jest ciąg'0123456789'
∘.,
Produkt kartezjański⍨
z samym sobą⍎¨
oceń każdy - uzyskaj macierz 10x10 0..99⍵>
macierz boolowska, dla której argument⍵
jest większy⊢
działa jak separator(⍉+⍨)⍣(⍵≤50)
jeśli ⍵ ≤50 podwój matrycę (+
z samym sobą) i transponuj (⍉
)⊖
pionowy rewers'#-|'[ ]
indeksuj ciąg'#-|'
każdego elementu macierzyźródło
q , 51 bajtów
źródło
Siatkówka ,
7262 bajtyWypróbuj online! Link zawiera przypadki testowe. Edycja: Zapisano 10 bajtów przy pewnej pomocy @MartinEnder. Wyjaśnienie:
Powtórz
|
podaną liczbę razyAle jeśli wartość wejściowa wynosiła co najmniej 51, zmień je na
-
s.Dołącz 100
#
s.Podziel na 10 grup po 10, odrzucając wszystko, co pozostało.
Jeśli wartość wejściowa wynosiła co najmniej 51, transponuj wynik.
Posortuj wynik.
Alternatywne rozwiązanie, również 62 bajty:
Sortowanie przed transpozycją pozwala zaoszczędzić bajty pod warunkiem transpozycji, ale kosztuje bajt, aby uzyskać wynik we właściwej kolejności.
źródło
#
pierwszymO
etapie nie potrzebujesz , bo$.%`
będzie co najwyżej9
. Możesz także zaoszczędzić trochę bajtu, unikając pętli kosztem innego etapu sortowania na końcu, na przykład: tio.run / ##K0otycxL/ ... Prawdopodobnie istnieje jeszcze krótszy sposób, aby zmienić wynik tegoM
etapu na ostateczny kształt .O
scenę na scenę tuż za niąM
, abyś mógł nadal korzystać z perspektywy zamiast z perspektywy.Python 2 ,
106103 bajtyWypróbuj online!
źródło
PHP, 119 + 1 bajtów
Uruchom jako potok z
-nR
lub spróbuj online .źródło
Galaretka , 24 bajty
Wypróbuj online!
Jak to działa
Używam zbyt wielu indeksów górnych ...
źródło
R , 102 bajty
Wypróbuj online!
Czyta
n
ze standardowego wejścia i drukuje ogród na standardowe wyjście.Wyjaśnienie:
źródło