Katakanlah saya punya beberapa seni ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
( Sumber )
Tapi saya ingin fokus pada kabel joystick ini, karena saya sebenarnya ingin gambar jalan taman, mengarah ke pintu.
,=.
-|=|-
| |
\ \
) )
/ /
( (
Saya dapat menyalin baris demi baris, saya dapat menggunakan editor teks dengan mode pemilihan blok, atau ... Saya bisa menulis beberapa kode!
Jadi, kode saya perlu lima argumen:
- Sepotong seni ASCII, string yang dipisahkan baris baru.
- Sumbu X sudut kiri atas (diindeks 1, dari kolom kiri, bilangan bulat positif)
- Sumbu Y dari sudut kiri atas (1-diindeks, dari baris atas, bilangan bulat positif)
- Lebar gambar yang dihasilkan (bilangan bulat positif)
- Tinggi gambar yang dihasilkan (bilangan bulat positif)
Uji Kasus
Gambar ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
Jalur taman
- X: 10
- Y: 15
- Lebar: 5
- Tinggi: 7
Hasil:
,=.
-|=|-
| |
\ \
) )
/ /
( (
Ikon DB
- X: 3
- Y: 12
- Lebar: 6
- Tinggi: 4
Keluaran:
,-""-.
i-..-i
| |
`-..-'
Penatua Alien
- X: 9
- Y: 1
- Lebar: 7
- Tinggi: 10
___
,"---".
: ;
`-.-'
| |
| |
| |
.-\_/-.
| |
`---'
Tanda tangan
- X: 16
- Y: 19
- Lebar: 3
- Tinggi: 1
hjw
Aturan
- Output dapat diberikan dengan metode apa pun yang mudah .
- Program lengkap atau fungsi dapat diterima.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Y
harusnya baru15
, dan dalam TC 2,X
harus3
Jawaban:
Kanvas , 1 byte
Coba di sini!
Dibutuhkan tinggi, lebar, Y, X, dan seni ASCII sebagai input, dalam urutan itu.
Meskipun hampir semua hal tentang objek seni ASCII di Canvas adalah 0-diindeks,
@
1-diindeks oleh beberapa alasan. ¯ \ _ (ツ) _ / ¯sumber
Python 2 ,
6462 byteCobalah online!
Jika
X
danY
dapat0
-indeks:Python 2 , 56 byte
Cobalah online!
sumber
Arang , 7 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil coordintaes yang diindeks 0. Penjelasan:
Cetak seni ASCII.
Lompat ke sudut kiri atas dari persegi panjang yang diinginkan.
Pangkas kanvas ke ukuran yang diinginkan.
sumber
Pip
-n
, 21 byteCobalah online!
Atau, jika pengindeksan 0 diizinkan ...
Pip
-n
, 17 byte :Cobalah online!
Penjelasan
Mengambil semua argumen sebagai argumen baris perintah.
Solusi di atas juga menganggap input adalah persegi panjang yang sempurna - yaitu, semua garis memiliki panjang yang sama. Jika tidak, diperlukan 2 byte tambahan (gunakan
-l
bukan-n
):sumber
05AB1E ,
2119 byteCobalah online!
Atau jika
0-indexing is allowed
:05AB1E , 18 byte
Cobalah online!
sumber
[X1, X2]
dan[Y1, Y2]
sebagaiv³ŸNåiy²ŸèJ=
Japt
-R
,1311 byteCobalah
2 byte disimpan berkat Kamil Drakari
9 byte jika bukan karena persyaratan yang tidak perlu bahwa solusi menggunakan pengindeksan berbasis 1.
Penjelasan
sumber
t
, dan 2 byte dengan 0 indeks. Mungkin layak menunggu yang kedua karena OP belum menjelaskan apakah pengindeksan 0 dapat diterima, atau memperbaiki kasus uji.t
metode ini berfungsi pada array juga.JavaScript (Node.js) ,
7069 byte-1 Terima kasih @Shaggy untuk
splice()
idenya.Cobalah online!
Seni ASCII yang diberikan mengganggu tbh
sumber
J , 45 byte
Cobalah online!
Catatan: J menerima hingga 2 argumen, kiri dan kanan. Argumen yang tepat adalah string seni ASCII, yang kiri - daftar nilai UHXW
Saya mensimulasikan baris baru dan pemanggilan fungsi memiliki kode untuk mengkonversi string ke array.
sumber
V , 16 byte
Cobalah online!
Input diharapkan diisi dengan spasi menjadi persegi panjang yang sempurna. Juga, input 'Y' muncul sebelum 'X'.
Hexdump:
sumber
C (gcc) ,
118109 byteInput dapat berisi garis bergerigi: baris baru dicetak jika ada dalam rentang-y.
Terima kasih kepada ceilingcat untuk sarannya.
Cobalah online!
sumber
Jelly , 11 byte
Cobalah online!
Mengambil ASCII-art sebagai r-string Python multi-line (untuk menghindari masalah dengan backslash).
sumber
Haskell , 61 byte
Cobalah online!
Mengambil argumen dalam rangka:
x
,y
,w
,h
,s
.sumber
Bash + coreutils, 37
Menariknya, GNU tail 8.28 (pada Ubuntu 18.04) memungkinkan
+NUM
format, sedangkan GNU tail 8.29 pada TIO membutuhkan 2 byte tambahan untuk ini-n+NUM
.Cobalah online!
Saya pikir melakukan ini semua
sed
mungkin lebih pendek, tetapi pada 50 byte tidak:sumber
K4 , 31 byte
Larutan:
Contoh:
Penjelasan:
Ambil input 1-diindeks, buat koordinat x / y dan indeks ke ascii art.
sumber
R , 62 byte
Mungkin solusi mengejutkan pendek untuk tantangan teks dalam R, karena kita tidak perlu benar-benar membaca seluruh teks menjadi sebuah matriks.
Cobalah online!
sumber
\ / \ /> , 123 byte
Masukan terdiri dari satu baris variabel input ruang-delimited
x
,y
,w
, danh
, diikuti oleh seni ascii pada baris berikutnya dan seterusnya.Penjelasan
Kode ini menggunakan kemampuan \ / \ /> untuk memodifikasi sendiri dengan menempatkan ascii art ke dalam kode itu sendiri, yang pada akhirnya tampak seperti ini:
Itu kemudian mengambil karakter dalam persegi panjang yang ditentukan dari kode dan mengeluarkannya.
sumber