Anda bekerja sebagai magang untuk ahli matematika yang benar - benar membenci TeX, LaTeX, dll. Sedemikian rupa sehingga dia telah memutuskan untuk meninggalkan semua pengaturan huruf apa pun dan membuat Anda melakukan semua pemformatan di ASCII. Anda bosan dengan ini setelah beberapa saat dan memutuskan untuk mulai mengotomatisasi bagian-bagiannya, dimulai dengan akar kuadrat.
Inilah cara membuat akar kuadrat:
### this is the input
###
###
_____ put a row of underscores stretching one character off either side on top
###
###
###
_____ put a diagonal of slashes in front going the height of the input
/ ###
/ ###
/ ###
_____ put a diagonal of backslashes in front of that, going up half of the input's height rounded up
/ ###
\ / ###
\/ ###
Dan itu dia!
Aturan
Anda harus membuat program atau fungsi yang mengambil string, daftar string (yaitu baris), atau array karakter, dan menampilkan input yang diubah sesuai dengan deskripsi di atas (tidak harus dengan urutan atau proses yang sama persis)
Anda dapat berasumsi bahwa input berbentuk persegi panjang jika diinginkan. Trailing whitespace tidak diperlukan atau dianulir.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Contoh:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Jawaban:
Python 2 , 196 byte
Cobalah online!
-2 byte berkat Langkah Hen
-13 byte terima kasih kepada Jonathan Allan
sumber
/
akan bekerja juga. Terima kasih.i+l//2
input()
mengevaluasi input mentah). Juga'_'*len(Q[0])+'__'
adalah'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 byte
Coba Di Sini! (
→
ditambahkan untuk kemudahan penggunaan; program mengharapkan input pada stack)sumber
Arang , 32 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Versi 29-byte yang mengasumsikan input persegi panjang:
sumber
Python 3 ,
138147 BytesVariabel 'l' adalah daftar string, setiap string adalah garis. Versi yang Dapat Dibaca:
Membentuk simbol akar kuadrat dengan V lengkap kemudian mencukur dari kiri sesuai.
Cobalah secara Online!
sumber
l
sebagai input. Anda juga harus memasukkan bagian di manal
input, baik sebagai parameter fungsi atau fungsi input (), dll. (PS jawaban Anda juga tampaknya kurang memiliki beberapa ruang-bantalan putih.)Python 2 ,
131130 byteProgram lengkap mengambil daftar garis sebagai input dengan tunjangan hanya persegi panjang (sebenarnya bahwa baris pertama adalah salah satu yang terpanjang).
Cobalah online!
sumber
Java 8, 244 byte
Solusi yang sangat panjang, tetapi mungkin paling dekat dengan Java. Lambda ini mengambil garis input sebagai a
String[]
dan mengembalikan aString
. Semua garis harus memiliki panjang yang sama.Berdasarkan contoh output, saya berasumsi bahwa tidak perlu menambahkan spasi untuk setiap baris dalam input, sehingga program tidak.
Terima kasih kepada Jonathan Allan untuk mengingatkan saya tentang
~
operator.Cobalah secara Online
Tidak disatukan
Ucapan Terima Kasih
sumber
h+a+h%2
yang Anda menggunakan dua kali dalam kode Anda:l->{int h=l.length,w=l[0].length(),a=h/2,i=w+3,x=h+a+h%2;String s="",t=s;for(;--i>0;)t+="_";for(;i++<x;)s+=" ";t=s+t;for(i=0;i<h;)t+="\n"+s.substring(0,i<a?x+~i:i-a)+(i<a?"":"\\"+s.substring(0,(h+~i)*2))+"/"+s.substring(0,i+1)+l[i++];return t;}
. (Saya juga menggunakan header & footer di tautan TIO, sehingga Anda dapat mengisolasi kodeJapt , 46 byte
Memimpin baris baru adalah bagian dari program. Input dan output adalah array string yang mewakili garis.
Cobalah online! menggunakan
-R
bendera untuk bergabung dengan array yang dihasilkan dengan baris baru.sumber
U
array dan bukan string.JavaScript (ES6), 140 byte
Mengambil input sebagai array string / mengembalikan array string.
Uji kasus
Tampilkan cuplikan kode
sumber
Perl 5 ,
177185160 byteCobalah online!
Changelog:
sumber
<>
alih-alih<STDIN>
,print" "x$f
alih-alihfor(1..$f){print" "}
, menggunakanxxx for yyy
alih-alihfor(yyy){xxx}
, menggunakan$_
dalam for for alih-alih variabel eksplisit (for$i(..){..}
) ...x$f
dan tidak berhasil: o mencoba lagi sekarang ...C ++, 291 byte
Fungsi ini mengasumsikan bahwa semua string dalam vektor dilewatkan sebagai parameter memiliki panjang yang sama
sumber
Dyalog APL, 95 byte
Cobalah online!
sumber
C, 485 byte
Program ini membutuhkan hingga 999 karakter dari input standar dan membacanya menjadi sebuah array. Ini mencetak mereka 1 pada satu waktu ke output standar dengan perubahan yang ditunjukkan oleh tantangan Anda. Ini mengasumsikan input berbentuk persegi panjang.
sumber
Perl 5 , 159 byte
Cobalah online!
sumber