Terinspirasi oleh pertanyaan SO ini .
Tantangan:
Memasukkan:
- Sebuah string
- Karakter A
Keluaran:
Buat seni ASCII berlian-persegi dari string di keempat arah, dengan karakter pertama dari string di tengah dan keluar. Yang ada di dalam karpet ASCII-art persegi, dengan karakter sebagai pengisi. Ini mungkin terdengar agak kabur, jadi di sini sebuah contoh:
Input: = , =
Output:string
.
..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........
Aturan tantangan:
- Input-string juga dapat berupa daftar karakter
- Output juga dapat berupa daftar garis-garis atau matriks karakter
- Input-string dan karakter dijamin tidak kosong
- String dijamin tidak mengandung karakter
- Baik string dan karakter hanya akan dapat dicetak ASCII (rentang unicode [32.126], spasi '' ke dan termasuk tilde '~')
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input: = 11111
, = 0
Output:
00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000
Input: = 12345ABCDEF
, = #
Output:
####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################
Input: = @+-|-o-|-O
, = :
Output:
::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::
Input: = AB
, = c
Output:
ccBcc
BcAcB
ccBcc
Input: = ~
, = X
Output:
~
Input: = /\^/\
, = X
Output:
XXXXXXXX\XXXXXXXX
XXXXXX\X/X\XXXXXX
XXXX\X/X^X/X\XXXX
XX\X/X^X\X^X/X\XX
\X/X^X\X/X\X^X/X\
XX\X/X^X\X^X/X\XX
XXXX\X/X^X/X\XXXX
XXXXXX\X/X\XXXXXX
XXXXXXXX\XXXXXXXX
()()()
.Jawaban:
Kanvas , 8 byte
Coba di sini!
7 byte tetapi mencerminkan sekelompok karakter.
sumber
R ,
1189592 byteCobalah online!
Terimakasih untuk:
sumber
for
loop di R, setidaknya untuk bermain golf.pmin
logika dengan penataan ulang :-)J ,
5956 byteCobalah online!
Solusi terlalu lama untuk J ... (sepenuhnya salahku)
sumber
R , versi 118 byte yang jelek
Dengan membiarkan input menjadi vektor karakter tunggal, dan mengeluarkan matriks alih-alih mencetak ascii art yang bagus.
Cobalah online!
R ,
161157 bytedisimpan 4 byte dengan menggunakan ifelse alih-alih memodifikasi kondisi
y
Cobalah online!
ungolfed dan berkomentar
hmmm, sepertinya jawaban terpanjang sejauh ini!
sumber
Python 2 ,
97969084 byteCobalah online!
sumber
05AB1E ,
1511 byteCobalah online! atau sebagai Test Suite
Penjelasan
sumber
»
ke footer. :)J ,
35 3433 byteCobalah online!
-&#
i:
1-|+/|
{: (<*-)
-&#
Indeks negatif mulai dari -1 seperti di python. Satu-satunya yang tersisa adalah menyisipkan kolom nol.
1j1( #"1
}:@
,{~
Terima kasih banyak kepada Galen Ivanov untuk algoritme.
sumber
K (ngn / k) , 38 byte
Cobalah online!
{
}
berfungsi dengan argumenx
(string s ) dany
(karakter c )|x
membalikkanx
y,'
saling tergantungy
satu sama lain+
mengubah urutan,/
concat1_
drop dulu charpada titik ini kami memiliki serangkaian panjang (
x
) contohy
diikuti oleh karakter darix
#x
panjang darix
(#x)'
jendela geser dari banyak karakter yang berurutan2{
}/
lakukan dua kali+x,1_|x
bergabungx
dengan yang terbalikx
tanpa elemen pertama, dan transposy,''
saling tergantungy
masing-masing,/'
concat masing-masing1_'
jatuhkan satu dari masing-masingsumber
Japt , 15 byte
Mengembalikan array garis
Cobalah
sumber
Arang , 15 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Awalnya dikirim sebagai komentar pada posting sandbox yang sekarang dihapus . Penjelasan:
Atur latar belakang ke input kedua
c
.Peta atas input pertama
s
untuk menghasilkan semua sufiks dan secara implisit mencetaknya pada baris yang berbeda.Merefleksikan secara horizontal dan vertikal.
Tambahkan ruang ekstra secara horizontal.
sumber
Ruby ,
958475 byteCobalah online!
Mengambil string input sebagai array karakter. Mengembalikan array string.
sumber
Bahasa Wolfram (Mathematica) , 121 byte
Cobalah online!
sumber
Japt , 16 byte
Catatan: Saya akan bermain golf :)
Cobalah online!
sumber
PowerShell , 120 byte
Cobalah online!
Beberapa hari, memiliki rentang indeks bukannya irisan benar-benar menyakitkan. Hari ini adalah salah satu dari hari-hari itu. Karena rentang siam yang berantakan ketika berhadapan dengan elemen tunggal (misalnya mengembalikan 0..0 + 1..0), casing khusus digunakan untuk menghindarinya sama sekali (dengan biaya banyak byte).
sumber
Japt , 15 byte
Cobalah
sumber
Jelly , 11 byte
Cobalah online!
ŒṘ
Y
\n
sumber
PowerShell ,
8283 byte+2 byte terima kasih Veskah: bug huruf tunggal diperbaiki
-1 byte: Aturan yang
Input-string may also be a list of characters
digunakanCobalah online!
Kurang bermain golf:
sumber
~
Pip ,
2420 byteGunakan
-l
bendera untuk mendapatkan hasil yang bisa dibaca manusia. Cobalah online!Penjelasan
Misalnya, dengan input
abcd
dan.
:sumber
Attache , 57 byte
Cobalah online! Output adalah daftar baris.
Penjelasan
sumber
Perl 6 , 79 byte
Cobalah online!
Codeblock anonim yang mengambil input curried (seperti
f(char)(string)
) dan mengembalikan daftar baris. Saya pikir pendekatan yang berbeda akan lebih pendek.Penjelasan:
sumber
APL (Dyalog Classic) ,
3231 byteCobalah online!
sumber
Perl 5 dengan
-lF
,-M5.010
, 71 bytesCobalah online!
sumber
C # (Visual C # Interactive Compiler) , 249 byte
Cobalah online!
Ini harus diperbaiki ...
sumber
JavaScript (Node.js) , 143 byte
Cobalah online!
Pemikiran yang lebih banyak akan mengarah pada penghitungan dalam hal array satu dimensi, dan lebih sedikit byte.
sumber
Kotlin , 250 byte
Catatan: Kotlin tio saat ini gagal mengembalikan kelas baru sehingga kode ini mendapat pengecualian null pointer. Ini juga terjadi untuk kode yang saya posting sebelumnya yang berfungsi pada saat itu. Saya menganggap itu pada akhirnya akan diperbaiki, tetapi tidak dapat menemukan kontak dukungan untuk melaporkan masalah ini. Itu juga bisa dijalankan di sini .
Cobalah online!
sumber
.joinToString("\n")
dari byte-count (dan melakukannya di footer di luar fungsi).Gaia , 19 byte
Cobalah online!
Penjelasan untuk diikuti.
sumber
JavaScript (Node.js) , 101 byte
Cobalah online!
sumber
Permintaan TSQL, 191 byte
Di Studio Manajemen MS-SQL Server tekan Ctrl-T sebelum menjalankan kueri ini, ini akan mengubah output ke teks.
Script ini membangun output dari kiri ke kanan dalam satu "string" yang panjang, menghitung nilai untuk diletakkan di setiap posisi. Output dibatasi hingga 4096 karakter.
Golf:
Tidak Disatukan:
Saya harus membuat beberapa perubahan untuk memformat output dalam versi online.
Cobalah online
sumber
Java (JDK) ,
213199198 byteCobalah online!
-14 bytes
terima kasih kepada @KevinCruijssen-1 byte
berkat @ceilingcatTidak disatukan
sumber
Bahasa Wolfram (Mathematica) , 68 byte
Cobalah online!
Mengambil daftar karakter (bersama dengan karakter pengisi) sebagai input, dan mengeluarkan matriks karakter.
Untuk mengambil indeks daftar karakter, kami menggunakan
list[[index]]
, yang diperluas secara internal kePart[list, index]
. Jika indeks itu valid, ekspresi itu mengevaluasi nilai pada indeks itu. Jika tidak - jika indeks bukan bilangan bulat atau di luar rentang - ekspresi tetap tidak dievaluasi.Pola paling sederhana (terpendek) yang cocok
Part[...]
tetapi bukan karakter tunggal_@__
, yang cocok dengan ekspresi apa pun dengan satu atau lebih argumen.sumber