Triangularity adalah esolang baru yang dikembangkan oleh Mr. Xcoder di mana struktur kode harus mengikuti pola yang sangat spesifik:
- Untuk
n
baris kode, pasti ada2n-1
karakter program di dalamnya. Ini menyebabkan bentuk segitiga / piramida, dengan baris pertama hanya memiliki satu karakter dan sisanya bertambah dengan penambahan 2. - Setiap baris harus diisi dengan
.
s di kiri dan kanan, sehingga karakter dipusatkan pada garis mereka dan semua garis empuk dengan panjang yang sama. Jikal
didefinisikan sebagai jumlah baris dalam program, setiap baris dalam program harus memiliki panjang2 * l - 1
Misalnya, program di sebelah kiri valid, tetapi program di sebelah kanan tidak:
Valid | Invalid
|
...A... | ABCDE
..BCD.. | FGH
.EFGHI. | IJKLMN
JKLMNOP | OPQRS
Ketika diletakkan dalam struktur yang valid, namanya menjadi jelas.
Tugas
Tugas Anda adalah mengambil string baris tunggal sebagai input, mewakili kode Triangularity, dan mengeluarkannya dikonversi menjadi kode yang valid seperti yang dijelaskan di atas.
Spesifikasi untuk I / O:
- Input hanya akan berisi karakter dalam kisaran
0x20 - 0x7e
- Panjang input akan selalu berupa angka kuadrat dan dengan demikian dapat dipadatkan dengan baik.
- Anda harus menggunakan titik-titik untuk bantalan keluaran, bukan sesuatu yang lain.
Anda dapat input dan output melalui metode apa pun yang dapat diterima . Ini adalah kode-golf sehingga kode terpendek dalam byte menang!
Uji kasus
input
----
output
g
----
g
PcSa
----
.P.
cSa
DfJ0vCq7G
----
..D..
.fJ0.
vCq7G
7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0
QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef
ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@
ab.c
----
.a.
b.c
Bagi mereka yang tahu Triangularity, Anda akan melihat dari test case terakhir bahwa string tidak harus ditangani
code-golf
string
code-golf
combinatorics
code-golf
math
number
code-golf
matrix
code-golf
string
decision-problem
code-golf
internet
code-golf
number
number-theory
integer
expression-building
code-challenge
primes
cops-and-robbers
obfuscation
code-challenge
primes
cops-and-robbers
obfuscation
code-golf
string
balanced-string
code-golf
quine
code-generation
code-golf
matrix
code-golf
tips
c#
code-golf
ascii-art
code-golf
ascii-art
source-layout
code-golf
quine
source-layout
popularity-contest
language-design
code-golf
array-manipulation
subsequence
code-golf
matrix
math
code-challenge
game
graph-theory
atomic-code-golf
code-golf
number
integer
polynomials
equation
code-golf
array-manipulation
sorting
caird coinheringaahing
sumber
sumber
Jawaban:
Triangularity , 127 byte
Cobalah online!
Penjelasan
Menghapus karakter yang menggantikan padding, kita mendapatkan program berikut:
... Yang mana cukup panjang, bukan? Mari kita hancurkan menjadi beberapa bagian.
Menghasilkan bilangan bulat [0 ... √len (input))
Menghasilkan titik-titik
Memotong karakter di depan
Memotong karakter di akhir
Mengakhiri loop dan mencetak dengan cantik
sumber
J
di akhir dan menghasilkan array garis. Namun, tidak tahu apakah itu akan menyelamatkan Anda, jika akhir baris terakhir harus diisi dengan.
untuk mengisi ruang yang tersisa.f
diperlukan karena range tidak dapat menerima argumen float (bahkan dengan.0
) 2) MenyingkirkanJ
tidak menyimpan byte karena padding, jadi saya memilih format output yang lebih cantik.Japt ,
151410 byteMenghasilkan array garis.
Cobalah | Periksa semua test case
Penjelasan
Solusi Asli
Cobalah
sumber
Sekam , 15 byte
Cobalah online!
Penjelasan
sumber
05AB1E ,
201918 byteMenyimpan satu byte berkat Magic Octopus Guci
Cobalah online!
Penjelasan
sumber
ÅÉ
untuk kemungkinan dapat membantu?g;ÅÉ£Rvy'.N×.ø}r»
,? Tapi bukan itu karena itu tidak benar lol.ÅÉ
pasti akan membantu jika kita bisa mengetahui panjang baris bawah dalam 2 byte. Saya tidak tahu apakah kita bisa. Mungkin ada cara lain untuk menggabungkannya juga.)R
bukannyar
yang tidak menyimpan setiap byte: /Python 2 , 83 byte
Cobalah online!
sumber
Jelly ,
2219 byteTautan monadik yang mengembalikan daftar daftar karakter (garis)
Cobalah online!
Bagaimana?
sumber
JavaScript (ES7),
8278 byteUji kasus
Tampilkan cuplikan kode
Berkomentar
sumber
05AB1E , 25 byte
Cobalah online!
sumber
MATL , 21 byte
Cobalah online!
Penjelasan
Pertimbangkan input
'DfJ0vCq7G'
sebagai contoh. Isi tumpukan ditampilkan dipisahkan oleh koma, dengan elemen teratas yang terakhir. Baris dalam array 2D menggunakan tanda titik koma sebagai pemisah.sumber
Bersih ,
107948988 byteCobalah online! Contoh penggunaan:
@[]1 ['ABCDEF"$%& G8"F@']
.sumber
Haskell ,
8468 byteCobalah online!
Contoh penggunaan:
[]%1 $ "abcd"
menghasilkan daftar garis[".a.","bcd"]
.sumber
Perl,
5652 byteTermasuk
+3
untuk-p
Berikan input pada STDIN (pada prinsipnya tanpa baris akhir, tetapi itu hanya penting untuk input kosong)
sumber
-p
biaya hanya 1 byte'
. Tetapi kode ini tidak, jadi perlu dimasukkan ke dalam file (atau melarikan diri pada commandline) yang membutuhkan 3 karakter tambahan dibandingkan dengan#!
baris normal . Jadi dalam hal ini adalah+3
(untuk kode normal Anda akan melihat saya memang hanya menghitung+
untukp
)Merah ,
227203 byteCobalah online!
Tidak Disatukan:
sumber
Retina ,
887271 byteCobalah online!Sunting: Disimpan
1213 byte berkat @MartinEnder. Penjelasan:Pisahkan karakter pertama ke dalam barisnya sendiri untuk membuat bola bergulir.
Potong setiap baris dua karakter lebih lama dari yang sebelumnya.
Kiri-pad paruh pertama setiap baris, secara efektif memusatkan mereka.
Pad kanan semua garis.
sumber
Arang ,
2119 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 2 byte dengan menemukan
SquareRoot
. Penjelasan:sumber
Python 2 , 84 byte
Cobalah online!
sumber
Bersihkan , 123 byte
Cobalah online!
sumber
Ruby ,
7366 byteCobalah online!
-5 byte: Mengembalikan array string daripada mencetaknya
-2 byte: Deklarasikan
z
di tempat dan bukan sebelumnyaTidak Disatukan:
Mendeklarasikan variabel
r=q-1
sehingga saya bisa ambils[r*r...q*q]
menyimpan tepat nol byte.Menggunakan
.center
bukannya padding secara manual juga menghemat nol byte, tapi saya lebih suka.sumber
Stax , 19 byte
Jalankan dan debug itu
Setara ASCII:
sumber