Pengguna Kamis lalu @SpookyGengar membuat kami senang dengan tantangan pertamanya tentang Membuat Kata Kuadrat . Bagaimana jika kita menggandakan jumlah sisi?
Tantangan
Ambil string sebagai input dalam format wajar apa pun yang Anda butuhkan ( string
, char
array ...) dan output representasi octogonal dari input (juga dalam format apa pun yang masuk akal:, string
daftar string
s, char
matriks ...) seperti dalam contoh berikut:
Input: golf
Output:
golf
o l
l o
f g
l o
o l
g f
o l
l o
flog
Input: HelloWorld
Output:
HelloWorld
e l
l r
l o
o W
W o
o l
r l
l e
d H
l e
r l
o l
W o
o W
l o
l r
e l
H d
e l
l r
l o
o W
W o
o l
r l
l e
dlroWolleH
Input: a
Output:
a
Input: ab
Output:
ab
b a
a b
ba
Input: code golf
Output:
code golf
o l
d o
e g
g e
o d
l o
f c
l o
o d
g e
e g
d o
o l
c f
o l
d o
e g
g e
o d
l o
flog edoc
Catatan
- Input hanya akan terdiri dari karakter ASCII yang dapat dicetak.
- Leading dan / atau trailingpaces dan baris baru dibiarkan selama bentuk octogonal dipertahankan.
- Ini adalah kode-golf , jadi semoga program / fungsi yang paling baik untuk setiap bahasa menang!
code golf
<Space>
dianggap dapat dicetak?Jawaban:
Arang , 16 byte (10 byte tidak bersaing)
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Alternatif panjang 1 fix, juga 16 byte: Versi Verbose.
Perbaikan bug Charcoal berarti bahwa kode 10-byte berikut sekarang berfungsi: Versi Verbose.
sumber
⟲
Sepertinya hanya harus melakukan ini. Lolcode golf
itu tidak berhasil?θθθ
denganθθ»θ
).code golf
? Saya pikir itu ada hubungannya dengan bagaimana Charcoal mengambil input, yang, sayangnya, mendiskualifikasi sepenuhnya dari tantangan ini karena itu tidak dapat dielakkan.JavaScript (ES6), 156 byte
Mengembalikan array karakter.
sumber
?:
!Mathematica, 247 byte
sumber
Alignment
dan Anda akan menyimpan byte dengan menggunakan menunda set (:=
) untuk mengurangi pengulangans[[i]]
dans[[-i]]
, Anda turun ke 224 byte dengan ide-ide ini: (T = Tabel; q: = s [[i]]; r: = s [[- i]]; k = Panjang [s = Karakter @ #]; Jika [k == 1, #, Kolom [Ratakan @ {#, T ["" <> {q, T ["",, k / 2-2 + i], r}, {i, 2, k}], T ["" <> {r, T ["", k + k / 2-2], q}, {i, 2, k}], T ["" <> {q, T ["", 3k / 2-1-i], r}, {i, 2, k-1}], StringReverse @ #}, Tengah] ]) & Juga, saya punya solusi alternatif yang hanya 145 byte pada saat komentar ini.Pyth ,
796965 byteSuite uji .
sumber
Japt ,
8479 byte-5 byte terima kasih kepada @ETHproductions.
Memimpin baris baru adalah bagian dari program. Mengambil string sebagai input dan mengembalikan array string.
Cobalah online! dengan
-R
bendera untuk bergabung dengan array yang dihasilkan dengan baris baru.Bukan pekerjaan paling bangga saya, tapi saya turun dari ~ 100 byte, setidaknya. Ide saya di sini adalah membuat bagian atas dan tengah, kemudian menambahkan bagian atas, diputar 180 °.
sumber
Ul É
menjadiUÅl
, dan beralih V dan W untuk menyimpan 2 byte lagi: codepen.io/justinm53/full/…AnV ?
->V-A?
, danUq £
->U£
¬
.Python 2 ,
220213 byteCobalah online!
sumber
PHP 7.1,
230 156155 byteJalankan sebagai pipa dengan
-nR
atau coba online .kerusakan
sumber
Mathematica,
168166147127 byteIni mengambil daftar string satu karakter dan mengeluarkan matriks string satu karakter.
Saya menghemat 18 byte dengan mengeksploitasi simetri untuk digunakan
-l
danCross/@l
yang mengambil sesuatu seperti produk silang dari masing-masing dari dua vektor 2D tunggal untuk dibawa{x,y}
ke{-y,x}
. Pada dasarnya, dua arah awal adalah Timur (tepi atas) dan Barat Daya (tepi kanan atas). Kemudian kami menambahkan rotasi 90 derajat berlawanan arah jarum jam denganCross
: Utara untuk tepi kiri dan Tenggara untuk tepi kiri bawah. Kemudian kita tambahkan empat bagian lainnya menggunakan-l
untuk membalik empat yang kita bahas.Anda dapat mengujinya di kotak pasir dengan sesuatu seperti:
sumber