Poster lama pertama kali bersembunyi di sini.
Tulis program yang membutuhkan 3 input: X, Y dan Z.
- X = lintas (kolom)
- Y = turun (baris)
- Z = Penanda Lokasi
Program kemudian harus mencetak grid visual X menyeberang dan Y turun. Kisi ini dapat dibuat dari karakter apa pun kecuali "+". Setiap 'lokasi' diberi nomor indeks, dihitung dari 1 pada koordinat 1, 1 melintasi dan kemudian turun hingga akhir.
X dan Y akan selalu setidaknya 3, dan Z tidak akan pernah lebih besar dari X * Y
.
Z akan mewakili lokasi yang dicetak sebagai "+", di lokasi serta 1 karakter kiri, kanan, atas dan bawah. Sebagai contoh:
+
+++
+
Akhirnya, jika karakter + akan memotong tepi (paling atas, paling kiri, paling kanan dan / atau paling bawah), maka + harus memantul kembali di sepanjang sumbu yang sama dan melimpah di sisi lain.
Contoh: Input = 5, 5, 13
-----
--+--
-+++-
--+--
-----
Input = 10, 10, 10
-------+++
---------+
---------+
----------
----------
----------
----------
----------
----------
----------
Input = 10, 10, 21
----------
+---------
+++-------
+---------
----------
----------
----------
----------
----------
----------
Sunting: contoh non persegi 16,3,32
---------------+
-------------+++
---------------+
Saya pikir saya sudah membahas semuanya. Seharusnya tidak ada batasan untuk input, tetapi jika program Anda mengharuskan, tutup di 64 * 64.
Poin bonus (dapatkah saya melakukannya?): Input Z tidak boleh> X * Y, tetapi jika lebih besar dari Y * Z, maka output pusat + ke tengah grid.
EDIT: Input Z tidak boleh lebih besar dari X * Y
Edit 2 :. Buat beberapa perubahan pada X dan Y agar mudah-mudahan menjadi lebih jelas
Ini golf kode, kode terpendek menang.
Jawaban:
Python 2,
172171 byteSunting: Disimpan 1 byte dengan mengonversi fungsinya.
Sebelumnya (lebih mudah dibaca):
sumber
JavaScript (ES6), 165 byte
sumber
Befunge, 175 byte
Cobalah online!
Baris pertama (dan kelanjutan singkat ke baris kedua) adalah di mana parameter dibaca dan beberapa konstanta dihitung - koordinat lokasi ( lx , ly ), serta koordinat yang disesuaikan yang menjelaskan memantul dari tepi:
Baris kedua dan ketiga berisi loop utama di atas tinggi dan lebar grid, jalur eksekusi dari kanan ke kiri pada awalnya sebelum berbalik ke garis ketiga ke kiri ke kanan. Untuk setiap koordinat dalam kotak ( gx , gy ) kami menghitung kondisi berikut:
Jika kondisi itu benar, kita dorong a
"+"
ke stack, jika salah kita dorong a"-"
. Untuk menghindari percabangan di sini, kami benar-benar hanya mendorong43 + 2 * !condition
(43 menjadi nilai ASCII plus dan 45 menjadi minus).Setelah loop selesai, bit terakhir kode hanyalah rutin output standar yang mencetak semua yang ada di stack.
sumber
JavaScript (ES6), 170
Masih golf
Kurang golf
Uji
sumber