Tính một hình vuông và một căn bậc hai!


48

Bạn phải tạo một đầu ra bình phương của đầu vào bằng một ngôn ngữ và căn bậc hai của đầu vào trong một ngôn ngữ khác. Câu trả lời ngắn nhất bằng byte thắng!

Bạn phải có độ chính xác ít nhất 3 chữ số thập phân và đầu vào sẽ luôn là số dương.

Câu trả lời:


45

JolfMATL , 1 byte

U

Căn bậc hai trong Jolf, hình vuông trong MATL.

Hãy thử trực tuyến! (MATL)

Hãy thử mã Jolf. Chỉ hoạt động trên Firefox.

Cả hai đều là 1 byte, vì MATL và Jolf đều sử dụng bảng mã ASCII / ASCII mở rộng, vì vậy tất cả các lệnh là 1 byte.


90

C và C ++, 68 65 byte

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

Câu trả lời gốc:

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

Đối với cả hai phiên bản, C sản xuất n^2và C ++ sản ​​xuất sqrt(n).


23
+1 dưới dạng "Ha!" cho tất cả những người coi C và C ++ là cùng một thứ.
DocMax

20
@ CAD97: Trong C, autocó nghĩa là "phân bổ trên ngăn xếp". Từ khóa khá vô dụng vì dù sao đó cũng là mặc định, vì vậy C ++ đã tái sử dụng nó để có nghĩa khác. Mặc dù vậy, trong C, nó không thể hiện bất kỳ ý kiến ​​nào về loại p(đó là lớp lưu trữ, không phải loại), do đó, nó được tính là intmặc định (hiện tại inthành vi mặc định này không được khuyến khích và có khả năng chỉ tồn tại vì một số người tiền nhiệm của C hoàn toàn không có kiểu dữ liệu, nhưng trình biên dịch vẫn hiểu nó). Và tất nhiên, (int)0.5là 0.

2
Điều này thật tuyệt vời.
Quentin

1
Tìm thấy một câu hỏi Stack Overflow về nó.
YSC

9
Tôi nghĩ rằng lời giải thích cho câu trả lời này sẽ được cải thiện bằng cách chỉnh sửa trong nhận xét của @ ais523 giải thích lý do tại sao C tạo ra n^2.
Brian J

50

Python 2 & Python 3, 23 21 byte

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

Python 2.x tạo ra n^2, Python 3.x tạo ra sqrt(n).

Lưu 2 byte nhờ @Dennis!


thật là tuyệt
njzk2

Tại sao? Có phải là thiếu không gian trước or?
chx

@chx Trong Py2, /không chia số nguyên ( 1/2==0). Trong Py3, nó thực hiện phân chia điểm nổi ( 1/2==0.5). 0Là falsey.
Nic Hartley

Vậy thì tại sao không loại bỏ không gian sau hay?
chx

@chx Hãy tự thử. Nó ném một lỗi cú pháp nếu bạn làm.
numbermaniac

32

2sable / Jelly , 2 byte

*.

2sable tính hình vuông. Hãy thử trực tuyến!

Jelly tính căn bậc hai. Hãy thử trực tuyến!

Làm thế nào nó hoạt động

2sable

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

Thạch

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

7
Giống như những ngôn ngữ này được tạo ra chỉ dành cho thử thách này
FloatingRock

20

C (clang)Python , 109 107 69 53 byte

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

C: Hãy thử trực tuyến!

Python: Hãy thử trực tuyến!

Hoạt động bằng cách sử dụng ý kiến ​​để polyglot. Phần còn lại là khá lý giải.

Lần đầu tiên sử dụng C!

  • Đã lưu khá nhiều byte nhờ @Riker.
  • Đã lưu 2 byte bằng cách loại bỏ khoảng trắng không cần thiết.
  • Đã lưu rất nhiều byte bằng cách sử dụng hàm cho C thay vì STDIN / OUT.
  • Đã lưu 16 byte nhờ @Delioth bằng cách xóa câu lệnh nhập ở trên cùng.

@Riker Sẽ làm, cảm ơn bạn.
Đồng chí SparklePony

Tôi tin rằng bạn có thể xóa một dòng mới sau nhận xét C (dòng 2, ký tự cuối cùng) vì C không cần khoảng trắng và nó đã là một chuỗi ký tự cho python. Vì bạn không trả lại bất kỳ mã đặc biệt nào, bạn có thể bỏ qua return 0;phần cuối - C99 giữ lại mức trả về 0 main()một cách cụ thể. Nguồn
Delioth

@Delioth Nó thực sự có ý nghĩa hơn khi chỉ sử dụng chức năng và xóa sạch io.
Đồng chí SparklePony

Ồ, vâng - tốt hơn nhiều. Bạn thậm chí có cần bao gồm stdio.htrong trường hợp đó?
Delioth

@Delioth Tôi không. Rất tiếc!
Đồng chí SparklePony

16

OhmJelly , 3 byte

Xuất ra hình vuông trong Ohm, căn bậc hai trong Jelly.

Ohm và Jelly sử dụng các mã đơn byte khác nhau, vì vậy chương trình sẽ xuất hiện khác nhau trong mỗi mã hóa.

xxd hexdump của chương trình:

00000000: fd7f 0a                                  ...

Thạch

Sử dụng bảng mã của Jelly, nó xuất hiện như thế này:

’
½

Jelly lấy dòng dưới cùng là liên kết chính của nó và bỏ qua các liên kết khác trừ khi được gọi cụ thể. Vì vậy, ở đây nó chỉ thực hiện căn bậc hai ( ½) và ngầm xuất nó.

Om

Sử dụng codepage của Ohm (CP437), nó xuất hiện như thế này:

²⌂◙

²là hàm vuông cả hai đều không được xác định, vì vậy chương trình chỉ bình phương đầu vào đọc ngầm và đầu ra ngầm.


Đẹp! Số byte là tốt.
lập trình

Tôi đã chỉnh sửa câu trả lời của mình thành 5 byte vì điều này là tốt, bắt tốt.
Bạch tuộc ma thuật Urn

Wow, câu trả lời Ohm đầu tiên không được viết bởi tôi! Làm tốt!
Nick Clifford

Nếu bạn sử dụng trang mã Jelly để lấy ½một byte, ²bản đồ sẽ làm gì? Có phải chỉ là rác mà vẫn bị bỏ qua? Và ngược lại cho Ohm? Sau đó, nó có vẻ là 2 byte.
admBorkBork

1
Tôi sẽ làm một ví dụ, vì tôi không muốn tìm kiếm các điểm mã thực tế. Giả sử ²trong Ohm là ở điểm mã 5. Mã điểm 5 trong Jelly là %và không làm gì cả, vì vậy không có vấn đề gì với dòng đầu tiên. Giả sử rằng ½trong Jelly là 27, và mã điểm 27 trong Ohm là Jvà không làm gì cả, vì vậy không có vấn đề gì với dòng thứ hai. Vì vậy, nếu bạn có một tệp 00000101<newline>00011011, đó là 3 byte. Tôi đoán vấn đề duy nhất là nếu dòng mới ở một vị trí khác trong các trang mã.
admBorkBork

15

C89 và C99, 47 + 3 = 50 byte

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

Yêu cầu -lmcờ (+3)

C89 sản xuất n^2, C99 sản xuất sqrt(n). Để kiểm tra trong C89, hãy thử trực tuyến!


Bắt C89 thực hiện sqrtphiên bản nên lấy ít mã hơn, nhưng nó khăng khăng đòi khai báo sqrthàm với ints, vì vậy đây là cách tốt nhất tôi có thể quản lý.


13

Octave / MATLAB, 31 29 byte

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

Điều này xuất ra hình vuông trong Octave và căn bậc hai trong MATLAB.

Giải trình:

Cú pháp tất nhiên giống hệt nhau trong MATLAB và Octave (ít nhất là đối với đoạn mã nhỏ này).

Điều này tạo ra một chức năng ẩn danh:

@(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

Cơ bản / Delphi - 6 ký tự

sqr(x)

Căn bậc hai trong Cơ bản và hình vuông trong Delphi.

Bạn có thể sử dụng trình gỡ lỗi để kiểm tra biểu thức, từ đó đáp ứng mọi yêu cầu đầu ra!


2
Điều này có đầu vào của chính nó?
Rɪᴋᴇʀ

Không, nhưng cũng không thực hiện một số bài nộp khác, bao gồm cả bài C / C ++.

Mặc dù vậy, vẫn không hợp lệ, điều đó không thay đổi bất cứ điều gì. Tôi cũng sẽ cố gắng bình luận về những điều đó.
Rɪᴋᴇʀ

1
Bạn có thể liên kết cái nào không? Tôi không thể tìm thấy bất kỳ. C / C ++ là một hàm, không lấy đầu vào, thay vào đó là một tham số.
Rɪᴋᴇʀ

3
Vâng, nhưng là xgì? Bạn không thể cho rằng nó được lưu vào một giá trị. Nhưng bạn thực sự có thể loại bỏ (x)và gắn nhãn là trả về một hàm.
Rɪᴋᴇʀ

11

05AB1E / Quả cầu lửa , 3 byte

Các byte sau tạo nên chương trình:

FD B9 74

05AB1E tính căn bậc hai, bình phương Fireball.

Giải thích (05AB1E - ý¹t):

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

Giải thích (Quả cầu lửa - ²╣t):

²       Square input
 ╣      Unassigned
  t     Unassigned

Đôi khi, nó giúp có một ngôn ngữ không đầy đủ;)


1
05AB1E và Fireball sử dụng các bảng mã khác nhau. Điều này có ảnh hưởng đến các chương trình không?
Dennis

@Dennis Tôi không nghĩ về điều đó. Vì vậy, việc lưu cùng một chương trình trong các bảng mã khác nhau không được tính cho các đa giác?
Okx

5
Afaik, mặc định là các luồng byte phải khớp.
Dennis

10

PHP7 + JavaScript, 62 61 58 byte

Điều này thực sự khó khăn hơn tôi mong đợi! Tôi khá ngạc nhiên về mã của tôi dài bao nhiêu.

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


Làm thế nào nó hoạt động?

Điều này hoạt động bằng cách chọn mã để chạy, từ mảng.
Phát hiện PHP và JavaScript được thực hiện với +![].

Trong PHP, [](mảng trống) là một giá trị giả, trong khi trong JavaScript, nó là một giá trị trung thực (các đối tượng (ngoại trừ null) luôn luôn trung thực, thậm chí new Boolean(false)là trung thực!).
Nhưng, tôi cần lấy nó thành một giá trị số, vì vậy, tôi chỉ cần sử dụng một not( !) và chuyển đổi nó thành số nguyên (với +).
Bây giờ, PHP mang lại giá trị 1, trong khi JavaScript mang lại 0.
Đặt mã bên trong một mảng, tại các chỉ mục đó, sẽ cho phép chúng tôi chọn đúng mã cho ngôn ngữ mong muốn.
Điều này có thể được sử dụng như [JS,PHP][+![]], để có được mã của ngôn ngữ phù hợp.

Trên polyglots trước, tôi đã sử dụng '\0'=="\0", đó là truetrong JavaScript (kể từ khi \0được phân tách như NULL-byte) và falsetrong PHP (các '\0'sẽ không được phân tích như NULL-byte, so sánh chuỗi chữ \0với NULL-byte).
Tôi rất vui vì tôi đã quản lý để giảm kiểm tra này xuống +!'0'.
Tôi thậm chí còn hạnh phúc hơn về @rckd , đã giảm nó xuống phiên bản hiện tại!

Từ đó trở đi, nó chỉ đơn giản evallà mã yêu cầu.

PHP

PHP sẽ thực thi echo$argv[1]**.5(tương đương với echo sqrt($argv[1]);căn bậc hai số), nhận giá trị từ đối số thứ 2 và hiển thị nó trong đầu ra tiêu chuẩn.

JavaScript

JavaScript thực thi alert((_=prompt())*_), hiển thị số bình phương trong một alert.



Cảm ơn bạn @rckd vì đã lưu 1 byte và @ user59178 vì đã lưu 3 byte!


1
! [] sẽ giúp bạn tiết kiệm 1 byte :-)
RCkd

1
@rckd Bò thần! Hoàn toàn quên về mảng trống. Cảm ơn bạn! Tôi đã chỉnh sửa câu hỏi, với lời giải thích về cách thức hoạt động của nó.
Ismael Miguel

1
bạn có thể lưu 3 byte bằng cách sử dụng echo$argv[1]**.5thay vìecho sqrt($argv[1])
user59178

Wow, tiết kiệm tốt đẹp! Cảm ơn bạn! Tôi đã thêm nó vào câu trả lời.
Ismael Miguel

8

05AB1EJelly , 4 byte

nqƓ½

(05AB1E) - (Thạch)

nq   # Ignored by Jelly, push n**2 in 05AB1E then quit.
  Ɠ½ # Ignored by 05AB1E due to quit, push sqroot of input in Jelly.

Một số người khác đã đưa ra một quan điểm tốt, tôi đoán vì các ký tự UTF-8 không chia sẻ cùng một hoạt động trên các trang mã mà về mặt kỹ thuật, mỗi byte có 2 byte để mã hóa. Tuy nhiên, khi xem xét điều này về mặt kết xuất hex:

6e 71 93 0a

Trong mã hóa CP1252 của 05AB1E, kết quả này là:

nq“\n

Có nghĩa là nó vẫn sẽ xuất ra hình vuông và thoát, bỏ qua phần còn lại. Khi các byte này được mã hóa bằng mã hóa của Jelly:

nqƓ½

Đó là mã dự định ban đầu, khi được thực thi, dẫn đến kết quả mong muốn là lấy đầu vào và lấy sqrt.


2
Đây thực sự là 6 byte trong UTF-8, vì cả hai Ɠ½yêu cầu hai byte được mã hóa. Tuy nhiên, chuỗi byte 6e 71 93 0a( nqƓ½đối với Jelly, nq“\nđối với CP-1252) nên hoạt động ở cả hai ngôn ngữ.
Dennis

@Dennis ½ở trên cả hai trang mã không cho phép nó được tính là một vì chúng hoạt động khác nhau? Tôi vẫn còn mờ trên toàn bộ điều trang mã.
Bạch tuộc ma thuật Urn

1
Ghi theo byte có nghĩa là đếm các luồng byte. Trừ khi trình thông dịch thực sự hỗ trợ mã hóa một số ký tự trong một trang mã và các ký tự khác trong một trang khác, chúng tôi không thể làm điều này cho mục đích ghi điểm.
Dennis

4
@carusocomputing trình của bạn là 4 byte 6e 71 93 0avì vậy không có "lý thuyết" nào về việc yêu cầu 4 byte. Chỉ cần yêu cầu 4 byte. Thực tế là trong mã hóa tiêu chuẩn của 05AB1E, nó đọc một thứ làm những gì bạn muốn, trong khi ở mã hóa tiêu chuẩn của Jelly, nó đọc một thứ khác làm những gì bạn muốn. Bên cạnh đó, chỉ vì 2 mã hóa có thể mã hóa cùng một ký tự không có nghĩa là nhân vật đó sẽ giống nhau ở cả hai. Chỉ cần nghĩ về mã hóa như một cypher số với bảng tra cứu đã được chia sẻ và hy vọng rằng nó sẽ cung cấp cho bạn một mô hình tinh thần khởi đầu tốt.
Dave

@ Tôi đã phải giải thích sai về Dennis rồi.
Bạch tuộc ma thuật Urn

6

CJam / MATL , 8 byte

ld_*GX^!

Tính toán hình vuông trong CJam ( Thử trực tuyến! ) Và căn bậc hai trong MATL ( Thử trực tuyến! ).

Giải thích về quảng trường ở 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

Giải thích về căn bậc hai trong 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

Chào! Trình tốt đẹp! Quan tâm để thêm một lời giải thích như các câu trả lời khác?
lập trình

@ lập trình5000 Tôi đã sửa một lỗi và thêm các giải thích
Luis Mendo

5

Python 2 và Forth, 43 33 byte

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

Dùng thử trực tuyến: Python 2 (vuông) | Forth (sqrt)

Điều này đánh giá một hàm ẩn danh trong Python và một hàm tích hợp fsqrttrong Forth. Python có thể có một chức năng được đặt tênf cho thêm 2 byte bằng cách đặt f=trước lambda.

Chương trình Forth có một dấu phẩy động theo nghĩa đen , trong Forth phải được viết bằng ký hiệu khoa học. Pi rút ngắn đến 3 chữ số thập phân ( 3.141) sẽ được viết như thế này:

3141e-3

5

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

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

Trả về bình phương của đầu vào trong ES7 và căn bậc hai trong ES6. Khá khó để kiểm tra, trừ khi bạn có một trình duyệt cũ hơn hỗ trợ ES6 nhưng không phải ES7.

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

console.log(f(4));


Tài giỏi! Tốt công việc này!
lập trình

Có một lý do cho các backticks? Có vẻ như trích dẫn duy nhất sẽ làm công việc.
JLRishe

@JLRishe Không, không có lý do :)
Tom

5

PHP và CJam , 30 29 25 byte

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

Tính bình phương trong PHP và căn bậc hai trong CJam. Phải được chạy bằng -rPHP.

PHP

Tăng đối số dòng lệnh đầu tiên ( $argv[1]) lên lũy thừa 2 và xuất ra nó. Ở đây $argv[1]thực sự được đặt dưới dạng một biến nội tuyến trong một chuỗi, được truyền tới một số trước khi thực hiện lũy thừa. Đây là vìv không phải là một hướng dẫn hợp lệ trong CJam và sẽ khiến nó bị lỗi trong khi phân tích cú pháp, nhưng đặt nó trong một chuỗi sẽ không gây ra bất kỳ vấn đề nào.

# bắt đầu một bình luận, vì vậy mọi thứ sau đó được bỏ qua.

Hãy thử trực tuyến!

Camam

Phần đầu tiên của mã, ECHO"$argv[1]"**2;#đẩy một loạt các giá trị và thực hiện một loạt các hoạt động, tất cả đều hoàn toàn vô dụng. Điều quan trọng duy nhất là chúng không gây ra bất kỳ lỗi nào, bởi vì ngay sau đó là ];, nó bao bọc toàn bộ ngăn xếp trong một mảng và sau đó loại bỏ nó.

Sau đó, nó đọc một số kép từ input ( rd) và lấy căn bậc hai ( mq) của nó và ngầm xuất nó.

Hãy thử trực tuyến!


5

C, Ngôn ngữ kịch bản Flashpoint hoạt động , 52 byte

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

Trong tập lệnh OFP, một dấu chấm phẩy ở đầu dòng làm cho dòng đó trở thành một nhận xét, trong khi C không quan tâm đến dấu chấm phẩy bổ sung.

C:

Hãy thử trực tuyến!

Ngôn ngữ kịch bản OFP:

Lưu như init.sqstrong thư mục nhiệm vụ, sau đó gọi nó vớihint format["%1", 2 call F] .

Kết quả: nhập mô tả hình ảnh ở đây


Được rồi, điều này là khá mát mẻ. Bạn nghĩ thế nào về việc sử dụng lang đó?
Rɪᴋᴇʀ

@Riker Hoạt động Flashpoint luôn là một trong những trò chơi yêu thích của tôi; Tôi đã từng làm nhiều thứ trong đó với ngôn ngữ kịch bản của nó.
Steadybox

3

Lưới / Befunge-98 , 15 byte

Ngôn ngữ 2D!

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

Befunge-98

/&:*.@

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

Mạng lưới

/           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 (mã 7 byte + 2 cho cờ '-v' trong> <>)

Man, tôi thực sự có niềm vui với cấu trúc liên kết Jelly.

:*n;
½

Tính bình phương trong> <> và căn bậc hai trong Jelly .


Bạn có được phép không sử dụng -v trong thạch không?
Rɪᴋᴇʀ

Theo tôi, việc sử dụng -vlà phù hợp với [câu trả lời được bình chọn hàng đầu [( codegolf.meta.stackexchange.com/a/11431/44874 ) trong một câu hỏi meta xử lý trường hợp này. Trình ><>thông dịch cần điều đó -vvà đây là cách gọi đơn giản nhất có thể.
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)

Căn bậc hai trong JS, hình vuông trong Python.

Hoạt động trên Firefox (đã thử nghiệm trên FF 52) và yêu cầu phải (function(x) x)(42) === 42có cú pháp hợp lệ. Cũng yêu cầu ES7 cho người **vận hành.


Đã thử nghiệm trên Firefox và nó đang hoạt động. Có thể sử dụng x=>x**ythay thế? Hoặc Python sẽ nghẹt thở về điều đó?
Ismael Miguel

Con trăn @IsmaelMiguel không hỗ trợ mũi tên funcinos.
Rɪᴋᴇʀ

Điều này không làm việc cho python. Chức năng không phải là một từ khóa.
Rɪᴋᴇʀ

Nó không hoạt động. Vì functionkhông phải là một từ khóa, nó là một định danh hợp lệ. Vì vậy, tôi chỉ gán một hàm noop cho nó (bên trong execcâu lệnh).
kjaquier

3

bash và sh, 48 byte

Cập nhật: Tôi phải thừa nhận thất bại. Câu trả lời bash / sh của Digital Trauma thanh lịch hơn nhiều so với câu trả lời này.


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

bash sản xuất n^2 , sh sản xuất sqrt(n).


bcchỉ cần thiết để sqrtcó thể được tính toán. Sự khác biệt trong hành vi là giữa bash và sh.

OK, về mặt kỹ thuật, "sh" tôi đang sử dụng vẫn là bash, nhưng bash ở chế độ "POSIX" (điều này xảy ra nếu bạn gọi /bin/shthay vì /bin/bashtrên các hệ thống /bin/shcó bí danh cho bash). Nếu đây là trường hợp trên hệ thống của bạn, bạn có thể kiểm tra với:

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

Điều này dựa trên một trong những khác biệt được giải thích ở đây: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html


1
Cái này hoạt động ra sao?
Brian Minton

2
@BrianMinton Hãy thử chạy kill -l(liệt kê các tín hiệu có thể; không thay đổi bất cứ điều gì) trong bashsh. Đó là một trong nhiều điểm khác biệt bạn có thể tìm thấy ở đây: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
Dave

3

QBIC / QBasic, 26 18 byte

input a
?a^2'^.25

Trong QBasic , nó lấy một số và in số đó bình phương. Phần còn lại của mã bị bỏ qua vì QBasic xem nó là một nhận xét ( ').

QBIC sử dụng cùng một câu lệnh đầu vào. Sau đó, nó tiếp tục in cùng một số bình phương, sau đó nâng lên sức mạnh của một phần tư, hiệu quả root nó hai lần. Điều này là do 'được xem như là một mã theo nghĩa đen: Mã QBasic thuần túy không được phân tích cú pháp bởi QBIC.


2

Thạch / Pip , 6 byte

EDIT: Đó là một byte ngắn hơn để hoạt động ngược lại.

RTa
²

Hãy thử Jelly trực tuyến!

Jelly bắt đầu thực thi ở dưới cùng của mã ('liên kết chính' của nó) và xem liệu nó có cần gì cao hơn không: nó nhìn thấy lệnh để vuông và chăm sóc đầu vào và đầu ra một cách ngầm định.

Hãy thử Pip trực tuyến!

Pip thực hiện dòng trên cùng, bình phương (đọc ngầm từ dòng cmd) var a và ngầm in nó. Dòng dưới cùng được bỏ qua.


Thay thế 6-byter : PRTaVS.
steenbergh

2

Ngôn ngữ Wolfram / PHP , 25 byte

Lấy bình phương của một số trong Ngôn ngữ Wolfram và lấy căn bậc hai trong PHP;

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

Dòng đầu tiên là Ngôn ngữ Wolfram. Đầu tiên, bạn là người thay đổi n trong thanh tìm kiếm trong Wolfram Alpha, do đó mã cũng là đầu vào. Sau đó, nó sẽ tạo ra câu trả lời khi nhấn enter

n^2

Dòng thứ hai là PHP, Nó lấy căn bậc hai của n được nhập vào thanh địa chỉ (ví dụ: ppcg.php.net?n=213, trong đó 213 là giá trị của n)

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

1
Chào mừng đến với PPCG! Tuy nhiên, bạn phải lấy đầu vào bằng cách nào đó. Bạn không thể giả sử số được lưu trữ trong một biến. Xin lỗi vì điều đó. Bạn có thể xem danh sách các phương pháp i / o được chấp nhận tại đây. (điểm số tích cực cho các câu trả lời có nghĩa là nó được cho phép, nghĩa là không được phép)
Rɪᴋᴇʀ

Hiểu rồi. Tôi sẽ chỉ chỉnh sửa câu trả lời của tôi. :) Một điều nữa, tôi sẽ chỉ giải thích tại sao việc thêm một mã khác cho đầu vào trong wolfram không được áp dụng.
Jimwel Anobong

Vui vẻ giúp đỡ! Hy vọng bạn dính xung quanh trong ppcg!
Rɪᴋᴇʀ


1
Ngôn ngữ Wolfram dựa trên toán học cần công thức toán học để gõ theo cách không tự nhiên. Một điều nữa, người trả lời xóa nó đi, trang web của nó không phải là ngôn ngữ mà là ngôn ngữ wolfram là ngôn ngữ hỗ trợ nó. Ngôn ngữ Wolfrsm và WolframAlpha có liên quan đến từng người nhưng không giống nhau. The'yre hoàn toàn khác nhau.
Jimwel Anobong

2

PHP 5.6 và PHP 7, 55 byte

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

PHP 5.6 sản xuất n^2, PHP 7 sản xuất sqrt(n).


2

macOS Bash và sh, 24 byte

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

Trên máy Mac, shđang bashchạy ở chế độ Posix và trong trường hợp này là theo https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :

Các câu lệnh gán trước các nội dung đặc biệt POSIX vẫn tồn tại trong môi trường shell sau khi tích hợp hoàn thành

Do đó sh, biến pcó giá trị ^4sau khi :chạy, nhưng đối với bash, biến pchỉ có giá trị này trong khi: được chạy và trống sau đó.

Vẫn còn thực sự bashdưới vỏ bọc, một số bashism như <<<herestrings vẫn hoạt động cho cả trường hợp bash và sh.


Bash và dash (và các dụng cụ GNU), 27

Trên Ubuntu 16.01, shlà một liên kết tượng trưng dash, không thực hiện các <<<bước tiến. Vì vậy, chúng tôi có điều này thay thế:

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

Hãy thử trực tuyến .


Sử dụng tốt một chế độ khác nhau / env!
lập trình

Phiên bản này tốt hơn nhiều so với phiên bản của tôi!
Dave

1

Octave / Hồng y , 28 byte

Chương trình này bình phương đầu vào trong Hồng y và lấy căn bậc hai trong Octave

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

Hãy thử trực tuyến! (Octave)

Hãy thử trực tuyến! (Hồng y)

Vì vậy,% là nhận xét dòng đơn trong Octave để nó chỉ cần nhập và in căn bậc hai

disp(sqrt(input("")))

Vì vậy, chương trình Hồng y không gặp lỗi chia 0 và chết, chương trình

%:=t.

đã được thay đổi với một khoảng trắng, bị bỏ qua bởi cả hai chương trình

Giải thích về chương trình Hồng y:

Chương trình bắt đầu ở%
Nó nhận đầu vào và lưu trữ giá trị dưới dạng hoạt động:
Nó đặt giá trị không hoạt động bằng với hoạt động =
Nó nhân hoạt động của t không hoạt động
Cuối cùng nó xuất giá trị hoạt động.


1

PHP / JavaScript, 43 byte

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

Đầu vào như sau:

<?php $x = 10; ?>

Kinda tự giải thích, nhưng nó có phù hợp với các quy tắc? Mã golf đầu tiên của tôi tho :-)


1
Chào mừng bạn đến với mã golf! Đầu vào phải là một float hoặc một chuỗi chỉ là một float. Nếu tôi hiểu chính xác, điều này đòi hỏi đầu vào riêng biệt.
lập trình

Bạn có chắc chắn điều này chạy như JavaScript? Có vẻ như cả hai phiên bản đều cần một giai đoạn xử lý PHP (JavaScript sẽ không biết phải làm gì alert(<?=$x*$x.')>'.sqrt($x)?)
Dave

0

CGL (Ngôn ngữ chơi gôn CGL) / JS (ES6), 13 byte (không cạnh tranh)

Không cạnh tranh vì:

  1. CGL đã được phát hành sau câu hỏi này.
  2. CGL không phải là một ngôn ngữ hợp lệ . Bởi vì , CGL về mặt kỹ thuật là một ngôn ngữ hợp lệ.

Mã số:

 x=>x**2
//-₂

JS:

Đơn giản: một hàm mũi tên ẩn danh trả về bình phương đầu tiên của nó bình phương. Mã ngôn ngữ không tên được nhận xét.

CGL:

Các không gian không bị phá hủy trước khi dòng đầu tiên hoạt động như một nhận xét. Các /s là không-op. Dòng -thứ hai có nghĩa là giảm số ngăn xếp hiện tại, theo mặc định là 0. Sau đó đặt nó thành -1, nơi lưu trữ đầu vào. Mục thay thế mục đầu tiên trong ngăn xếp hiện tại bằng căn bậc hai của nó, bây giờ là nơi đặt đầu vào. Theo mặc định, ngăn xếp hiện tại được xuất ra, xuất ra căn bậc hai của đầu vào.


Đây là 13 byte. Tôi không biết về CGL, nhưng tôi khá chắc chắn rằng JS sử dụng ascii / utf-8. CGL có thể cũng sẽ sử dụng UTF-8, trừ khi nó có bảng mã riêng.
Rɪᴋᴇʀ

@Riker hiện tại, nó sử dụng ascii / utf-8. Cảm ơn.
lập trình
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.