Anda harus membuat polyglot yang menampilkan kuadrat input dalam satu bahasa dan akar kuadrat input dalam bahasa lain. Jawaban terpendek dalam byte menang!
Anda harus memiliki ketelitian minimal 3 tempat desimal, dan input akan selalu berupa float positif.
auto
berarti "mengalokasikan pada tumpukan". Kata kunci ini cukup tidak berguna karena itu adalah defaultnya, jadi C ++ menggunakan ulang untuk berarti sesuatu yang lain. Namun, dalam C, ia tidak menyatakan pendapat apa pun tentang tipep
(ini adalah kelas penyimpanan, bukan tipe), sehingga dianggap sebagaiint
default (int
perilaku default ini tidak disarankan saat ini, dan kemungkinan hanya ada karena beberapa pendahulu C tidak memiliki tipe data sama sekali, tetapi kompiler masih memahaminya). Dan tentu saja,(int)0.5
adalah 0.n^2
.Python 2 & Python 3,
2321 bytePython 2.x menghasilkan
n^2
, Python 3.x menghasilkansqrt(n)
.2 byte disimpan berkat @Dennis!
sumber
or
?/
apakah pembagian integer (1/2==0
). Di Py3, ia melakukan pembagian titik mengambang (1/2==0.5)
.0
Adalah falsey.2sable / Jelly , 2 byte
2sable menghitung kuadrat. Cobalah online!
Jelly menghitung akar kuadrat. Cobalah online!
Bagaimana itu bekerja
2sable
Jeli
sumber
C (dentang) dan Python ,
1091076953 byteC: Coba online!
Python: Coba online!
Bekerja dengan menggunakan komentar ke polyglot. Sisanya cukup jelas.
Pertama kali menggunakan C!
sumber
return 0;
C99 dari akhir hingga C99 menyimpan pengembalian implisit 0main()
secara khusus. Sumberstdio.h
dalam kasus itu?Ohm dan Jelly , 3 byte
Output kuadrat dalam Ohm, akar kuadrat dalam Jelly.
Ohm dan Jelly menggunakan kode byte tunggal yang berbeda, sehingga program akan tampil berbeda di setiap pengkodean.
xxd hexdump dari program:
Jeli
Menggunakan codepage Jelly, nampak seperti ini:
Jelly mengambil garis paling bawah untuk menjadi tautan utamanya, dan mengabaikan tautan lain kecuali secara khusus dipanggil. Jadi di sini ia hanya melakukan root kuadrat (
½
) dan secara implisit mengeluarkannya.Ohm
Menggunakan codepage Ohm (CP437), nampak seperti ini:
²
adalah fungsi persegi, dan⌂
dan◙
keduanya terdefinisi, sehingga program hanya kotak input secara implisit membaca dan secara implisit output itu.sumber
½
byte, apa gunanya²
peta? Apakah itu hanya sampah yang masih diabaikan? Dan sebaliknya untuk Ohm? Maka tampaknya akan menjadi 2 byte.²
dalam Ohm berada pada titik kode 5. Kode titik 5 di Jelly adalah%
dan tidak melakukan apa-apa, jadi tidak masalah apa baris pertama itu. Misalkan½
di Jelly berada di 27, dan kode titik 27 di Ohm adalahJ
dan tidak melakukan apa-apa, jadi tidak masalah apa baris kedua. Jadi, jika Anda memiliki file sebesar00000101<newline>00011011
3 byte. Saya kira satu-satunya masalah adalah jika baris baru di lokasi yang berbeda di halaman kode.C89 dan C99, 47 + 3 = 50 byte
Membutuhkan
-lm
tanda (+3)C89 menghasilkan
n^2
, menghasilkan C99sqrt(n)
. Untuk mengujinya di C89, Coba online!Mendapatkan C89 untuk melakukan
sqrt
versi seharusnya mengambil lebih sedikit kode, tetapi bersikeras untuk mendeklarasikansqrt
fungsi denganint
s, jadi ini adalah yang terbaik yang bisa saya kelola.sumber
Oktaf / MATLAB,
3129 byteIni menghasilkan kuadrat dalam Oktaf, dan akar kuadrat dalam MATLAB.
Penjelasan:
Sintaksnya tentu saja identik dalam MATLAB dan Oktaf (setidaknya untuk kode kecil ini).
Ini menciptakan fungsi anonim:
sumber
Basic / Delphi - 6 karakter
Akar kuadrat dalam Dasar dan kuadrat dalam Delphi.
Anda dapat menggunakan debugger untuk memeriksa ekspresi, sehingga memenuhi persyaratan output apa pun!
sumber
x
? Anda tidak dapat menganggap itu disimpan ke suatu nilai. Tapi Anda mungkin benar-benar dapat menghapusnya(x)
, dan menandainya sebagai mengembalikan fungsi.05AB1E / Fireball , 3 byte
Byte berikut membuat program:
05AB1E menghitung akar kuadrat, kotak Fireball.
Penjelasan (05AB1E -
ý¹t
):Penjelasan (Bola Api -
²╣t
):Terkadang, membantu memiliki bahasa yang tidak lengkap;)
sumber
PHP7 + JavaScript,
626158 byteIni sebenarnya lebih menantang dari yang saya harapkan! Saya cukup terkejut dengan berapa lama kode saya.
Bagaimana cara kerjanya?
Ini berfungsi dengan memilih kode yang akan dijalankan, dari array.
Deteksi PHP dan JavaScript dibuat dengan
+![]
.Dalam PHP,
[]
(array kosong) adalah nilai falsy, sedangkan dalam JavaScript adalah nilai kebenaran (objek (kecualinull
) selalu benar, bahkannew Boolean(false)
benar!).Tapi, saya harus mendapatkannya ke nilai numerik, jadi, saya hanya menggunakan a
not
(!
) dan mengubahnya menjadi integer (dengan+
).Sekarang, PHP menghasilkan nilainya
1
, sedangkan JavaScript menghasilkan0
.Menempatkan kode di dalam array, pada indeks itu, akan memungkinkan kita untuk memilih kode yang tepat untuk bahasa yang diinginkan.
Ini dapat digunakan sebagai
[JS,PHP][+![]]
, untuk mendapatkan kode bahasa yang tepat.Pada polyglots sebelumnya, saya telah menggunakan
'\0'=="\0"
, yang adatrue
di JavaScript (karena di\0
-parsing sebagai NULL-byte) danfalse
di PHP (yang'\0'
tidak akan di-parsing sebagai NULL-byte, membandingkan string literal\0
dengan NULL-byte).Saya senang saya berhasil mengurangi cek ini
+!'0'
.Saya bahkan lebih senang tentang @rckd , yang mengurangi ke versi saat ini!
Dari sana, itu hanya
eval
kode yang diperlukan.PHP
PHP akan mengeksekusi
echo$argv[1]**.5
(setara denganecho sqrt($argv[1]);
, akar kuadrat angka), menerima nilai dari argumen ke-2 dan menampilkannya dalam output standar.JavaScript
JavaScript dijalankan
alert((_=prompt())*_)
, yang menampilkan angka kuadrat dalamalert
.Terima kasih kepada @rckd karena telah menghemat 1 byte, dan @ user59178 telah menghemat 3 byte!
sumber
echo$argv[1]**.5
daripadaecho sqrt($argv[1])
05AB1E dan Jelly , 4 byte
(05AB1E) - (Jelly)
Orang lain membuat poin yang baik, saya kira karena karakter UTF-8 tidak berbagi operasi yang sama di halaman kode yang secara teknis mereka masing-masing 2-byte untuk dikodekan. Namun, ketika melihat ini dari segi hex dump:
Dalam pengkodean CP1252 05AB1E ini menghasilkan:
Artinya masih akan menampilkan kuadrat dan berhenti, mengabaikan sisanya. Ketika byte ini disandikan menggunakan codepage Jelly:
Yang merupakan kode asli yang dimaksudkan, ketika dijalankan, menghasilkan hasil yang diinginkan dari mengambil input dan mengambil sqrt.
sumber
Ɠ
dan½
membutuhkan dua byte untuk dikodekan. Namun, urutan byte6e 71 93 0a
(nqƓ½
untuk Jelly,nq“\n
untuk CP-1252) harus berfungsi dalam kedua bahasa.½
berada di kedua halaman kode tidak memungkinkan untuk dihitung sebagai satu karena mereka operasi yang berbeda saya anggap? Saya masih kabur pada hal halaman kode keseluruhan.6e 71 93 0a
sehingga tidak ada "secara teoritis" tentang mengklaim 4 byte. Klaim saja 4 byte. Kebetulan dalam pengkodean standar 05AB1E, ia membaca satu hal yang melakukan apa yang Anda inginkan, sedangkan dalam pengkodean standar Jelly, itu membaca yang lain yang melakukan apa yang Anda inginkan. Sebagai tambahan, hanya karena 2 penyandian dapat menyandikan karakter yang sama tidak berarti bahwa karakter akan sama di keduanya. Pikirkan pengkodean seperti kode numerik dengan tabel pencarian yang sudah dibagikan dan mudah-mudahan itu akan memberi Anda model mental awal yang baik.CJam / MATL , 8 byte
Menghitung kuadrat dalam CJam ( Coba online! ) Dan akar kuadrat dalam MATL ( Coba online! ).
Penjelasan kotak di CJam
Penjelasan akar kuadrat dalam MATL
sumber
Python 2 dan Forth,
4333 byteCobalah online: Python 2 (persegi) | Keempat (sqrt)
Ini mengevaluasi ke fungsi anonim dalam Python, dan fungsi
fsqrt
bawaan di Forth. Python dapat memiliki fungsi bernamaf
untuk 2 byte lebih banyak dengan meletakkanf=
di depan lambda.Program Forth mengambil literal floating point , yang dalam Forth harus ditulis dalam notasi ilmiah. Pi terpotong ke 3 tempat desimal (
3.141
) akan ditulis seperti ini:sumber
JavaScript (ES6) / JavaScript (ES7), 52 byte
Mengembalikan kuadrat input dalam ES7 dan akar kuadrat dalam ES6. Cukup sulit untuk diuji, kecuali Anda memiliki browser yang lebih lama yang mendukung ES6 tetapi tidak ES7.
sumber
PHP dan CJam ,
302925 byteMenghitung kuadrat dalam PHP dan akar kuadrat dalam CJam. Harus dijalankan menggunakan
-r
PHP.PHP
Meningkatkan argumen baris perintah pertama (
$argv[1]
) ke daya 2 dan mengeluarkannya. Di sini$argv[1]
sebenarnya dimasukkan sebagai variabel sebaris dalam string, yang dilemparkan ke angka sebelum melakukan eksponensial. Ini karenav
ini bukan instruksi yang valid di CJam dan akan menyebabkannya salah saat parsing, tetapi memasukkannya ke dalam string tidak akan menyebabkan masalah.#
memulai komentar, jadi semuanya setelah itu diabaikan.Cobalah online!
CJam
Bagian pertama dari kode,
ECHO"$argv[1]"**2;#
mendorong banyak nilai dan melakukan banyak operasi, yang semuanya benar-benar tidak berguna. Satu-satunya hal yang penting adalah bahwa mereka tidak menyebabkan kesalahan, karena setelah itu];
, yang membungkus seluruh tumpukan dalam sebuah array dan kemudian membuangnya.Setelah itu, ia membaca ganda dari input (
rd
), dan mendapatkan akar kuadratnya (mq
), dan secara implisit mengeluarkannya.Cobalah online!
sumber
C, bahasa scripting Operasi Flashpoint , 52 byte
Dalam skrip OFP, tanda titik koma di awal baris membuat komentar, sedangkan C tidak peduli dengan tanda titik koma tambahan.
C:
Cobalah online!
Bahasa scripting OFP:
Simpan seperti
init.sqs
dalam folder misi, lalu panggil denganhint format["%1", 2 call F]
.Hasil:
sumber
Reticular / Befunge-98 , 15 byte
Bahasa 2D!
Befunge-98
Reticular
sumber
> <> / Jelly , 9 byte (kode 7 byte + 2 untuk bendera '-v' di> <>)
Sobat, saya benar-benar bersenang-senang dengan struktur tautan Jelly.
Hitung kuadrat dalam> <> , dan akar kuadrat dalam Jelly .
sumber
-v
ini, menurut pendapat saya, sejalan dengan [jawaban terpilih [( codegolf.meta.stackexchange.com/a/11431/44874 ) pada meta querstion yang menangani kasus ini. The><>
interpreter kebutuhan yang-v
dan ini adalah untuk itu doa sederhana mungkin.Python 3 + JavaScript, 101 byte
Akar kuadrat dalam JS, kuadrat dalam Python.
Bekerja pada Firefox (diuji pada FF 52) dan membutuhkan
(function(x) x)(42) === 42
sintaks yang valid. Juga memerlukan ES7 untuk**
operator.sumber
x=>x**y
? Atau Python akan tersedak itu?function
bukan kata kunci, itu adalah pengidentifikasi yang valid. Jadi saya hanya menetapkan fungsi noop untuk itu (di dalamexec
pernyataan).bash and sh, 48 byte
Pembaruan: Saya harus mengakui kekalahan. Jawaban bash / sh Digital Trauma jauh lebih elegan daripada yang ini.
bash menghasilkan
n^2
, sh menghasilkansqrt(n)
.bc
hanya dibutuhkan agarsqrt
bisa dihitung. Perbedaan perilaku adalah antara bash dan sh.OK, secara teknis "sh" yang saya gunakan masih bash, tetapi bash dalam mode "POSIX" (yang terjadi jika Anda memanggil
/bin/sh
alih-alih/bin/bash
pada sistem di mana/bin/sh
alias untuk bash). Jika hal ini terjadi pada sistem Anda, Anda dapat menguji dengan:Ini didasarkan pada salah satu perbedaan yang dijelaskan di sini: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
sumber
kill -l
(daftar sinyal yang mungkin; tidak mengubah apa pun) dibash
dansh
. Ini adalah salah satu dari banyak perbedaan yang dapat Anda temukan di sini: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.htmlQBIC / QBasic,
2618 byteDalam QBasic , dibutuhkan nomor, dan mencetak nomor yang kuadrat. Sisa kode diabaikan karena QBasic melihatnya sebagai komentar (
'
).QBIC menggunakan pernyataan input yang sama. Itu kemudian pergi untuk mencetak nomor yang sama kuadrat, kemudian naik ke kekuatan seperempat, secara efektif rooting dua kali. Ini karena
'
dilihat sebagai kode literal: Kode QBasic murni yang tidak diuraikan oleh QBIC.sumber
Jelly / Pip , 6 byte
EDIT: Ini satu byte lebih pendek untuk membalikkan operasi.
Coba Jelly online!
Jelly memulai eksekusi di bagian bawah kode ('tautan utamanya') dan melihat apakah perlu sesuatu yang lebih tinggi: ia melihat perintah untuk menyiku dan menjaga input dan output secara implisit.
Coba Pip online!
Pip mengeksekusi baris atas, mengkuadratkan (secara implisit membaca dari garis cmd) var a dan secara implisit mencetaknya. Intinya diabaikan.
sumber
PRTaVS
.Bahasa Wolfram / PHP , 25 byte
Dapatkan kuadrat angka dalam Bahasa Wolfram dan dapatkan akar kuadrat dalam PHP;
Baris pertama adalah Bahasa Wolfram. Pertama, Anda yang akan mengubah n di bilah pencarian di Wolfram Alpha sehingga kode tersebut juga merupakan input. Maka itu akan menghasilkan jawaban setelah menekan enter
Baris kedua adalah PHP, Ini mendapatkan akar kuadrat dari n yang akan dimasukkan di bilah alamat (mis. Ppcg.php.net?n=213, di mana 213 adalah nilai n)
sumber
PHP 5.6 dan PHP 7, 55 byte
PHP 5.6 menghasilkan
n^2
, PHP 7 menghasilkansqrt(n)
.sumber
macOS Bash dan sh, 24 byte
Pada Mac,
sh
yangbash
berjalan dalam modus POSIX, dan dalam hal ini sebagai per https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :Jadi untuk
sh
, variabelp
memiliki nilai^4
setelah:
dijalankan, tetapi untukbash
, variabelp
hanya memiliki nilai ini saat:
dijalankan, dan kosong setelahnya.Masih benar
bash
- benar di bawah selimut, beberapa bashism seperti<<<
herestrings masih berfungsi untuk kasing dan kasing.Bash and dash (dan utilities GNU), 27
Di Ubuntu 16.01,
sh
adalah symlink todash
, yang tidak melakukan<<<
herestrings. Jadi kami memiliki ini sebagai gantinya:Cobalah online .
sumber
Oktaf / Kardinal , 28 byte
Program ini mengkuadratkan input dalam Kardinal dan mendapatkan akar kuadrat dalam Oktaf
Cobalah online! (Oktaf)
Cobalah online! (Kardinal)
Jadi% adalah komentar baris tunggal dalam Oktaf sehingga hanya mendapat input dan mencetak akar kuadrat
Sehingga program Kardinal tidak mengalami pembagian dengan 0 kesalahan dan mati, program
telah digeser dengan spasi, yang diabaikan oleh kedua program
Penjelasan program Kardinal:
Program dimulai pada%
Ini menerima input dan menyimpan nilai sebagai aktif:
Ini menetapkan tidak aktif sama dengan aktif =
Ini mengalikan aktif dengan tidak aktif t
Akhirnya ia menghasilkan nilai aktif.
sumber
PHP / JavaScript, 43 byte
Masukan seperti:
Agak menjelaskan sendiri, tetapi apakah itu sesuai dengan aturan? Golf kode pertama saya :-)
sumber
alert(<?=$x*$x.')>'.sqrt($x)?
)CGL (CGL Golfing Language) / JS (ES6), 13 byte (tidak bersaing)
Non-bersaing karena:
CGL bukan bahasa yang valid .Karena+
danⓟ
, CGL secara teknis adalah bahasa yang valid.Kode:
JS:
Sederhana: fungsi panah anonim yang mengembalikan argumen pertama kuadrat. Kode bahasa yang tidak disebutkan namanya dikomentari.
CGL:
Ruang tanpa putus sebelum baris pertama bertindak seperti komentar. The
/
s ada-ops. Baris-
kedua berarti mengurangi jumlah tumpukan saat ini, yang secara default adalah 0. Yang kemudian menetapkannya menjadi -1, di mana input disimpan. The₂
menggantikan item pertama dalam tumpukan saat ini dengan akar kuadrat, yang sekarang di mana masukan ditempatkan. Secara default, tumpukan saat ini dikeluarkan, mengeluarkan akar kuadrat dari input.sumber