Diberikan string input yang panjang 2
atau lebih panjang yang hanya terdiri dari karakter alfabet [A-Z]
atau [a-z]
(pilihan Anda jika semuanya huruf besar atau semua huruf kecil), menghasilkan string karakter yang berkelanjutan membentuk pola berlian ganda.
String input dimulai pada garis tengah dan memanjang ke bawah dan ke kanan pada diagonal sampai akhir string input tercapai. Kemudian, polanya berlanjut ke atas dan ke kanan pada diagonal hingga Anda berada jauh di atas garis tengah sebagai panjang dari string input minus 1. Lanjutkan ke bawah dan ke kanan kembali ke garis tengah, lalu ke bawah dan- kiri, lalu atas-dan-kiri (pergi "di belakang" karakter tengah), dan akhirnya turun-dan-kiri kembali ke karakter awal.
Itu sedikit bertele-tele, dan itu lebih baik ditunjukkan oleh beberapa contoh:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Lihat bagaimana YOU
mulai di garis tengah dan ikuti ke bawah dan ke kanan, lalu ke atas dan ke kanan, dll., Hingga kembali ke awal. Perhatikan terutama bagaimana Y
pada bagian atas dan kiri "belakang" O
dan karena itu tidak ditampilkan.
Beberapa contoh lebih lanjut:
"HI"
I I
H H H
I I
"TEST"
E E
S T T S
T T T T
T S T
E E E E
S T T S
T T
"HELLO"
L L
O L E L
H E H O
E H O H
H L E
E L L L
L E L L
L H E O
O H
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Input dijamin setidaknya terdiri dari dua huruf (yaitu, Anda tidak akan pernah menerima
""
sebagai input). - Anda dapat mencetaknya ke STDOUT atau mengembalikannya sebagai hasil fungsi.
- Program lengkap atau fungsi dapat diterima.
- Berapapun ruang kosong ekstranus dapat diterima, asalkan karakter berbaris dengan tepat (mis., Merasa bebas untuk mengisi sebagai persegi panjang).
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Jawaban:
Arang , 17 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Gambarlah sepanjang jalan.
Gambarlah ke arah ↘↗↗↘↙↖↖↙ (
<
dan>
merupakan singkatan untuk kedua pasangan, tetapi pasangan lainnya tidak memiliki singkatan.)Setiap segmen jalur memiliki panjang yang sama, termasuk ujung, dari panjang input.
Gunakan input sebagai teks yang akan ditulis di sepanjang jalan.
Cetak dua bagian pertama dari lintasan lagi sehingga karakter tengah benar.
sumber
05AB1E , 12 byte
Cobalah online!
sumber
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157 155154 byteMengembalikan matriks karakter.
Cobalah online!
Bagaimana?
Indeks berbasis karakter pusat 0 yang harus dilewati dalam bentuk berlian adalah:
Berkomentar
sumber
JavaScript (ES6), 136 byte
Mengembalikan array dua dimensi. Bekerja dengan menggambar string ke dalam array yang secara langsung menghitung koordinat tujuan yang bekerja mundur dari ujung sehingga sel pusat ditimpa secara otomatis. Penjelasan:
Input string.
Jarak antara "memantul", juga setengah dari indeks baris terakhir dan satu kurang dari panjangnya.
Indeks kolom terakhir, juga setengah dari panjang teks untuk menggambar.
Array ruang.
Hitung mundur dari sel terakhir ke yang pertama.
Panggilan rekursif untuk memproses sel yang tersisa.
Hitung baris sel ini.
Hitung kolom sel ini dan karakter yang ada di sana.
Selesai dengan mengembalikan array.
Mulai dari akhir teks.
sumber
J ,
797775 byteCobalah online!
sumber
C (dentang) ,
201196188 byteCobalah online!
-13 saran @ceilingcat
sumber
Python 2 , 137 byte
Cobalah online!
Program lengkap yang mengambil string sebagai input saat mencetak versi berlian.
sumber