คำนวณสแควร์และสแควร์รูท!


48

คุณต้องสร้างรูปเหลี่ยมที่แสดงผลสี่เหลี่ยมจัตุรัสของอินพุตในภาษาหนึ่งและสแควร์รูทของอินพุตในอีกภาษาหนึ่ง คำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ!

คุณต้องมีความแม่นยำอย่างน้อย 3 ตำแหน่งทศนิยมและอินพุตจะเป็นทศนิยมบวกเสมอ

คำตอบ:


45

JolfและMATL 1 ไบต์

U

รากที่สองใน Jolf, สแควร์ใน MATL

ลองออนไลน์! (MATL)

ลองใช้รหัส Jolf ใช้ได้กับ Firefox เท่านั้น

ทั้งสองนี้มีขนาด 1 ไบต์เนื่องจากทั้ง MATL และ Jolf ใช้โค้ดเพจ ASCII / Extended ASCII ดังนั้นคำสั่งทั้งหมดจึงมีขนาด 1 ไบต์


90

C และ C ++, 68 65 ไบต์

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

คำตอบเดิม:

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

สำหรับทั้งสองรุ่น C ผลิตn^2และ C ++ sqrt(n)ผลิต


23
+1 ในฐานะ "ฮา!" สำหรับทุกคนที่ปฏิบัติต่อ C และ C ++ เหมือนกัน
DocMax

20
@ CAD97: ใน C autoหมายถึง "จัดสรรบนสแต็ก" คำหลักนั้นค่อนข้างไร้ประโยชน์เพราะเป็นค่าเริ่มต้นดังนั้น C ++ จึงนำมาใช้เพื่อหมายถึงสิ่งอื่น ใน C แม้ว่ามันจะไม่แสดงความคิดเห็นใด ๆ เกี่ยวกับประเภทของp(เป็นคลาสหน่วยเก็บข้อมูลไม่ใช่ประเภท) ดังนั้นจึงนับเป็นintค่าเริ่มต้น ( intพฤติกรรมเริ่มต้นต่อพฤติกรรมนี้ไม่น่าเป็นไปได้ในปัจจุบัน รุ่นก่อนของ C บางตัวไม่มีประเภทข้อมูลเลย แต่คอมไพเลอร์ก็ยังเข้าใจอยู่) และแน่นอน(int)0.5คือ 0.

2
อันนี้ยอดเยี่ยม
เควนติน

1
พบคำถามเกี่ยวกับสแต็คโอเวอร์โฟลว์
YSC

9
ฉันคิดว่าคำอธิบายสำหรับคำตอบนี้จะได้รับการปรับปรุงโดยการแก้ไขในความคิดเห็นของ @ ais523 ซึ่งอธิบายว่าทำไม C ถึงสร้างn^2ขึ้น
Brian J

50

Python 2 และ Python 3, 23 21 ไบต์

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

งูหลาม 2.x ผลิตn^2, Python 3.x sqrt(n)ผลิต

บันทึก 2 ไบต์ด้วย @Dennis!


มันเจ๋งมาก!
njzk2

ทำไม? มันเคยขาดพื้นที่มาก่อนorหรือไม่?
chx

@chx ใน Py2 /ทำการหารจำนวนเต็ม ( 1/2==0) ใน Py3 จะแบ่งจุดลอยตัว ( 1/2==0.5). 0เป็นเท็จ.
Nic Hartley

ถ้าอย่างนั้นทำไมไม่ลบช่องว่างหลังหรือ?
chx

@chx ลองด้วยตัวเอง มันจะพ่นข้อผิดพลาดทางไวยากรณ์ถ้าคุณทำ
numbermaniac

32

2sable / Jelly , 2 ไบต์

*.

2sable คำนวณตาราง ลองออนไลน์!

เยลลี่คำนวณรากที่สอง ลองออนไลน์!

มันทำงานอย่างไร

2sable

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

วุ้น

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

7
มันเหมือนภาษาเหล่านี้ถูกสร้างขึ้นเพียงสำหรับความท้าทายนี้
FloatingRock

20

C (เสียงดังกราว)และPython , 109 107 69 53 ไบต์

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

C: ลองออนไลน์!

Python: ลองออนไลน์!

ทำงานโดยใช้ความคิดเห็นเพื่อพูดได้หลายภาษา ที่เหลือค่อนข้างอธิบายได้

ครั้งแรกที่ใช้ C!

  • บันทึกไม่กี่ไบต์ต้องขอบคุณ @Riker
  • บันทึก 2 ไบต์โดยลบช่องว่างที่ไม่จำเป็นออก
  • บันทึกจำนวนมากโดยใช้ฟังก์ชั่นสำหรับ C แทน STDIN / OUT
  • บันทึก 16 ไบต์ด้วย @Delioth โดยลบคำสั่งนำเข้าที่ด้านบน

@Riker จะทำอย่างไรขอบคุณ
สหาย SparklePony

ฉันเชื่อว่าคุณสามารถลบหนึ่งบรรทัดใหม่หลังจากความคิดเห็น C (บรรทัด 2 ตัวอักษรสุดท้าย) เนื่องจาก C ไม่ต้องการช่องว่างและเป็นสตริงตัวอักษรสำหรับหลามแล้ว เนื่องจากคุณไม่ได้ส่งคืนรหัสพิเศษใด ๆ คุณสามารถละเว้นreturn 0;จากปลาย C99 ถือการส่งคืนโดยปริยายของ 0 main()โดยเฉพาะ ที่มา
Delioth

@Delioth จริง ๆ แล้วมันสมเหตุสมผลมากกว่าที่จะใช้ฟังก์ชั่นและลบล้าง io
สหาย SparklePony

โอ้ดีกว่ามาก คุณจำเป็นต้องรวมstdio.hไว้ในกรณีนี้หรือไม่?
Delioth

@Deloth ฉันไม่ อ๊ะ!
สหาย SparklePony

16

Ohm and Jellyขนาด 3 ไบต์

ส่งออกสแควร์ในโอห์มรากที่สองในเยลลี่

Ohm และ Jelly ใช้ codepages ไบต์เดียวที่แตกต่างกันดังนั้นโปรแกรมจะปรากฏแตกต่างกันในแต่ละการเข้ารหัส

xxd hexdump ของโปรแกรม:

00000000: fd7f 0a                                  ...

วุ้น

เมื่อใช้เพจรหัสของเจลลี่จะมีลักษณะดังนี้:

’
½

เจลลี่ใช้บรรทัดล่างสุดเพื่อเป็นลิงค์หลักและละเว้นลิงค์อื่นนอกจากจะเรียกเฉพาะ ดังนั้นที่นี่มันจะสแควร์รูท ( ½) และเอาท์พุทโดยปริยาย

โอห์ม

เมื่อใช้ codepage ของ Ohm (CP437) จะมีลักษณะดังนี้:

²⌂◙

²เป็นฟังก์ชั่นสแควร์และและทั้งสองไม่ได้กำหนดดังนั้นโปรแกรมเพียงแค่กำลังสองอ่านอินพุตโดยปริยายและเอาท์พุทโดยปริยาย


ดี! จำนวนไบต์นั้นใช้ได้
programmer5000

ฉันแก้ไขคำตอบของฉันถึง 5 ไบต์เพราะสิ่งนี้เช่นกันจับได้ดี
Magic Octopus Urn

ว้าวโอ้คำตอบแรกที่ฉันไม่ได้เขียน! ทำได้ดี!
Nick Clifford

หากคุณใช้หน้ารหัสวุ้นเพื่อรับข้อมูล½เป็นไบต์²แผนที่จะเป็นอย่างไร มันเป็นเพียงขยะที่ยังคงเพิกเฉย? และในทางกลับกันสำหรับโอห์ม ดูเหมือนว่าจะเป็น 2 ไบต์
AdmBorkBork

1
ฉันจะทำตัวอย่างเนื่องจากฉันไม่ต้องการรบกวนการค้นหาจุดรหัสจริง สมมติว่า²ใน Ohm อยู่ที่จุดรหัส 5 รหัสจุด 5 ใน Jelly คือ%และไม่ทำอะไรเลยดังนั้นจึงไม่สำคัญว่าบรรทัดแรกจะเป็นอะไร สมมติว่า½ในเยลลี่อยู่ที่ 27 และรหัสจุด 27 ในโอห์มคือJและไม่ทำอะไรเลยดังนั้นจึงไม่สำคัญว่าบรรทัดที่สองคืออะไร ดังนั้นหากคุณมีไฟล์เท่ากับ00000101<newline>000110113 ไบต์ ฉันเดาว่าปัญหาเดียวคือหากบรรทัดใหม่อยู่ในตำแหน่งที่แตกต่างกันในหน้ารหัส
AdmBorkBork

15

C89 และ C99, 47 + 3 = 50 ไบต์

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

ต้องใช้-lmธง (+3)

C89 ผลิตn^2, C99 sqrt(n)ผลิต หากต้องการทดสอบใน C89 ลองออนไลน์!


การทำให้ C89 ทำsqrtเวอร์ชั่นควรใช้โค้ดน้อยลง แต่มันยืนยันที่จะประกาศsqrtฟังก์ชั่นด้วยints โดยปริยายดังนั้นนี่เป็นวิธีที่ดีที่สุดที่ฉันสามารถจัดการได้


13

ระดับแปดเสียง / MATLAB, 31 29 ไบต์

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

สิ่งนี้จะแสดงผลสี่เหลี่ยมจัตุรัสในอ็อกเทฟและสแควร์รูทใน MATLAB

คำอธิบาย:

ไวยากรณ์มีลักษณะเหมือนกันใน MATLAB และ Octave (อย่างน้อยก็ชิ้นส่วนของรหัสนี้)

สิ่งนี้จะสร้างฟังก์ชั่นที่ไม่ระบุชื่อ:

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

พื้นฐาน / Delphi - 6 ตัวอักษร

sqr(x)

สแควร์รูทในเบสิคและสแควร์ในเดลฟี

คุณสามารถใช้ดีบักเกอร์เพื่อตรวจสอบการแสดงออกดังนั้นตอบสนองความต้องการออกใด ๆ !


2
สิ่งนี้รับอินพุตด้วยตัวเองหรือไม่?
Rɪᴋᴇʀ

ไม่ แต่ไม่มีการส่งข้อมูลอื่น ๆ รวมถึงรายการ C / C ++

แม้ว่าจะยังไม่ถูกต้อง แต่นั่นก็ไม่ได้เปลี่ยนแปลงอะไรเลย ฉันจะพยายามแสดงความคิดเห็นในสิ่งเหล่านั้นด้วย
Rɪᴋᴇʀ

1
คุณสามารถลิงค์สิ่งที่ไม่ทำ ฉันหาอะไรไม่เจอ หนึ่ง C / C ++ เป็นฟังก์ชั่นไม่ได้รับการป้อนข้อมูลแทนพารามิเตอร์
Rɪᴋᴇʀ

3
ใช่ แต่คือxอะไร คุณไม่สามารถสรุปได้ว่ามันถูกบันทึกเป็นค่า แต่คุณอาจลบ(x)และติดป้ายกำกับว่าเป็นการส่งคืนฟังก์ชันได้
Rɪᴋᴇʀ

11

05AB1E / Fireballขนาด 3 ไบต์

ไบต์ต่อไปนี้ทำขึ้นโปรแกรม:

FD B9 74

05AB1E คำนวณสแควร์รูท, ลูกไฟ

คำอธิบาย (05AB1E - ý¹t):

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

คำอธิบาย (Fireball - ²╣t):

²       Square input
 ╣      Unassigned
  t     Unassigned

บางครั้งช่วยให้มีภาษาที่ไม่สมบูรณ์;)


1
05AB1E และ Fireball ใช้การเข้ารหัสที่แตกต่างกัน สิ่งนี้มีผลกับโปรแกรมหรือไม่?
Dennis

@ เดนนิสฉันไม่ได้คิดถึงเรื่องนั้น ดังนั้นการบันทึกโปรแกรมเดียวกันในการเข้ารหัสที่แตกต่างกันจะไม่นับรวมสำหรับรูปหลายเหลี่ยม?
Okx

5
Afaik ค่าเริ่มต้นคือว่าต้องมีการสตรีมไบต์
เดนนิส

10

PHP7 + JavaScript, 62 61 58 ไบต์

นี่มันท้าทายกว่าที่ฉันคาดไว้จริงๆ! ฉันค่อนข้างประหลาดใจที่รหัสของฉันยาวแค่ไหน

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


มันทำงานยังไง?

สิ่งนี้ทำงานได้โดยเลือกรหัสที่จะเรียกใช้จากอาร์เรย์
PHP และ JavaScript +![]การตรวจสอบทำด้วย

ใน PHP [](อาเรย์ที่ว่างเปล่า) เป็นค่าเท็จในขณะที่ JavaScript มันเป็นค่าความจริง (วัตถุ (ยกเว้นnull) มักเป็นจริงเสมอแม้new Boolean(false)จะเป็นความจริง!)
แต่ฉันต้องได้มันมาเป็นค่าตัวเลขดังนั้นฉันแค่ใช้not( !) แล้วแปลงมันเป็นจำนวนเต็ม (ด้วย+)
ตอนนี้ PHP อัตราผลตอบแทนคุ้มค่าในขณะที่อัตราผลตอบแทน1 JavaScript การวางรหัสภายในอาเรย์ที่ดัชนีเหล่านั้นจะทำให้เราสามารถเลือกรหัสที่ถูกต้องสำหรับภาษาที่ต้องการ สิ่งนี้สามารถใช้เป็นเพื่อรับรหัสของภาษาที่เหมาะสม0

[JS,PHP][+![]]

ใน polyglots ก่อนหน้านี้ฉันใช้'\0'=="\0"ซึ่งอยู่trueใน JavaScript (เนื่องจาก\0มีการแยกวิเคราะห์เป็น NULL-byte) และfalseใน PHP ( '\0'จะไม่ถูกแยกวิเคราะห์เป็น NULL-byte เปรียบเทียบสตริงตัวอักษร\0กับ NULL-ไบต์)
ฉันดีใจที่ฉันสามารถลดเช็คนี้+!'0'ได้
ฉันมีความสุขมากยิ่งขึ้นเกี่ยวกับ@rckdซึ่งลดลงเป็นเวอร์ชันปัจจุบัน!

จากนั้นมันevalเป็นรหัสที่จำเป็น

PHP

PHP จะดำเนินการecho$argv[1]**.5(เทียบเท่ากับจำนวนecho sqrt($argv[1]);สแควร์รูท), รับค่าจากอาร์กิวเมนต์ที่ 2 และแสดงในเอาต์พุตมาตรฐาน

JavaScript

JavaScript รันซึ่งแสดงจำนวนสแควร์ในalert((_=prompt())*_)alert



ขอบคุณ@rckdสำหรับการบันทึก 1 ไบต์และ@ user59178สำหรับการบันทึก 3 ไบต์!


1
! [] จะช่วยคุณประหยัด 1 byte :-)
rckd

1
@rckd Holy cow! ลืมเกี่ยวกับอาร์เรย์ที่ว่างทั้งหมด ขอขอบคุณ! ฉันได้แก้ไขคำถามพร้อมคำอธิบายเกี่ยวกับวิธีการทำงาน
Ismael Miguel

1
คุณสามารถบันทึก 3 ไบต์โดยใช้echo$argv[1]**.5แทนecho sqrt($argv[1])
user59178

ว้าวประหยัดดี! ขอขอบคุณ! ฉันได้เพิ่มเข้าไปในคำตอบ
Ismael Miguel

8

05AB1EและJellyขนาด 4 ไบต์

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.

บางคนทำคะแนนได้ดีฉันเดาว่าเนื่องจากตัวอักษร UTF-8 ไม่ได้ใช้การทำงานแบบเดียวกันในหน้ารหัสที่พวกเขาใช้เทคนิค 2 ไบต์ในการเข้ารหัส อย่างไรก็ตามเมื่อดูที่นี่ในแง่ของการถ่ายโอนข้อมูล hex:

6e 71 93 0a

ในการเข้ารหัส CP1252 ของ 05AB1E ผลลัพธ์นี้ใน:

nq“\n

หมายความว่ามันจะยังคงส่งออกสแควร์และออกโดยไม่สนใจส่วนที่เหลือ เมื่อไบต์เหล่านี้ถูกเข้ารหัสโดยใช้เพจรหัสของ Jelly:

nqƓ½

ซึ่งเป็นรหัสตั้งใจเดิมเมื่อดำเนินการผลลัพธ์ในผลลัพธ์ที่ต้องการของการป้อนข้อมูลและการ sqrt


2
นี่คือ 6 ไบต์ใน UTF-8 เนื่องจากทั้งคู่Ɠและ½ต้องการเข้ารหัสสองไบต์ อย่างไรก็ตามลำดับไบต์6e 71 93 0a( nqƓ½สำหรับ Jelly, nq“\nสำหรับ CP-1252) ควรทำงานได้ทั้งสองภาษา
เดนนิส

@Dennis ½กำลังอยู่ในหน้ารหัสทั้งสองไม่อนุญาตให้มันนับเป็นหนึ่งเดียวเพราะพวกเขากำลังดำเนินการที่แตกต่างกันฉันคิดว่า? ฉันยังคงคลุมเครือในสิ่งที่หน้ารหัสทั้งหมด
Magic Octopus Urn

1
การให้คะแนนเป็นไบต์หมายถึงการนับจำนวนสตรีมไบต์ หากล่ามไม่รองรับการเข้ารหัสอักขระบางตัวในหน้ารหัสหนึ่งและอักขระอื่น ๆ ในอีกตัวหนึ่งเราไม่สามารถทำได้เพื่อจุดประสงค์ในการให้คะแนน
เดนนิส

4
@carusocomputing การส่งของคุณคือ 4 ไบต์6e 71 93 0aดังนั้นจึงไม่มี "ทฤษฎี" เกี่ยวกับการอ้างสิทธิ์ 4 ไบต์ เพียงแค่เรียกร้อง 4 ไบต์ มันเกิดขึ้นอย่างนั้นในการเข้ารหัสมาตรฐานของ 05AB1E มันอ่านสิ่งหนึ่งที่ทำในสิ่งที่คุณต้องการในขณะที่ในการเข้ารหัสมาตรฐานของ Jelly มันจะอ่านอีกอันหนึ่งซึ่งทำในสิ่งที่คุณต้องการ นอกเหนือจากนั้นการเข้ารหัส 2 ตัวสามารถเข้ารหัสอักขระเดียวกันไม่ได้หมายความว่าอักขระนั้นจะเหมือนกันในทั้งสองตัว ลองนึกถึงการเข้ารหัสเหมือนตัวเลขที่มีตัวเลขพร้อมกับตารางการค้นหาแล้วแชร์และหวังว่าจะช่วยให้คุณเริ่มต้นแบบจำลองทางจิตที่ดี
เดฟ

@ เดฟฉันต้องตีความเดนนิสผิดแล้ว
Magic Octopus Urn

6

CJam / MATL , 8 ไบต์

ld_*GX^!

คำนวณสแควร์ใน CJam ( ลองออนไลน์! ) และสแควร์รูทใน MATL ( ลองออนไลน์! )

คำอธิบายของตารางใน 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

คำอธิบายของสแควร์รูทใน 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

เฮ้! ส่งดี! สนใจเพิ่มคำอธิบายเหมือนคำตอบอื่น ๆ หรือไม่
programmer5000

@ programmer5000 ฉันแก้ไขข้อผิดพลาดและเพิ่มคำอธิบาย
Luis Mendo

5

Python 2 และ Forth, 43 33 ไบต์

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

ลองออนไลน์: Python 2 (สี่เหลี่ยมจัตุรัส) | ออกมา (sqrt)

สิ่งนี้ประเมินว่าเป็นฟังก์ชันที่ไม่ระบุตัวตนใน Python และฟังก์ชันfsqrtในตัวใน Forth Python สามารถใช้ชื่อฟังก์ชั่นที่มีfขนาดเพิ่มขึ้น 2 ไบต์โดยวางไว้f=ด้านหน้าแลมบ์ดา

โปรแกรม Forth ใช้จุดลอยตัวตามตัวอักษรซึ่งใน Forth จะต้องเขียนด้วยสัญลักษณ์ทางวิทยาศาสตร์ Pi ถูกปัดเศษเป็นทศนิยม 3 ตำแหน่ง ( 3.141) จะเขียนดังนี้:

3141e-3

5

JavaScript (ES6) / JavaScript (ES7), 52 ไบต์

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

ส่งคืนสแควร์ของอินพุตใน ES7 และสแควร์รูทใน ES6 ค่อนข้างยากที่จะทดสอบเว้นแต่ว่าคุณจะมีเบราว์เซอร์รุ่นเก่าที่รองรับ ES6 แต่ไม่ใช่ ES7

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

console.log(f(4));


ฉลาด! ทำได้ดีมากกับสิ่งนี้!
programmer5000

มีเหตุผลสำหรับ backticks หรือไม่? ดูเหมือนว่าคำพูดเดียวจะทำงาน
JLRishe

@JLRishe Nope ไม่มีเหตุผล :)
Tom

5

PHP และCJam , 30 29 25 ไบต์

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

คำนวณสแควร์ใน PHP และสแควร์รูทใน CJam จะต้องมีการใช้งาน-rใน PHP

PHP

เพิ่มอาร์กิวเมนต์บรรทัดคำสั่งแรก ( $argv[1]) เป็น 2 และส่งออก นี่$argv[1]คือจริง ๆ แล้วใส่เป็นตัวแปรแบบอินไลน์ในสายอักขระซึ่งถูกส่งไปยังหมายเลขก่อนทำการยกกำลัง นี่เป็นเพราะvไม่ใช่คำสั่งที่ถูกต้องใน CJam และจะทำให้เกิดข้อผิดพลาดขณะแยกวิเคราะห์ แต่การใส่ลงในสตริงจะไม่ทำให้เกิดปัญหาใด ๆ

# เริ่มความคิดเห็นดังนั้นทุกอย่างหลังจากที่ถูกละเว้น

ลองออนไลน์!

CJam

ส่วนแรกของรหัสECHO"$argv[1]"**2;#ดันกลุ่มของค่าและดำเนินการกลุ่มซึ่งทั้งหมดนี้จะไร้ประโยชน์อย่างทั่วถึง สิ่งสำคัญเพียงอย่างเดียวก็คือพวกเขาไม่ได้ทำให้เกิดข้อผิดพลาดใด ๆ เพราะหลังจากนั้นคือ];ซึ่งจะห่อทั้งกองในอาร์เรย์แล้วทิ้งมัน

หลังจากนั้นมันจะอ่านค่าสองเท่าจากอินพุต ( rd) และรับค่าสแควร์รูท ( mq) และส่งออกโดยปริยาย

ลองออนไลน์!


5

C, ภาษาสคริปต์Flashpoint Operation , 52 ไบต์

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

ในสคริปต์ OFP เซมิโคลอนที่จุดเริ่มต้นของบรรทัดทำให้บรรทัดนั้นแสดงความคิดเห็นในขณะที่ C ไม่สนใจเซมิโคลอนเพิ่มเติม

C:

ลองออนไลน์!

ภาษาสคริปต์ OFP:

บันทึกเป็นในโฟลเดอร์ภารกิจนั้นเรียกมันด้วยinit.sqshint format["%1", 2 call F]

ผลลัพธ์: ป้อนคำอธิบายรูปภาพที่นี่


โอเคนี่เจ๋งทีเดียว คุณคิดว่าใช้ scritping lang นั้นเป็นอย่างไร
Rɪᴋᴇʀ

@Riker Operation Flashpoint เป็นหนึ่งในเกมที่ฉันชอบเสมอ ฉันเคยทำสิ่งต่าง ๆ มากมายด้วยภาษาสคริปต์ของมัน
Steadybox

3

Reticular / Befunge-98 , 15 ไบต์

ภาษา 2 มิติ!

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

Befunge-98

/&:*.@

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

ไขว้กันเหมือนแห

/           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 ไบต์ (รหัส 7 ไบต์ + 2 สำหรับแฟล็ก '-v' ใน> <>)

ชายฉันสนุกกับโครงสร้างลิงก์ของเจลลี่จริงๆ

:*n;
½

คำนวณตาราง ใน> <> และราก ในเยลลี่


คุณได้รับอนุญาตให้ไม่ใช้ -v in jelly ด้วยหรือไม่
Rɪᴋᴇʀ

-vในความคิดของฉันการใช้งานเป็นไปตาม [คำตอบที่ได้รับคะแนนสูงสุด [( codegolf.meta.stackexchange.com/a/11431/44874 ) ในการจัดการ meta querstion ในกรณีนี้ ><>ล่ามต้องการที่-vและนี่คือเหตุภาวนาเป็นไปได้ง่าย
steenbergh

3

Python 3 + JavaScript, 101 ไบต์

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)

สแควร์รูทใน JS, สแควร์ใน Python

ใช้งานได้กับ Firefox (ทดสอบกับ FF 52) และต้อง(function(x) x)(42) === 42เป็นไวยากรณ์ที่ถูกต้อง ยังต้องใช้ ES7 สำหรับ**ผู้ใช้งาน


ทดสอบบน Firefox และใช้งานได้ เป็นไปได้ไหมที่จะใช้x=>x**yแทน หรือ Python จะทำให้หายใจไม่ออก
Ismael Miguel

@IsmaelMiguel python ไม่สนับสนุนฟังก์ชันลูกศร
Rɪᴋᴇʀ

สิ่งนี้ใช้ไม่ได้กับงูหลาม ฟังก์ชั่นไม่ใช่คำหลัก
Rɪᴋᴇʀ

มันใช้งานได้ดี เนื่องจากfunctionไม่ใช่คำหลักจึงเป็นตัวระบุที่ถูกต้อง ดังนั้นฉันเพิ่งกำหนดฟังก์ชั่น noop ให้กับมัน (ภายในexecคำสั่ง)
kjaquier

3

bash และ sh, 48 ไบต์

อัปเดต: ฉันต้องยอมรับความพ่ายแพ้ คำตอบ bash / sh ของDigital Traumaนั้นงดงามกว่าคำตอบนี้มาก


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

ทุบตีผลิตn^2, sqrt(n)การดวลจุดโทษผลิต


bcมีความจำเป็นเท่านั้นจึงsqrtจะสามารถคำนวณได้ ความแตกต่างในพฤติกรรมอยู่ระหว่างทุบตีและดวลจุดโทษ

ตกลงเทคนิค "sh" ที่ฉันใช้อยู่นั้นยังคงทุบตีอยู่ แต่ทุบตีในโหมด "POSIX" (ซึ่งจะเกิดขึ้นหากคุณเรียกใช้/bin/shแทน/bin/bashบนระบบที่/bin/shเป็นนามแฝงสำหรับทุบตี) หากเป็นกรณีนี้ในระบบของคุณคุณสามารถทดสอบกับ:

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

สิ่งนี้อิงจากหนึ่งในความแตกต่างที่อธิบายไว้ที่นี่: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html


1
มันทำงานอย่างไร
Brian Minton

2
@BrianMinton ลองใช้kill -l(แสดงรายการสัญญาณเป็นไปได้ไม่ได้เปลี่ยนแปลงอะไร) ในและbash shมันเป็นหนึ่งในความแตกต่างมากมายที่คุณสามารถพบได้ที่นี่: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
เดฟ

3

QBIC / QBasic, 26 18 ไบต์

input a
?a^2'^.25

ในQBasicมันต้องใช้ตัวเลขและพิมพ์ตัวเลขนั้นกำลังสอง ส่วนที่เหลือของรหัสจะถูกละเว้นเพราะ QBasic เห็นว่ามันเป็นความคิดเห็น ( ')

QBICใช้คำสั่งอินพุตเดียวกัน จากนั้นมันก็จะพิมพ์เลขเดิมนั้นยกกำลังสองแล้วยกกำลังหนึ่งในสี่ นี่เป็นเพราะ'ถูกมองว่าเป็นตัวอักษรของรหัส: รหัส QBasic ล้วนที่ไม่ได้แยกวิเคราะห์โดย QBIC


2

Jelly / Pipขนาด 6 ไบต์

แก้ไข: มันสั้นลงหนึ่งไบต์เพื่อย้อนกลับการทำงาน

RTa
²

ลองเยลลี่ออนไลน์!

เยลลี่เริ่มต้นการดำเนินการที่ด้านล่างของรหัส (ลิงค์หลักของมัน) และดูว่ามันต้องการอะไรที่สูงกว่าหรือเปล่า: มันเห็นคำสั่งให้ทำตารางและดูแลอินพุตและเอาต์พุตโดยปริยาย

ลอง Pip ออนไลน์!

Pip เรียกใช้งานบรรทัดบนสุดยกกำลังสอง (อ่านโดยนัยจากบรรทัด cmd) var a และพิมพ์โดยนัย บรรทัดล่างถูกละเว้น


ทางเลือก 6 PRTaVSbyter:
steenbergh

2

ภาษา Wolfram / PHP , 25 ไบต์

รับสแควร์ของตัวเลขในภาษา Wolfram และรับสแควร์รูทใน PHP;

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

บรรทัดแรกคือภาษา Wolfram อันดับแรกคุณคือคนที่เปลี่ยน n ใน searchbar ใน Wolfram Alpha ดังนั้นโค้ดก็เป็นอินพุตเช่นกัน จากนั้นมันจะสร้างคำตอบเมื่อกด Enter

n^2

บรรทัดที่สองคือ PHP จะได้รับสแควร์รูทของ n ซึ่งต้องใส่ในแถบที่อยู่ (เช่น ppcg.php.net?n=213 โดยที่ 213 เป็นค่าของ n)

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

1
ยินดีต้อนรับสู่ PPCG! อย่างไรก็ตามคุณต้องป้อนข้อมูลอย่างใด คุณไม่สามารถสรุปได้ว่าตัวเลขนั้นถูกเก็บไว้ในตัวแปร ขอโทษสำหรับเรื่องนั้น. คุณสามารถดูรายการวิธีการที่ยอมรับได้ที่นี่ (คะแนนบวกของคำตอบหมายถึงอนุญาต, ลบหมายถึงไม่ได้รับอนุญาต)
Rɪᴋᴇʀ

เข้าใจแล้ว. ฉันจะแก้ไขคำตอบของฉัน :) อีกสิ่งหนึ่งฉันจะอธิบายว่าทำไมการเพิ่มรหัสอื่นสำหรับการป้อนข้อมูลใน wolfram ไม่สามารถใช้ได้
Jimwel Anobong

ยินดีที่ได้ช่วย! หวังว่าคุณจะติดอยู่ใน ppcg!
Rɪᴋᴇʀ


1
ภาษา Wolfram ขึ้นอยู่กับ mathematica ซึ่งต้องการสูตรทางคณิตศาสตร์ที่จะพิมพ์ในแบบที่ไม่เป็นธรรมชาติ อีกสิ่งหนึ่งผู้ตอบล้างออกเว็บไซต์ของมันไม่ใช่ภาษา แต่ภาษาวุลแฟรมเป็นภาษาที่รองรับ ภาษา Wolfrsm และ WolframAlpha เกี่ยวข้องกับแต่ละ ofher แต่ไม่เหมือนกัน พวกคุณต่างกันโดยสิ้นเชิง
Jimwel Anobong


2

macOS Bash and sh ขนาด 24 ไบต์

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

ใน Mac, shมีการbashทำงานในโหมด Posix และในกรณีนี้ตามhttps://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :

คำสั่งการกำหนดก่อนหน้าบิวด์พิเศษ POSIX จะคงอยู่ในสภาพแวดล้อมเชลล์หลังจากบิวด์อินเสร็จ

ดังนั้นสำหรับshตัวแปรที่pมีค่า^4หลังจากที่:ถูกเรียกใช้ แต่สำหรับbashตัวแปรpเท่านั้นที่มีค่านี้ในขณะที่:ถูกเรียกใช้และว่างเปล่าหลังจากนั้น

ยังคงbashอยู่ภายใต้ผ้าห่มจริงๆbashisms บางอย่างเช่น<<<herestrings ยังคงใช้ได้ทั้งในกรณี bash และ sh


Bash and dash (และ GNU utils), 27

บน Ubuntu 16.01 shนั้นเป็น symlink dashซึ่งไม่ได้ทำสิ่งที่<<<ผิด ดังนั้นเราจึงได้สิ่งนี้แทน:

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

ลองมันออนไลน์


การใช้โหมดอื่นที่แตกต่างกัน / env!
programmer5000

มันดีกว่ารุ่นของฉันมาก!
เดฟ

1

คู่ / พระคาร์ดินัล 28 ไบต์

โปรแกรมนี้กำลังสองอินพุตใน Cardinal และรับสแควร์รูทใน Octave

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

ลองออนไลน์! (คู่)

ลองออนไลน์! (พระคาร์ดินัล)

% เป็นความคิดเห็นบรรทัดเดียวใน Octave ดังนั้นมันจึงได้รับอินพุตและพิมพ์สแควร์รูท

disp(sqrt(input("")))

เพื่อให้โปรแกรม Cardinal ไม่พบการหารด้วย 0 ข้อผิดพลาดและโปรแกรมตาย

%:=t.

ถูกเลื่อนด้วยช่องว่างซึ่งทั้งสองโปรแกรมถูกละเว้น

คำอธิบายของโปรแกรมที่สำคัญ:

โปรแกรมเริ่มต้นที่%
มันรับอินพุตและเก็บค่าเป็นแอ็คทีฟ:
มันตั้งค่า inactive ให้เท่ากับ active =
มันทวีคูณการใช้งานโดย inactive t
ในที่สุดมันก็จะออกค่าแอคทีฟ


1

PHP / JavaScript, 43 ไบต์

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

การป้อนข้อมูลเป็นไปเช่น:

<?php $x = 10; ?>

ค่อนข้างอธิบายตัวเอง แต่มันพอดีกับกฎหรือไม่ กอล์ฟรหัสครั้งแรกของฉัน :-)


1
ยินดีต้อนรับสู่โค้ดกอล์ฟ! อินพุตต้องเป็นทศนิยมหรือสตริงที่เป็นเพียงลอย หากฉันเข้าใจถูกต้องสิ่งนี้ต้องแยกอินพุต
programmer5000

คุณแน่ใจหรือว่านี่เป็น JavaScript ดูเหมือนว่าทั้งสองรุ่นจะต้องมีขั้นตอนการประมวลผล PHP (จาวาสคริปต์จะไม่ทราบว่าจะทำอย่างไรกับalert(<?=$x*$x.')>'.sqrt($x)?)
เดฟ

0

CGL (ภาษากอล์ฟ CGL) / JS (ES6), 13 ไบต์ (ไม่แข่งขัน)

ไม่ใช่การแข่งขันเพราะ:

  1. CGL ได้รับการปล่อยตัวหลังจากคำถามนี้
  2. CGL ไม่ได้เป็นภาษาที่ถูกต้อง เนื่องจากและCGL เป็นภาษาที่ใช้ได้จริงในทางเทคนิค

รหัส:

 x=>x**2
//-₂

JS:

ง่าย: ฟังก์ชั่นลูกศรที่ไม่ระบุชื่อที่ส่งกลับอาร์กิวเมนต์แรกของมันกำลังสอง รหัสภาษาที่ไม่มีชื่อถูกใส่ความคิดเห็น

CGL:

พื้นที่ที่ไม่ทำลายก่อนบรรทัดแรกทำหน้าที่เหมือนแสดงความคิดเห็น /s นี้ไม่มี-Ops -ในบรรทัดที่สองหมายถึงการลดลงของจำนวนสแต็คในปัจจุบันซึ่งเป็นค่าเริ่มต้นเป็น 0 ที่แล้วชุดมัน -1 ที่การป้อนข้อมูลจะถูกเก็บไว้ แทนที่รายการแรกในสแต็คในปัจจุบันที่มีรากซึ่งขณะนี้อยู่ที่การป้อนข้อมูลที่ถูกวางไว้ ตามค่าดีฟอลต์แล้วสแต็กปัจจุบันจะถูกเอาต์พุตซึ่งจะส่งเอาต์พุตสแควร์รูทของอินพุต


นี่คือ 13 ไบต์ ฉันไม่รู้เกี่ยวกับ CGL แต่ฉันค่อนข้างมั่นใจว่า JS ใช้ ascii / utf-8 CGL อาจใช้ UTF-8 ด้วยเว้นแต่ว่ามันจะเป็นเพจรหัสของตัวเอง
Rɪᴋᴇʀ

@Riker สำหรับตอนนี้มันใช้ ascii / utf-8 ขอบคุณ
programmer5000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.