Hitung kuadrat dan akar kuadrat!


48

Anda harus membuat 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.

Jawaban:



90

C dan C ++, 68 65 byte

#include<math.h>
float f(float n){auto p=.5;return pow(n,2-p*3);}

Jawaban asli:

#include<math.h>
float f(float n){return pow(n,sizeof('-')-1?2:.5);}

Untuk kedua versi, C menghasilkan n^2dan C ++ menghasilkan sqrt(n).


23
Memberi +1 sebagai "Ha!" untuk semua orang yang memperlakukan C dan C ++ sebagai hal yang sama.
DocMax

20
@ CAD97: Dalam C, autoberarti "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 tipe p(ini adalah kelas penyimpanan, bukan tipe), sehingga dianggap sebagai intdefault ( intperilaku 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.5adalah 0.

2
Ini brilian.
Quentin

1
Menemukan pertanyaan Stack Overflow tentang itu.
YSC

9
Saya pikir penjelasan untuk jawaban ini akan ditingkatkan dengan mengedit komentar @ ais523 yang menjelaskan mengapa C menghasilkan n^2.
Brian J

50

Python 2 & Python 3, 23 21 byte

lambda n:n**(1/2or 2)

Python 2.x menghasilkan n^2, Python 3.x menghasilkan sqrt(n).

2 byte disimpan berkat @Dennis!


ini sangat keren!
njzk2

Mengapa? Apakah ini kekurangan ruang sebelumnya or?
chx

@ chx Dalam Py2, /apakah pembagian integer ( 1/2==0). Di Py3, ia melakukan pembagian titik mengambang ( 1/2==0.5). 0Adalah falsey.
Nic Hartley

lalu mengapa tidak menghapus ruang setelah atau?
chx

@ chx Cobalah sendiri. Itu melempar kesalahan sintaksis jika Anda melakukannya.
numbermaniac

32

2sable / Jelly , 2 byte

*.

2sable menghitung kuadrat. Cobalah online!

Jelly menghitung akar kuadrat. Cobalah online!

Bagaimana itu bekerja

2sable

*   Read the input twice and compute the product of both copies.
    This pushes the square of the input.
 .  Unrecognized token (ignored).

Jeli

 .  Numeric literal; yield 0.5.
*   Raise the input to the power 0.5.
    This yields the square root.

7
Sepertinya bahasa-bahasa ini diciptakan hanya untuk tantangan ini
FloatingRock

20

C (dentang) dan Python , 109 107 69 53 byte

#/*
lambda n:n**.5;'''*/
float a(i){return i*i;}//'''

C: Coba online!

Python: Coba online!

Bekerja dengan menggunakan komentar ke polyglot. Sisanya cukup jelas.

Pertama kali menggunakan C!

  • Menyimpan beberapa byte berkat @Riker.
  • Disimpan 2 byte dengan menghapus spasi yang tidak perlu.
  • Disimpan sangat banyak byte dengan menggunakan fungsi C bukan STDIN / OUT.
  • Disimpan 16 byte berkat @Delioth dengan menghapus pernyataan impor di bagian atas.

@Riker Akan melakukannya, terima kasih.
Kamerad SparklePony

Saya percaya Anda dapat menghapus satu baris baru setelah komentar C (baris 2, karakter terakhir) karena C tidak memerlukan spasi dan itu sudah menjadi string literal untuk python. Karena Anda tidak mengembalikan kode khusus apa pun, Anda dapat menghilangkan kode return 0;C99 dari akhir hingga C99 menyimpan pengembalian implisit 0 main()secara khusus. Sumber
Delioth

@Delioth Sebenarnya lebih masuk akal hanya menggunakan fungsi, dan menghapus io.
Kamerad SparklePony

Oh, ya- jauh lebih baik. Apakah Anda bahkan perlu memasukkan stdio.hdalam kasus itu?
Delioth

@Delioth saya tidak. Aduh!
Kamerad SparklePony

16

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:

00000000: fd7f 0a                                  ...

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.


Bagus! Jumlah byte baik-baik saja.
programmer5000

Saya mengedit jawaban saya menjadi 5 byte karena ini juga, tangkapan yang bagus.
Magic Gurita Guci

Wow, jawaban Ohm pertama tidak ditulis oleh saya! Sudah selesai dilakukan dengan baik!
Nick Clifford

Jika Anda menggunakan halaman kode Jelly untuk mendapatkan ½byte, apa gunanya ²peta? Apakah itu hanya sampah yang masih diabaikan? Dan sebaliknya untuk Ohm? Maka tampaknya akan menjadi 2 byte.
AdmBorkBork

1
Saya akan membuat contoh, karena saya tidak ingin repot mencari poin kode yang sebenarnya. Misalkan ²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 adalah Jdan tidak melakukan apa-apa, jadi tidak masalah apa baris kedua. Jadi, jika Anda memiliki file sebesar 00000101<newline>000110113 byte. Saya kira satu-satunya masalah adalah jika baris baru di lokasi yang berbeda di halaman kode.
AdmBorkBork

15

C89 dan C99, 47 + 3 = 50 byte

float f(float n){return n//*
/sqrt(n)//*/1*n
;}

Membutuhkan -lmtanda (+3)

C89 menghasilkan n^2, menghasilkan C99 sqrt(n). Untuk mengujinya di C89, Coba online!


Mendapatkan C89 untuk melakukan sqrtversi seharusnya mengambil lebih sedikit kode, tetapi bersikeras untuk mendeklarasikan sqrtfungsi dengan ints, jadi ini adalah yang terbaik yang bisa saya kelola.


13

Oktaf / MATLAB, 31 29 byte

 @(x)x^(2-3*any(version>60)/2)

Ini 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:

@(x)                                 % Take x as input
    x^(                     )        % Raise x to the power of ...   
               version                 % Returns the version number
                                       % 4.2.0 in Octave, 
                                       % '9.2.0.538062 (R2017a)' in MATLAB
               version>60              % 'R' is larger than 60. All others are smaller
         3*any(version>60)/2           % Checks if there is an 'R' and multiplies it by 1.5 if it is.
       2-3*any(version>60)           % 2-1.5*(is there an 'R')

12

Basic / Delphi - 6 karakter

sqr(x)

Akar kuadrat dalam Dasar dan kuadrat dalam Delphi.

Anda dapat menggunakan debugger untuk memeriksa ekspresi, sehingga memenuhi persyaratan output apa pun!


2
Apakah ini mengambil input dengan sendirinya?
Rɪᴋᴇʀ

Tidak, tetapi tidak juga beberapa kiriman lainnya, termasuk C / C ++.

Namun tetap tidak valid, itu tidak mengubah apa pun. Saya akan mencoba mengomentari itu juga.
Rɪᴋᴇʀ

1
Bisakah Anda menautkan yang tidak? Saya tidak dapat menemukannya. C / C ++ yang merupakan fungsi, tidak mengambil input, bukan parameter.
Rɪᴋᴇʀ

3
Ya, tapi apa itu x? Anda tidak dapat menganggap itu disimpan ke suatu nilai. Tapi Anda mungkin benar-benar dapat menghapusnya (x), dan menandainya sebagai mengembalikan fungsi.
Rɪᴋᴇʀ

11

05AB1E / Fireball , 3 byte

Byte berikut membuat program:

FD B9 74

05AB1E menghitung akar kuadrat, kotak Fireball.

Penjelasan (05AB1E - ý¹t):

ý       Pushes an empty string to the stack (not entirely sure why)
 ¹      Push first input
  t     Square root

Penjelasan (Bola Api - ²╣t):

²       Square input
 ╣      Unassigned
  t     Unassigned

Terkadang, membantu memiliki bahasa yang tidak lengkap;)


1
05AB1E dan Fireball menggunakan penyandian yang berbeda. Apakah ini mempengaruhi program?
Dennis

@ Dennis saya tidak memikirkan hal itu. Jadi menyimpan program yang sama dalam pengkodean yang berbeda tidak masuk hitungan untuk poligot?
Okx

5
Afaik, standarnya adalah stream byte harus cocok.
Dennis

10

PHP7 + JavaScript, 62 61 58 byte

Ini sebenarnya lebih menantang dari yang saya harapkan! Saya cukup terkejut dengan berapa lama kode saya.

eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);


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 (kecuali null) selalu benar, bahkan new 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 menghasilkan 0.
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 ada truedi JavaScript (karena di \0-parsing sebagai NULL-byte) dan falsedi PHP (yang '\0'tidak akan di-parsing sebagai NULL-byte, membandingkan string literal \0dengan 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 evalkode yang diperlukan.

PHP

PHP akan mengeksekusi echo$argv[1]**.5(setara dengan echo 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 dalam alert.



Terima kasih kepada @rckd karena telah menghemat 1 byte, dan @ user59178 telah menghemat 3 byte!


1
! [] akan menghemat 1 byte :-)
rckd

1
@rckd, sapi suci! Benar-benar lupa tentang array kosong. Terima kasih! Saya telah mengedit pertanyaan, dengan penjelasan tentang cara kerjanya.
Ismael Miguel

1
Anda dapat menyimpan 3 byte dengan menggunakan echo$argv[1]**.5daripadaecho sqrt($argv[1])
user59178

Wow, penghematan yang bagus! Terima kasih! Saya telah menambahkannya ke dalam jawabannya.
Ismael Miguel

8

05AB1E dan Jelly , 4 byte

nqƓ½

(05AB1E) - (Jelly)

nq   # Ignored by Jelly, push n**2 in 05AB1E then quit.
  Ɠ½ # Ignored by 05AB1E due to quit, push sqroot of input in 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:

6e 71 93 0a

Dalam pengkodean CP1252 05AB1E ini menghasilkan:

nq“\n

Artinya masih akan menampilkan kuadrat dan berhenti, mengabaikan sisanya. Ketika byte ini disandikan menggunakan codepage Jelly:

nqƓ½

Yang merupakan kode asli yang dimaksudkan, ketika dijalankan, menghasilkan hasil yang diinginkan dari mengambil input dan mengambil sqrt.


2
Ini sebenarnya 6 byte dalam UTF-8, karena keduanya Ɠdan ½membutuhkan dua byte untuk dikodekan. Namun, urutan byte 6e 71 93 0a( nqƓ½untuk Jelly, nq“\nuntuk CP-1252) harus berfungsi dalam kedua bahasa.
Dennis

@ Dennis ½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.
Magic Gurita Guci

1
Penilaian dalam byte berarti menghitung stream byte. Kecuali jika penerjemah benar-benar mendukung pengkodean beberapa karakter dalam satu halaman kode dan karakter lain di halaman lain, kami tidak dapat melakukan ini untuk tujuan penilaian.
Dennis

4
@caruscomputing kiriman Anda adalah 4 byte 6e 71 93 0asehingga 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.
Dave

@ Sudah pasti aku salah menafsirkan Dennis.
Magic Octopus Mm

6

CJam / MATL , 8 byte

ld_*GX^!

Menghitung kuadrat dalam CJam ( Coba online! ) Dan akar kuadrat dalam MATL ( Coba online! ).

Penjelasan kotak di CJam

ld    e# Read input line and interpret as a double
_     e# Duplicate
*     e# Multiply. Pops the input number twice, pushes its square
G     e# Push 16
X     e# Push 1
^     e# Bitwise XOR. Pops 16 and 1, and pushes 17
!     e# Negate. Pops 17, pushes 0
      e# Implicitly display. This prints the squared input with decimals,
      e# immediately followed by the 0 coming from the negate operation
      e# Even if the square of the input number is an integer, say 5,
      e# it is displayed as 5.0, so including an extra 0 always gives a
      e# correct result

Penjelasan akar kuadrat dalam MATL

l      % Push 1. This is a number or equivalently a 1×1 array
d      % Consecutive differences. Pops 1, pushes [] (empty array)
_      % Negate (element-wise). This leaves [] as is
*      % Implicitly input a number and push it. Multiply (element-wise): 
       % pops [] and the input number, pushes []
G      % Push input number again
X^     % Square root. Pops number, pushes its square root
!      % Transpose. For a number (1×1 array) this does nothing
       % Implicitly display. The stack contains [] and the result; but 
       % [] is not displayed at all

Hei! Pengiriman yang bagus! Ingin menambahkan penjelasan seperti jawaban lain?
programmer5000

@ programmer5000 Saya memperbaiki kesalahan dan menambahkan penjelasan
Luis Mendo

5

Python 2 dan Forth, 43 33 byte

( """ )
fsqrt
\ """);lambda n:n*n

Cobalah online: Python 2 (persegi) | Keempat (sqrt)

Ini mengevaluasi ke fungsi anonim dalam Python, dan fungsi fsqrtbawaan di Forth. Python dapat memiliki fungsi bernama funtuk 2 byte lebih banyak dengan meletakkan f=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:

3141e-3

5

JavaScript (ES6) / JavaScript (ES7), 52 byte

f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)

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.

f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)

console.log(f(4));


Pintar! Kerja bagus untuk yang satu ini!
programmer5000

Apakah ada alasan untuk backticks? Sepertinya tanda kutip tunggal akan melakukan pekerjaan.
JLRishe

@JLRishe Tidak, tanpa alasan :)
Tom

5

PHP dan CJam , 30 29 25 byte

ECHO"$argv[1]"**2;#];rdmq

Menghitung kuadrat dalam PHP dan akar kuadrat dalam CJam. Harus dijalankan menggunakan -rPHP.

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 karena vini 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!


5

C, bahasa scripting Operasi Flashpoint , 52 byte

;float f(float x){return sqrt(x);}char*
F="_this^2";

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.sqsdalam folder misi, lalu panggil dengan hint format["%1", 2 call F].

Hasil: masukkan deskripsi gambar di sini


Oke, ini keren sekali. Bagaimana menurut Anda menggunakan bahasa scritping itu?
Rɪᴋᴇʀ

@Riker Operation Flashpoint selalu menjadi salah satu game favorit saya; Saya biasa melakukan banyak hal di dalamnya dengan bahasa scripting-nya.
Steadybox

3

Reticular / Befunge-98 , 15 byte

Bahasa 2D!

/&:*.@
>in:o#p;

Befunge-98

/&:*.@

/          divide top two (no-op)
 &         read decimal input
  :        duplicate
   *       square
    .      output
     @     terminate

Reticular

/           mirror up, then right
>in:o#p;

 i          read line of input
  n         cast to number
   :o#      square root
      p     print
       ;    terminate

3

> <> / Jelly , 9 byte (kode 7 byte + 2 untuk bendera '-v' di> <>)

Sobat, saya benar-benar bersenang-senang dengan struktur tautan Jelly.

:*n;
½

Hitung kuadrat dalam> <> , dan akar kuadrat dalam Jelly .


Apakah Anda diizinkan untuk tidak menggunakan -v di jelly juga?
Rɪᴋᴇʀ

Penggunaan -vini, 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 -vdan ini adalah untuk itu doa sederhana mungkin.
steenbergh

3

Python 3 + JavaScript, 101 byte

0//1or exec("function=lambda a:(lambda b:a);x=0")
y=2//2/2
f=(function(x)(x**y))//1 or(lambda x:x**y)

Akar kuadrat dalam JS, kuadrat dalam Python.

Bekerja pada Firefox (diuji pada FF 52) dan membutuhkan (function(x) x)(42) === 42sintaks yang valid. Juga memerlukan ES7 untuk **operator.


Diuji pada Firefox dan berfungsi. Apakah mungkin untuk menggunakannya x=>x**y? Atau Python akan tersedak itu?
Ismael Miguel

@IsmaelMiguel python tidak mendukung functinos panah.
Rɪᴋᴇʀ

Ini tidak berfungsi untuk python. Fungsi bukan kata kunci.
Rɪᴋᴇʀ

Itu berhasil. Karena functionbukan kata kunci, itu adalah pengidentifikasi yang valid. Jadi saya hanya menetapkan fungsi noop untuk itu (di dalam execpernyataan).
kjaquier

3

bash and sh, 48 byte

Pembaruan: Saya harus mengakui kekalahan. Jawaban bash / sh Digital Trauma jauh lebih elegan daripada yang ini.


bc -l<<<"sqrt($1^(($(kill -l|wc -l)*3-3)/7+1))"

bash menghasilkan n^2, sh menghasilkan sqrt(n).


bchanya dibutuhkan agar sqrtbisa 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/shalih-alih /bin/bashpada sistem di mana /bin/shalias untuk bash). Jika hal ini terjadi pada sistem Anda, Anda dapat menguji dengan:

/bin/bash prog.sh 4
/bin/sh prog.sh 4

Ini didasarkan pada salah satu perbedaan yang dijelaskan di sini: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html


1
Bagaimana cara kerjanya?
Brian Minton

2
@BrianMinton Coba jalankan kill -l(daftar sinyal yang mungkin; tidak mengubah apa pun) di bashdan sh. Ini adalah salah satu dari banyak perbedaan yang dapat Anda temukan di sini: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
Dave

3

QBIC / QBasic, 26 18 byte

input a
?a^2'^.25

Dalam 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.


2

Jelly / Pip , 6 byte

EDIT: Ini satu byte lebih pendek untuk membalikkan operasi.

RTa
²

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.


Alternatif 6-byter: PRTaVS.
steenbergh

2

Bahasa Wolfram / PHP , 25 byte

Dapatkan kuadrat angka dalam Bahasa Wolfram dan dapatkan akar kuadrat dalam PHP;

n^2
echo sqrt(_GET["n"]);

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

n^2

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)

echo sqrt($_GET["n"]);

1
Selamat datang di PPCG! Namun, Anda harus mengambil input. Anda tidak dapat mengasumsikan nomor tersebut disimpan dalam variabel. Maaf soal itu. Anda dapat melihat daftar metode i / o yang dapat diterima di sini. (skor positif pada jawaban berarti diizinkan, negatif berarti tidak diizinkan)
Rɪᴋᴇʀ

Mengerti. Saya hanya akan mengedit jawaban saya. :) Hal lain, saya hanya akan menjelaskan mengapa menambahkan kode lain untuk input di wolfram tidak berlaku.
Jimwel Anobong

Saya senang bisa membantu! Semoga Anda tetap di ppcg!
Rɪᴋᴇʀ


1
Bahasa Wolfram didasarkan pada mathematica yang membutuhkan rumus matematika untuk diketik dengan cara yang tidak alami. Hal lain, penjawab membersihkannya, situs webnya bukan bahasa tetapi bahasa wolfram adalah bahasa yang mendukungnya. Bahasa Wolfrsm dan WolframAlpha terkait dengan masing-masing tetapi tidak sama. Mereka sama sekali berbeda.
Jimwel Anobong

2

PHP 5.6 dan PHP 7, 55 byte

function f($n){list($a[],$a[])=[.5,2];echo $n**$a[0];}

PHP 5.6 menghasilkan n^2, PHP 7 menghasilkan sqrt(n).


2

macOS Bash dan sh, 24 byte

p=^4 :
bc<<<"sqrt($1)$p"

Pada Mac, shyang bashberjalan dalam modus POSIX, dan dalam hal ini sebagai per https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :

Pernyataan tugas sebelum POSIX builtin khusus bertahan di lingkungan shell setelah builtin selesai

Jadi untuk sh, variabel pmemiliki nilai ^4setelah :dijalankan, tetapi untuk bash, variabel phanya 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, shadalah symlink to dash, yang tidak melakukan <<<herestrings. Jadi kami memiliki ini sebagai gantinya:

p=^4 :
echo "sqrt($1)$p"|bc

Cobalah online .


Penggunaan mode / env yang bagus!
programmer5000

Ini jauh lebih baik daripada versi saya!
Dave

1

Oktaf / Kardinal , 28 byte

Program ini mengkuadratkan input dalam Kardinal dan mendapatkan akar kuadrat dalam Oktaf

 %:=t.
disp(sqrt(input("")))

Cobalah online! (Oktaf)

Cobalah online! (Kardinal)

Jadi% adalah komentar baris tunggal dalam Oktaf sehingga hanya mendapat input dan mencetak akar kuadrat

disp(sqrt(input("")))

Sehingga program Kardinal tidak mengalami pembagian dengan 0 kesalahan dan mati, program

%:=t.

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.


1

PHP / JavaScript, 43 byte

<body onload=alert(<?=$x*$x.')>'.sqrt($x)?>

Masukan seperti:

<?php $x = 10; ?>

Agak menjelaskan sendiri, tetapi apakah itu sesuai dengan aturan? Golf kode pertama saya :-)


1
Selamat datang di kode golf! Input harus berupa float atau string yang hanya float. Jika saya mengerti benar, ini membutuhkan input terpisah.
programmer5000

Apakah Anda yakin ini berjalan sebagai JavaScript? Sepertinya kedua versi membutuhkan tahap pemrosesan PHP (JavaScript tidak akan tahu harus bagaimana dengan alert(<?=$x*$x.')>'.sqrt($x)?)
Dave

0

CGL (CGL Golfing Language) / JS (ES6), 13 byte (tidak bersaing)

Non-bersaing karena:

  1. CGL dirilis setelah pertanyaan ini.
  2. CGL bukan bahasa yang valid . Karena dan , CGL secara teknis adalah bahasa yang valid.

Kode:

 x=>x**2
//-₂

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.


Ini adalah 13 byte. Saya tidak tahu tentang CGL, tapi saya cukup yakin JS menggunakan ascii / utf-8. CGL mungkin juga akan menggunakan UTF-8, kecuali ia memiliki codepage sendiri.
Rɪᴋᴇʀ

@Riker untuk saat ini, ia menggunakan ascii / utf-8. Terima kasih.
programmer5000
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.