Tulis program yang menggunakan blok teks segi empat yang terdiri dari X
's dan .
' s, seperti ini kasar A
:
......
..XX..
.X..X.
.XXXX.
.X..X.
.X..X.
Keluarkan representasi dari grid ini diputar 45 derajat berlawanan arah jarum jam dengan menggambar garis miring - maju atau mundur tergantung pada konteks - di mana-mana sebuah X
batas .
atau sisi grid (dengan ruang mengisi sisanya):
/\/\
/ /\ \
\/ / \
/\/ /\ \
\ / \/
\ \
\ \
\/
Jumlah spasi tambahan dan X
garis depan (dan baris baru) tidak masalah selama bentuk 's dalam input dipertahankan oleh garis miring. Tidak masalah memangkas baris atau kolom .
tambahan.
Untuk I / O Anda dapat menggunakan kombinasi parameter stdin / stdout / file / command line. Misalnya skrip Anda mungkin menggunakan nama file dari X.
pola dan menulis ulang file dengan pola garis miring. Atau skrip Anda mungkin mengambil X.
pola dari stdin baris demi baris (menekan d
saat selesai) dan mengeluarkan hasilnya ke stdout.
Input mungkin besar secara sewenang-wenang, tetapi Anda dapat menganggapnya selalu diformat dengan baik.
Tidak ada karakter selain / \
dan baris baru harus dalam output apa pun.
Mencetak gol
Kode terpendek dalam byte menang. Gunakan https://mothereff.in/byte-counter sebagai penghitung byte jika Anda menggunakan karakter non-ASCII.
Bonus: Minus 50 byte jika Anda dapat mengubah (mengganti, tidak menghapus) satu karakter dalam program Anda sehingga menghasilkan garis miring yang diputar 45 derajat searah jarum jam , misalnya:
/\/\
/ /\ \
/ \ \/
/ /\ \/\
\/ \ /
/ /
/ /
\/
Sampel input
XXXXXXXXX
X.......X
X.XXXXX.X
X.X...X.X
X.X.X.X.X
X.X...X.X
X.XXXXX.X
X.......X
XXXXXXXXX
XXX...XXX....XXX...XXX
X..X..X..X..X.....X...
XXX...XXX...X.....X.XX
X.....X.....X.....X..X
X.....X......XXX...XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...X
X...X...............X...............X...........X...................X...X
X...X...XXXXXXXXX...X...XXXXX...XXXXXXXXX...XXXXX...XXXXX...XXXXX...X...X
X...............X.......X...X...........X...........X...X...X.......X...X
XXXXXXXXX...X...XXXXXXXXX...XXXXXXXXX...XXXXX...X...X...X...XXXXXXXXX...X
X.......X...X...............X...........X...X...X...X...X...........X...X
X...X...XXXXXXXXXXXXX...X...X...XXXXXXXXX...XXXXX...X...XXXXXXXXX...X...X
X...X...............X...X...X.......X...........X...........X.......X...X
X...XXXXXXXXXXXXX...XXXXX...XXXXX...X...XXXXX...XXXXXXXXX...X...XXXXX...X
X...........X.......X...X.......X...X.......X...........X...X...........X
X...XXXXX...XXXXX...X...XXXXX...X...XXXXXXXXX...X...X...X...XXXXXXXXXXXXX
X.......X.......X...X...X.......X.......X.......X...X...X.......X.......X
XXXXXXXXXXXXX...X...X...X...XXXXXXXXX...X...XXXXX...X...XXXXX...XXXXX...X
X...........X...X...........X.......X...X.......X...X.......X...........X
X...XXXXX...X...XXXXXXXXX...XXXXX...X...XXXXX...XXXXX...XXXXXXXXXXXXX...X
X...X.......X...........X...........X.......X...X...X...............X...X
X...X...XXXXXXXXX...X...XXXXX...XXXXXXXXX...X...X...XXXXXXXXXXXXX...X...X
X...X...........X...X...X...X...X...........X...............X...X.......X
X...XXXXXXXXX...X...X...X...XXXXX...XXXXXXXXX...XXXXXXXXX...X...XXXXXXXXX
X...X.......X...X...X...........X...........X...X.......X...............X
X...X...XXXXX...XXXXX...XXXXX...XXXXXXXXX...XXXXX...X...XXXXXXXXX...X...X
X...X...................X...........X...............X...............X...X
X...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
( sumber maze )
Pertanyaan Terkait:
Gambarlah kurva Hilbert menggunakan garis miring
Sejajarkan bentuk ASCII yang sejajar secara horizontal, sepanjang garis diagonal
Jawaban:
Python 2 -
236, 228, 228, 221, 250, 248246 - 50 = 196Saya menambahkan fitur bonus opsional yang mengubah arah dari searah jarum jam ke berlawanan arah jarum jam. Pada dasarnya, baris kedua hanya memutar input sebesar 90 derajat. Untuk beralih di antara kedua opsi, ganti
s=zip(...)
dengan sesuatu sepertiS=zip(...)
(yaitu menetapkan untuk variabel yang tidak akan digunakan lagi).sumber
s
denganB
olehs=B+s+B
.MATLAB - 286 - 50 = 236
Diperkecil:
Diperluas:
Kode ini dapat dikurangi lebih lanjut oleh 6 karakter (untuk mengikat lead saat ini) dengan menghilangkan pemain untuk mengetik
char
, tetapi ini menghasilkan peringatan dari MATLAB, dan saya tidak yakin apakah itu diizinkan.Ini dapat dikurangi dengan 13 karakter tambahan jika input diperlukan untuk memiliki format "mark up" seperti
['X..';'.X.';'..X']
, tapi saya tidak tahu ini diizinkan juga. Saat ini skrip hanya menerima dua angka (dimensi baris dan kolom) dan kemudian membaca dalam satu string karakter grid.Bonus
Dengan mengubah
1
panggilanx = rot90( ..., 1 );
ke a0
, transformasi berubah dari rotasi CCW 45 ° ke rotasi CW 45 °. Faktanya, semua kemungkinan rotasi 45 ° + n · 90 ° dimungkinkan dengan melangkahi parameter ini dari0
hingga3
.Keluaran sampel:
sumber
Perl - 409
Membaca dari stdin dan mencetak ke stdout.
Output contoh:
sumber