Anda tidak ingin membayar uang untuk program arsitektur mahal, jadi Anda memutuskan untuk membuat sendiri. Anda memutuskan untuk menggunakan ASCII untuk mendesain bangunan Anda. Program Anda akan mengambil string tunggal yang diformat dengan cara tertentu, dan program akan menampilkan bangunan.
Memasukkan
Input terdiri dari satu baris karakter. Dapat diasumsikan hanya berisi huruf a-j
, angka 1-9
, dan simbol -
dan +
.
Deskripsi Output
Untuk setiap huruf a-j
, program akan menampilkan garis vertikal sebagai berikut. Kami akan menyebutnya kolom.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Misalnya, input abcdefgfedefghgfedc
akan menghasilkan:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Surat dapat diawali dengan bilangan bulat positif n
, yang akan menambahkan n
karakter spasi putih di bawah kolom. Kami akan menyebutnya offset. Misalnya, menggunakanS
untuk memberi notasi spasi putih, input 3b2b3b
akan menampilkan:
+ +
+++
S+S
SSS
SSS
Surat juga dapat diawali dengan bilangan bulat negatif-m
, yang akan menghapus karakter m
non-spasi bawah kolom (tidak menggantikannya dengan spasi putih, menghapusnya seluruhnya). Kami akan menyebutnya sepotong. Misalnya input-1j-2j-3j-4j-5j-6j-7j-8j
akan menghasilkan:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Offset dan sepotong dapat diterapkan ke baris yang sama, tetapi offset harus pergi dulu. Dengan kata lain, huruf dapat diawali dengan n-m
, di mana n
ukuran offset, dan m
ukuran irisan. Misalnya, gunakan S
untuk memberi notasi spasi putih, input '2-4j' akan menampilkan:
.
.
.
*
*
*
S
S
Terakhir, +
operator yang digunakan antara dua kolom menunjukkan bahwa mereka harus ditumpuk satu sama lain dalam kolom yang sama, bukan dalam kolom terpisah. Misalnya, input `2-4ja 'menghasilkan:
.
.
.
*
*
*
S
S+
Sedangkan 2-4j+a
output input :
+
.
.
.
*
*
*
S
S
Berikut adalah contoh input:
abiehef+ehfhabc
Dan output yang dihasilkan:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Tampak seperti menara kastil yang sudah hancur.
Berikut ini input sampel lain:
6b5b+a6b1-2d+3-4f1-2d+-2c+2-4f+1-2d+-2c2-2d+1-4g+1-2c+b+-2c+-4e2-7j+-4g+d+-2c+-4f2-7j+-5h+b+-2c+a+-3f2-7j+-7i+-4e+b+b+a+-4f2-7i+a+-7h+-4f+b+b+a+-4f2-7j+-7h+-4f+a+-7h+a+-7i+-4f2-7j+-7i+-6h+a+-7i+b+-4e3-7i+a+-7h+-4e+a+-7h+b+1-7h3-7j+1-4f+-7h+b+-4f+a3-7j+2-4f+a+-4f+b3-2d+-2d+3-4g+b3-2d+-2d+-2c
Dan output yang dihasilkan:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Seharusnya Mario tapi ternyata tidak terlalu baik ...)
Jika spesifikasinya masih tidak jelas, saya memiliki implementasi non-golf ditulis dengan Python 2.7. Anda dapat menjalankannya dan bereksperimen untuk merasakan bagaimana spesifikasi bekerja. Anda juga dapat memilih untuk menertawakan keterampilan pemrograman saya.
Ini adalah kode-golf, sehingga entri terpendek menang. Ajukan pertanyaan dalam komentar jika tidak jelas.
a+a+a+a+a
akan menampilkan lima tanda plus di atas satu sama lain.Jawaban:
Ruby,
223214 byteItu tadi menyenangkan. :)
Meskipun seharusnya cukup jelas, saya menemukan cara baru untuk melakukan tantangan ini di mana string telah dibangun dari kolom: lakukan saja dalam baris, dan transpos susunan karakter sebelum bergabung dengan semuanya.
sumber
puts (0..z=g.map(&:size).max-1).map{|i|g.map{|y|(v=y[z-i])?v:?\ }*''}
. Tapi mungkin tidak begitu menyenangkan tanpa transpos.Cobra - 473
Saya tidak berpikir Cobra akan memenangkan salah satu dari ini: /
Semua bagus dan berkomentar:
EDIT: Baru sadar ini terlihat mirip dengan solusi Ruby. Pemikir hebat berfikir yang sama?
sumber
Lua - 451
Tidak ada yang spesial. Itu menyenangkan untuk mengubah nama fungsi butt-load untuk sekali sekalipun. Saya akan mengedit kode yang ungolfed nanti.
Cobalah di sini. Output sampel:
sumber
PowerShell ,
214212209206200 byte-3 byte terima kasih @Veskah
Cobalah online!
Versi yang kurang golf:
sumber
(-?.)
seharusnya bekerja jugaPython 3, 268 byte
Sebagian besar ungolfed:
sumber