Tugas
Diberikan satu karakter yang dapat dicetak non-spasi, buat representasi persegi 3x3 dari input itu. Misalnya, jika inputnya adalah #
, maka outputnya adalah:
###
# #
###
Aturan
- Format outputnya ketat, meskipun baris baru tertinggal diperbolehkan. Ini berarti bahwa ruang di tengah diperlukan, dan juga bahwa dua karakter baris baru yang memisahkan tiga garis diperlukan.
Testcases
Memasukkan: #
Keluaran:
###
# #
###
Memasukkan: A
Keluaran:
AAA
A A
AAA
Memasukkan: 0
Keluaran:
000
0 0
000
Mencetak gol
Ini adalah kode-golf . Jawaban terpendek dalam byte menang.
Jawaban:
Arang ,
53 byteCobalah online! Sunting: Disimpan 40% berkat @carusocomputing. Penjelasan:
sumber
B³S
untuk menipu omong kosong hidup keluar dari ini.Wortel , 11 byte
Cobalah online!
Program berada dalam mode caret, di mana
#
s diganti dengan input.sumber
Python 2 , 32 byte
Cobalah online!
Untuk
s='a'
: tengahs+'\n \n'+s
menghasilkana\n \na
dans.join
mengubahnya menjadi (huruf tebal adalah yang menambahkan), karena menerima string sebagai iterable, maka ia dikelilingi dengan dua karakter yang hilangaa\na a\naa
a
.join
.join
sumber
3*c+c.join('\n \n')+3*c
ikatan metode yang sama di 32.)MATL , 5 byte
Cobalah online!
Penjelasan
sumber
05AB1E , 8 byte
Cobalah online!
Gagasan asli menggunakan 30 sebagai angka biner (belum selesai, orang lain mencoba ini di bahasa lain):
05AB1E , 12 byte
Cobalah online!
sumber
Python 3.6 , 33 byte
Cobalah online!
sumber
import sys
dan kemudiansys.version
di repl, itu mengembalikan 3.6.1 daripada 3.5.2. Tidak tahu mengapa dikatakan 3.5.2 di atas itu, sepertinya mereka telah membuat kesalahan di sana!RPL (Reverse Polish Lisp) , 60 karakter
(Perhatikan bahwa "→" adalah satu karakter pada HP48 dan kalkulator yang kompatibel)
Secara visual akan mewakili apa yang Anda inginkan dengan memiliki tiga item di tumpukan:
Jika Anda bersikeras mengembalikannya sebagai satu string, Anda harus menambahkan karakter baris baru juga dan menggabungkan string, dibiarkan sebagai latihan untuk tester berikutnya.
Penjelasan:
→STR
: Buat objek terakhir di tumpukan menjadi string. (Jadi input bisa berupa apa saja, misalnya angka.)1
4
: Dorong nomor1
dan4
ke tumpukan.START [...] NEXT
: Seperti untuk loop tetapi tanpa akses ke variabel counter. Mengambil dua angka dari tumpukan (di sini, kami baru saja mendorong1
dan4
) dan mengeksekusi kode[...]
waktu yang sesuai (di sini, empat kali).DUP
: Gandakan entri terakhir di tumpukan." "
: Dorong tali(yaitu string dengan satu spasi putih) ke stack.
+
: Ambil dua objek dari tumpukan dan kembalikan bersama-sama, untuk string: Disatukan.4
: Dorong nomor itu4
ke tumpukan.ROLLD
: Mengambil elemen terakhir (di sini:4
yang baru saja kita dorong) dari tumpukan dan menggulung elemen berikutnya sejauh ke bawah tumpukan seperti yang baru saja kita ambil dari tumpukan.SWAP
: Menukar dua elemen tumpukan terakhir.2
: Dorong2
ke tumpukan.PICK
: Mengambil elemen (di sini:2
Kita baru saja mendorong ke stack), menafsirkannya sebagai angka n, dan menyalin elemen ke-n dari stack.sumber
JavaScript, 28 byte
Cobalah
sumber
c+'\n'+c
sementara.Jelly , 8 byte
1 byte berkat Erik the Outgolfer.
Cobalah online!
sumber
x4µ©;⁶;®œs3Y
selama 12 byte karena saya tidak tahu bagaimana menghindari pengulangan melipatgandakan seluruh langkah menengah saya tapi bagus!K
untuk dilakukanj⁶
. Oh, dan ada cara cepat,,`
untuk mengubah angka dua menjadi satu angka dengan menggunakan argumen yang sama di kedua sisi.Java 7,
5655 byte-1 Terima kasih kepada Leaky Nun karena menunjukkan ruang yang saya lewatkan
Cukup ganti periode dengan karakter yang diberikan, untuk input #:
Cobalah online!
sumber
PHP, 32 Bytes
Cobalah online!
sumber
<?=$a=$argn,"$a$a\n$a $a\n$a$a$a";
(break baris nyata bukan tentu saja) memiliki jumlah byte yang persis sama.sed,
2818 byteCobalah online!
sumber
:
. Tetap.Brain-Flak ,
7670 + 1 = 71 byteMembutuhkan
-c
benderaCobalah online!
sumber
(()()()()()){}
dengan([])[]{}
.Pyth, 7 byte
Coba ini secara online.
Penjelasan:
sumber
Brain-Flak ,
61, 59 byteCobalah online!
Ini adalah 58 byte kode
+1
untuk-c
flag yang memungkinkan input dan output ASCII.Penjelasan:
sumber
C (gcc) ,
4947 byteDisimpan 2 byte berkat 2501!
Cobalah online! memiliki baris baru
sumber
for(j=11;j;)...
Python 3 , 34 byte
Cobalah online!
sumber
lambda x:x*3+'\n%s '%x+x+'\n'+x*3
Oktaf , 36 byte
Cobalah online!
Penjelasan
Ini menciptakan matriks char 3x3 dengan input char diulangi, dan menetapkan entri ke-5 dalam urutan kolom-utama (yaitu pusatnya) menjadi
32
(ASCII untuk spasi).sumber
Pyke , 5 byte
Cobalah online!
sumber
Ruby ,
2725 byteDisimpan 2 byte berkat Level River St
Cobalah online!
sumber
f=...
) lalu menyebutnya denganf.call(...)
"\n"
untuk menghemat 1 byte. Penggunaan$/
yang lebih baik lagi yang merupakan variabel khusus yang disetel ke baris baru secara default - menghemat 2 byte.tr
solusinya. kerja bagusBrainfuck, 40 byte
Cobalah online! Membutuhkan implementasi yang dapat mengakses kiri posisi awal.
Juga lihat: jawaban brainfuck Graviton yang mengambil pendekatan yang berbeda (tetapi lebih lama).
Penjelasan:
Brainfuck dapat melakukan banyak trik keren dengan set instruksi yang terbatas. Sayangnya, jawaban ini tidak menggunakan salah satunya, karena lebih murah (dalam hal byte) untuk hanya meng-hardcode semuanya.
# = karakter input, _ = spasi (ASCII 32), \ n = baris baru (ASCII 10)
Hasil dalam kotak cantik ini (untuk masukan '+'):
sumber
05AB1E ,
76 byte-1 byte berkat carusocomputing.
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
ж¹ðJû
untuk 6 byte.Pyth , 11 byte
Cobalah online!
Penjelasan:
sumber
> <> ,
2423 byteCobalah online!
sumber
Swift3, 50 byte
Ini menggunakan operator ternary untuk mencetak string yang berbeda, tergantung pada barisnya.
Cobalah online
sumber
V , 8 byte
Cobalah online!
sumber
<M-h>ollow
Yang memungkinkan Anda membuka bagian dalam kotak Anda: Cobalah secara online!C #, 50 byte
Kasus cobaan:
sumber
Console
yaituSystem.Console..
Vim, 9 penekanan tombol
Dengan asumsi char input hadir dalam buffer, vim membuatnya mudah
Mungkin ada beberapa perintah penggunaan vim sihir di sini (sepertinya selalu ada beberapa) jadi saran perbaikan dipersilahkan. Hanya satu penekanan tombol di belakang V!
sumber
Z80 atau 8080 Assembly, 21 byte kode mesin
Asumsikan memori yang dipetakan perangkat I / O:
Tidak perlu penerjemah!
Hexdump:
di mana alamat input pada FF00h dan alamat output dipetakan pada FF01h. Alamat aktual akan tergantung pada perangkat keras yang sebenarnya. Tentu saja ini mengasumsikan I / O adalah memori yang dipetakan. Jika dipetakan I / O, akan butuh beberapa byte tambahan karena instruksi I / O Z80 & 8080 masing-masing dua byte. Ini juga mengasumsikan perangkat output menafsirkan 0Ah sebagai baris baru dan tidak memerlukan CR (0Dh) yang akan menambah 4 byte tambahan ke program.
sumber
J-uby ,
2220 byte-2 byte terima kasih kepada @Jordan
Penjelasan
String#tr
adalah metode ganti karakter-bijaksana Ruby. Pertama&
mengikat:tr
untuk"...\n. .\n..."
, dan yang kedua sebagian berlaku'.'
untuk itu. Secara efektif, ini->s{"...\n. .\n...".tr('.',s)}
sumber
:tr
bekerja sebaik di:gsub
sini?