Powiedzmy, że mam trochę grafiki ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
( Źródło )
Chcę jednak skupić się na kablu tego joysticka, ponieważ tak naprawdę chcę zdjęcia ścieżki ogrodowej prowadzącej do drzwi.
,=.
-|=|-
| |
\ \
) )
/ /
( (
Mógłbym kopiować wiersz po wierszu, mogłem użyć edytora tekstu z trybem wyboru bloku lub ... mogłem napisać kod!
Zatem mój kod potrzebuje pięciu argumentów:
- Kawałek sztuki ASCII, ciąg oddzielony znakiem nowej linii.
- Oś X lewego górnego rogu (indeksowana 1, z lewej kolumny, dodatnia liczba całkowita)
- Oś Y lewego górnego rogu (1-indeksowana, od górnego rzędu, dodatnia liczba całkowita)
- Szerokość powstałego obrazu (dodatnia liczba całkowita)
- Wysokość uzyskanego obrazu (dodatnia liczba całkowita)
Przypadki testowe
Obraz ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
Ścieżka ogrodowa
- X: 10
- Y: 15
- Szerokość: 5
- Wysokość: 7
Wynik:
,=.
-|=|-
| |
\ \
) )
/ /
( (
Ikona DB
- X: 3
- Y: 12
- Szerokość: 6
- Wysokość: 4
Wynik:
,-""-.
i-..-i
| |
`-..-'
Alien Elder
- X: 9
- Y: 1
- Szerokość: 7
- Wysokość: 10
___
,"---".
: ;
`-.-'
| |
| |
| |
.-\_/-.
| |
`---'
Podpis
- X: 16
- Y: 19
- Szerokość: 3
- Wysokość: 1
hjw
Zasady
- Dane wyjściowe można podać dowolną dogodną metodą .
- Dopuszczalny jest pełny program lub funkcja.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Y
powinny BEW15
, aw TC 2,X
powinny być3
Odpowiedzi:
Płótno , 1 bajt
Wypróbuj tutaj!
Jako dane wejściowe przyjmuje wysokość, szerokość, Y, X i grafikę ASCII, w tej kolejności.
Chociaż prawie wszystko w obiektach artystycznych ASCII w Canvas jest indeksowane na 0,
@
z jakiegoś powodu jest indeksowane na 1. ¯ \ _ (ツ) _ / ¯źródło
Python 2 ,
6462 bajtówWypróbuj online!
Jeśli
X
iY
może być0
zindeksować:Python 2 , 56 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 7 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Przyjmuje współrzędne 0-indeksowane. Wyjaśnienie:
Wydrukuj grafikę ASCII.
Przejdź do lewego górnego rogu żądanego prostokąta.
Przytnij płótno do pożądanego rozmiaru.
źródło
Pip
-n
, 21 bajtówWypróbuj online!
Lub jeśli dozwolone jest indeksowanie 0 ...
Pip
-n
, 17 bajtów :Wypróbuj online!
Wyjaśnienie
Pobiera wszystkie pięć argumentów jako argumenty wiersza polecenia.
Powyższe rozwiązania zakładają również, że wejście jest idealnym prostokątem - tzn. Linie mają tę samą długość. W przeciwnym razie potrzebne są 2 dodatkowe bajty (użyj
-l
zamiast-n
):źródło
05AB1E ,
2119 bajtówWypróbuj online!
Lub jeśli
0-indexing is allowed
:05AB1E , 18 bajtów
Wypróbuj online!
źródło
[X1, X2]
i[Y1, Y2]
jakov³ŸNåiy²ŸèJ=
Japt
-R
,1311 bajtówSpróbuj
2 bajty zapisane dzięki Kamilowi Drakari
9 bajtów, jeśli nie niepotrzebne wymaganie, aby rozwiązania korzystały z indeksowania 1.
Wyjaśnienie
źródło
t
, a kolejne 2 bajty , indeksując 0. Być może warto poczekać na drugą, ponieważ OP nie wyjaśniło, czy indeksowanie 0 jest dopuszczalne, ani nie naprawiło przypadków testowych.t
metoda działa również na tablicach.JavaScript (Node.js) ,
7069 bajtów-1 Dzięki @Shaggy za
splice()
pomysł.Wypróbuj online!
Podana sztuka ASCII jest denerwująca
źródło
J , 45 bajtów
Wypróbuj online!
Uwagi: J akceptuje maksymalnie 2 argumenty, lewy i prawy. Prawym argumentem jest ciąg znaków ASCII, lewy - lista wartości UHXW
Symuluję znak nowej linii, a wywołanie funkcji zawiera kod do konwersji ciągu znaków na tablicę.
źródło
V , 16 bajtów
Wypróbuj online!
Oczekuje się, że dane wejściowe zostaną wypełnione spacjami, aby były idealnym prostokątem. Również wejście „Y” znajduje się przed „X”.
Hexdump:
źródło
C (gcc) ,
118109 bajtówDane wejściowe mogą zawierać postrzępione linie: nowe linie są drukowane, jeśli istnieją w zakresie y.
Dzięki pułapkowi cat za sugestię.
Wypróbuj online!
źródło
Galaretka , 11 bajtów
Wypróbuj online!
Przyjmuje ASCII-art jako wieloliniowy ciąg r Pythona (aby uniknąć problemów z odwrotnymi ukośnikami).
źródło
Haskell , 61 bajtów
Wypróbuj online!
Trwa argumentów w kolejności:
x
,y
,w
,h
,s
.źródło
Bash + coreutils, 37
Co ciekawe, ogon GNU 8.28 (na Ubuntu 18.04) zezwala na
+NUM
format, podczas gdy ogon GNU 8.29 na TIO wymaga do tego 2 dodatkowych bajtów-n+NUM
.Wypróbuj online!
Myślałem, że wykonanie tego wszystkiego
sed
może być krótsze, ale przy 50 bajtach nie jest to:źródło
K4 , 31 bajtów
Rozwiązanie:
Przykłady:
Wyjaśnienie:
Weź 1-indeksowane dane wejściowe, wygeneruj współrzędne x / y i zindeksuj do sztuki ascii.
źródło
R , 62 bajty
Być może zaskakująco krótkie rozwiązanie problemu tekstowego w R, ponieważ nie musimy tak naprawdę czytać całego tekstu w matrycy.
Wypróbuj online!
źródło
\ / \ /> , 123 bajty
Wejście składa się z jednej linii zmiennych wejściowych spacjami
x
,y
,w
, ih
, a następnie ASCII w następnym wierszu naprzód.Wyjaśnienie
Ten kod wykorzystuje zdolność \ / \ /> do samodzielnej modyfikacji poprzez umieszczenie grafiki ascii w samym kodzie, co ostatecznie wygląda następująco:
Następnie pobiera znaki z określonego prostokąta z kodu i wysyła go.
źródło