Penjelasan visual umum dari teorema Pythagoras adalah sebagai berikut:
Kotak dimaksudkan untuk mewakili kuadrat sisi panjang, dan bidang a + b = c
, seperti teorema Pythagoras.
Bagian ini yang harus Anda tunjukkan.
Tugas Anda
- Anda akan mendapatkan dua bilangan bulat sebagai input, yang dimaksudkan untuk mewakili sisi
a
danb
segitiga siku-siku (mis.3, 4
). - Anda kemudian akan membuat kotak dari panjang
a
,b
danc
keluar dari#
karakter. Contohnya di sini adalah 3:
###
###
###
- Anda kemudian akan memformat ini menjadi persamaan matematika yang menjelaskan triplet Pythagoras tertentu:
#####
#### #####
### #### #####
### #### #####
### + #### = #####
- Perhatikan bagaimana tanda
=
dan+
memiliki ruang di kedua sisi dan bagaimana semuanya ada di bagian bawah. - Anda tidak akan pernah mendapatkan nilai untuk
a
danb
itu membuatc
non-integral. - Ini adalah kode-golf sehingga kode terpendek dalam byte menang!
Uji Kasus
(Lebih banyak datang begitu saya punya waktu, ini sangat sulit dibuat dengan tangan)
3, 4
#####
#### #####
### #### #####
### #### #####
### + #### = #####
6, 8
##########
##########
######## ##########
######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### + ######## = ##########
4, 3
#####
#### #####
#### ### #####
#### ### #####
#### + ### = #####
5, 12
#############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### + ############ = #############
a+b=c
a
,b
danc
didefinisikan sebagai area kotak, maka contohnya salah.Jawaban:
Pyth,
35323130 byteCobalah online.
sumber
.i
untuk menambahkan baris kosong sebagai gantinya:j_.ts.i.imm*d\#d+Qs.aQ"+="mk4d
CJam, 49 byte
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Python 2,
134100 byteCobalah online.
Program ini mengambil input sebagai bilangan bulat yang dipisahkan koma, menghitung hipotenus menggunakan bilangan kompleks Python, lalu loop dari nilai tersebut dengan menghitung dan mencetak setiap baris saat berjalan. Trik golf utama adalah menggunakan pengindeksan string sebagai pengganti conditional untuk memilih
#
/+
/=
vs ruang.Sunting: Versi pertama adalah korban dari beberapa rekayasa berlebihan yang serius - versi ini lebih sederhana dan lebih pendek.
sumber
"# "[i>a]*a
daripada melakukannya untuk setiap variabel.Julia,
121114112 byteTidak Disatukan:
Memperbaiki masalah dan menyimpan 2 byte berkat Glen O.
sumber
JavaScript ES6,
155134140129 byteSaya sudah menulis ulang ini dengan
for
. Banyak golf masih ...Jika ada yang tidak berhasil, beri tahu saya. Saya akan memperbaikinya di pagi hari.
Diuji di Safari Nightly
Tidak Disatukan:
Penjelasan:
(Tidak diperbarui) tetapi masih cukup akurat.
DEMO
Input versi ES5 harus merupakan kumpulan angka yang valid :
sumber
a
danb
itu membuatc
non-integral."(z<b?'#':' ')
->' #'[z<b|0]
Pyth,
5149 byteMengharapkan input dalam formulir
[3,4]
.Coba di sini
AQ
- memberikan input keG, H
Js.a,GH
- Menghitung sisi miring sebagaiJ
Lj*b]*b\#;
- mendefinisikany(b)
sebagai membuat kuadrat ukuranb
(di tempat lain dalam kode,b
berarti baris baru)j_MCm_.[d\ Jcj[yJb\=byHb\+byG))b
- Membuat kotak, bantalan dengan spasi, dan transposDisimpan dua byte berkat Maltysen.
sumber
.i
nterlace daripada semua daftar itu.J
adalah di dalam lambda, yang akan dievaluasi setelahJ
digunakan pertama kali.*]
dapat diganti denganm
Ruby, 134
pendekatan garis demi garis sederhana.
Di bawah ini dalam program pengujian, dengan simbol berubah menjadi @ untuk membantu menghindari pengerasan dengan sintaksis
#{....}
("interpolasi string") yang digunakan untuk memasukkan ekspresi ke dalam string. Setiap input harus diberikan pada jalur yang berbeda.sumber
a*a+b*b
harus memotong dua byte dari perhitunganc
.C, 176 byte
C tidak akan memenangkan ini, tapi kesenangan itu sepadan.
Cukup dicetak:
gcc memungkinkan kita untuk melewatkan parameter ketiga ke utama (array variabel lingkungan), jadi kita memanfaatkannya untuk menggunakannya untuk tujuan kita.
Itu
akan setara dengan
karena
scanf
mengembalikan jumlah parameter yang berhasil dipindai.sumber
PHP,
178170168 byteInput adalah parameter GET
x
dany
. Sayangnya saya tidak bisa bermain-main dengan string yang berulang itu.$i>0
dengan$i
Tidak yakin mengapa PHP tidak suka
@echo
jadi saya harus mengorbankan 1 byte@print
.Jika SE mengacaukan penyandian, ini dimaksudkan untuk dikodekan dalam Windows-1252 (bukan UTF8).
sumber
echo
vsprint
. lihat: stackoverflow.com/questions/7094118/…APL (Dyalog Extended) ,
3329 byte SBCS-3 karena ekstensi Dyalog APL saya.
Lambda awalan anonim:
Cobalah online!
{
...}
"dfn";⍵
adalah argumen (panjang sisi)⍵*2
kotak+/
jumlah√
akar pangkat dua⍵,
argumen pertama{
...}¨
terapkan lambda anonim berikut untuk masing-masing#
root namespace⍕
format sebagai teks⍵ ⍵⍴
menggunakan argumen dua kali untuk r eshape ke dalam matriks dengan dimensi-dimensi.⍪
buat menjadi kolom' ++=',
tambahkan tiga karakter ini ke tiga baris,
ravel (gabungkan baris ke dalam daftar)⍕
format sebagai teks⊖
flip terbaliksumber
CJam, 78 byte
Pertama menghitung hypotenuse (H), kemudian, untuk setiap sisi (S), itu membangun sebuah array dari garis S yang terbuat dari:
H-S
spasi +S
tanda hubung. Akhirnya, transposes matriks.Demo
sumber
Lua5.2,
257241227222 byteio
fungsi yang terinspirasi oleh jawaban lainsumber
Arang , 24 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input sebagai array dari dua elemen. Penjelasan:
Tambahkan sisi miring ke input.
Ulangi karakter yang muncul di sebelah kanan setiap kotak dalam urutan terbalik.
Cetak karakter itu ke kiri dengan spasi.
Pop nomor terakhir dari array dan cetak kuadrat
#
s ukuran itu.sumber
PowerShell ,
139137135 byte-2 Terima kasih untuk ASCII saja
-2 terima kasih kepada Mazzy
Cobalah online!
Menghitung $ c sakit dan mungkin ada cara yang lebih baik untuk bertukar kondisional antara
#
dan. Buat daftar potongan dan gabungkan bersama-sama sambil menambahkan tanda-tanda.
sumber
$m=(" ","#")
: Coba online!Japt, 28 byte
Mengambil input sebagai array bilangan bulat.
Cobalah
sumber
05AB1E , 38 byte
Mengambil input sebagai daftar dua angka (yaitu
[3,4]
).Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
DnOt©)˜ε'#×y.Dðy×®y-.D)R}ø»
adalah usaha saya sampai saya perhatikan+
dan=
.+
dan=
memang bertanggung jawab untuk sebagian besar kode. Btw, Anda dapat golf 2 byte dalam pendekatan Anda dengan menggantiDnOt©)˜
dengannOt©ª
, seperti yang saya lakukan dalam jawaban saya saat ini. :) Saya suka Anda menggunakan.D
, meskipun.Perl 6 , 99 byte
Cobalah online!
Blok kode anonim yang mengambil dua angka dan mengembalikan string penuh dengan baris baru terdepan dan tiga spasi terdepan serta satu mengekor di setiap baris.
Jika kita dapat menggunakan karakter lain bukan
#
, maka saya dapat menyimpan byte dengan mengganti'#'
dengan\*
.sumber
C # (.NET Core) ,
221, 194 byteIni terasa terlalu lama. Versi ini hanya loop untuk membangun string.
EDIT: Ascii-Only dengan golf -27 byte yang bagus menggunakan konstruktor string untuk penambahan karakter serial! Juga, untuk menunjukkan saya menggunakan Math.Sqrt bukan System.Math.Sqrt. Ini sudah disesuaikan!
Cobalah online!
sumber
System.Math
tidakMath
jika Anda tidak menggunakan interaktif