เอาต์พุต Pi ไม่มีคณิตศาสตร์ [ปิด]


56

ในไม่กี่ไบต์ให้มากที่สุดงานของคุณคือการเขียนโปรแกรมที่ให้ผลลัพธ์:

3.14

ในการฉลองวันปลายปีแน่นอน! :)

กฎระเบียบ

คุณสามารถทำได้อย่างไรก็ตามคุณชอบ แต่มีข้อ จำกัด บางอย่าง

  • คุณไม่สามารถใช้การคำนวณทางคณิตศาสตร์ได้ทุกที่ในโปรแกรมของคุณ ซึ่งรวมถึง+, -, *, /, %, ^(ยกกำลัง) ฯลฯ ... นี้ยังรวมถึงการเพิ่ม (ปกติ++) decrementing ( --) การดำเนินงานค่าที่เหมาะสมและใด ๆ ที่สร้างขึ้นในฟังก์ชั่นที่สามารถใช้แทนเช่นsum(), prod(), mod(), double(), pow(), sqrt(), inc(),, dec()ฯลฯ ... (ดุลยพินิจของผู้เขียน)
  • ตัวเลข3, 1และ4อาจไม่ปรากฏที่ใดก็ได้ในรหัสของคุณ
  • คุณอาจจะไม่ได้ใช้ตัวแปรที่กำหนดไว้ล่วงหน้า / ค่าคงที่ใด ๆ ที่ภาษาของคุณอาจจะมีแทนสำหรับ3, และ1 4(ดุลยพินิจของผู้เขียน)
  • คุณอาจจะยังไม่ได้ใช้ฟังก์ชั่นตรีโกณมิติใด ๆ เช่นsin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh()ฯลฯ ... (ดุลยพินิจของผู้เขียน)
  • คุณไม่สามารถใช้ค่า Pi หรือ (หรือ3.14) ที่กำหนดไว้ล่วงหน้า ไม่มีหน้าเว็บ
  • โปรแกรมของคุณไม่สามารถป้อนข้อมูลใด ๆ (นอกเหนือจากเรียกใช้)
  • 3.14เป็นสิ่งเดียวที่คุณอาจส่งออกมันไม่สามารถเป็นส่วนหนึ่งของเอาท์พุทยาว / ใหญ่

ผู้ชนะ

คำตอบที่มีจำนวนไบต์น้อยที่สุดในวันที่ 18 เมษายนชนะ โชคดี!

รอคอยที่จะได้คำตอบที่ฉลาดจากจิตใจที่ฉลาด! ผิดพลาดใคร : P


3
คุณอาจต้องการชี้แจงว่า^ตัวดำเนินการการยกกำลังไม่ใช่ตัวดำเนินการ XOR ที่เป็นระดับบิต
ace_HongKongIndependence

2
ผู้ประกอบการระดับบิตได้รับอนุญาตหรือไม่
ProgramFOX

1
@ProgramFOX ดีพวกเขาสามารถใช้แทนการดำเนินงานปกติดังนั้นไม่ ไม่ได้รับอนุญาต. ฉันจะแก้ไขโพสต์
kukac67

1
ขอเว็บได้หรือไม่
swish

7
@swish: ฉันจะไม่ใช้หน้าเว็บเพราะที่อยู่ในรายชื่อของมาตรฐาน "ช่องโหว่" ซึ่งจะไม่ตลก
ProgramFOX

คำตอบ:


25

CJam - 8 6

S`,'.E

CJam เป็นภาษาใหม่ฉันกำลังพัฒนาคล้ายกับ GolfScript - http://sf.net/p/cjam
นี่คือคำอธิบาย:

Sเป็นตัวแปร preinitialized ไปที่ช่องว่าง ("")
`สร้างการแสดงสตริงของค่าสุดท้าย - ซึ่งเป็นอย่างแน่นอน" "(3 ตัวอักษร)
,คำนวณความยาวของสตริง (3)
'.เป็นตัวละครจุด
Eเป็นตัวแปร preinitialized ถึง 14; 3, 1 และ 4 ไม่ได้รับอนุญาต แต่มันไม่ได้พูดอะไรเกี่ยวกับ 14 :)

มอบเครดิตให้แก่ Doorknob สำหรับแนวคิด backtick


1
@Brilliand Eฉันจะยอมรับการใช้งานของ
kukac67

6
@ kukac67 ในขณะที่ฉันยังไม่ได้วางจำหน่ายอย่างเป็นทางการ (มาวันนี้) ฉันได้ทำรหัส CJam ปัจจุบันผ่านทาง hg แล้ว หากคุณได้รับรหัส CJam ตั้งแต่ 1 วันก่อนที่คุณจะโพสต์คำถามมันจะเรียกใช้โปรแกรมของฉันอย่างถูกต้อง (ดังนั้นฉันจึงไม่ได้ทำการเปลี่ยนแปลงเพื่อแก้ไขปัญหานี้) แต่ฉันจะไม่รังเกียจจริงๆ
aditsu

33
เวลาในการพัฒนา HQ9 + π ...
Nzall

2
@AnonymousPi ทุกคนมีอิสระที่จะลงคะแนนสำหรับคำตอบที่เลือก บางทีพวกเขาอาจจะประทับใจกับคำตอบอื่น ๆ แม้ว่าพวกเขาจะไม่สั้น
aditsu

2
ทำไมคุณมีตัวแปรกำหนดค่าเริ่มต้นเป็น 14?
user2357112

113

PHP - 22 ไบต์

<?=date('n.j',8899e5);

Pi Day ในปี 1998 นั้นยอดเยี่ยมจริงๆ!


13
@ kukac67: n.jเป็นรูปแบบและ8899e5เป็นเวลา Unix ของวันที่ 14 มีนาคมในปี 1998
ProgramFOX

7
นั่นช่างฉลาดเหลือเกิน
Amal Murali

7
คุณสามารถบันทึก 7 ,8899e5ตัวอักษรโดยการเอา มันจะถูกต้องปีละครั้ง
Damir Kasipovic

1
@Timo คุณพูดถูก แต่มันมีตัวเลขผิดกฎหมาย "3";)
Blackhole

18
@Blackhole 20 ไบต์: <?=date('w.W',78e5);1 เมษายน 1970 เป็นวันพุธในสัปดาห์ที่ 14
primo

92

C, 39

ถือว่าเครื่องนั้นเป็น endian เล็ก ๆ น้อย ๆ และใช้มาตรฐาน IEEE จำนวนจุดลอยตัว

main(){printf("%.2f",*(float*)"P@I@");}

ความจริงก็คือความสนุกที่"P@I@"ไม่เกี่ยวข้องกับPIแต่เทียบเท่ากับ0x40494050ที่เป็นตัวแทนของ3.144550323486328

http://ideone.com/uXVEtl


3
นั่นเป็นสิ่งที่ยอดเยี่ยมมาก
wchargin

1
รหัสของคุณจะสันนิษฐานว่าพิมพ์เล็ก ๆ น้อย ๆ บนเครื่องขนาดเล็ก
Nayuki

@NayukiMinase ใช่คุณพูดถูกมันคุ้มค่าที่จะชี้ให้เห็น และยังถือว่าการใช้มาตรฐานจุดลอยตัว IEEE
Michael M.

และมันมีพฤติกรรมที่ไม่ได้กำหนด (การประกาศโดยนัยของฟังก์ชั่น
Variadic

5
รหัสนี้ถือว่าจริงแล้วเครื่องนี้เป็นเครื่องของ Michael :-)
Konrad Borowski

50

dc , 11 9 ไบต์

zE[.]znPp
  • z กดความลึกของกองซ้อนปัจจุบัน (0) ลงบนสแต็ก
  • Eกด E 16 (== 14 10 )
  • [.] กดสตริง "."
  • z ผลักความลึกปึกปัจจุบัน (3) ลงบนสแต็ก
  • n ป๊อป 3 และพิมพ์เป็นตัวเลข
  • Pป๊อป "." และพิมพ์เป็นตัวละคร
  • p Pop 14 และพิมพ์เป็นตัวเลขด้วยการขึ้นบรรทัดใหม่

เอาท์พุท:

$ dc <<< zE[.]znPp
3.14
$ 

ดังนั้น "ใช้ฐานอินพุต" เป็นตัวดำเนินการหรือไม่ มันมีกลิ่นเหมือนการดำเนินการทางคณิตศาสตร์ แต่ก็ยังคงใช้ได้
Brilliand

@Brilliand ไม่มีอะไรที่ฉันเห็นในคำถามที่ห้ามการแปลงฐาน ในความเป็นจริง OP ดูเหมือนจะให้กำลังใจการแปลงพื้นฐานในความคิดเห็นที่นี่codegolf.stackexchange.com/a/25681/11259
Digital Trauma

ฉันยอมรับว่าถูกต้อง ฉันแค่คิดว่าเมื่อการแปลงฐานเป็นตัวดำเนินการแทนที่จะเป็นส่วนหนึ่งของไวยากรณ์ตัวเลขมันทำให้เส้นแบ่งระหว่างข้อมูลแบบอินไลน์และการดำเนินการทางคณิตศาสตร์
Brilliand

ฉันคิดว่านี่ควรเป็น 15 ไบต์?
สมาชิกที่ลงทะเบียน

9
@AdityaPatil ทำไม dcเป็นภาษาและล่ามเหมือนกับภาษาอื่น ๆ ที่นี่ dc -e เป็นเพียงการร้องขอของล่ามนั้น ฉันสามารถบันทึกโปรแกรมขนาด 9 ไบต์ในไฟล์และเรียกใช้งานdc pi.dcได้อย่างง่ายดาย หากจำเป็นต้องนับจำนวนไบต์เหล่านี้จะต้องใช้กับภาษาอื่นทั้งหมด เช่นรวมpython อยู่ในรายการหลามทั้งหมดหรือruby golfscript.rb ในรายการ Golfscript ทั้งหมด ฉันเชื่อว่าการประชุมที่ตกลงกันที่นี่จะไม่รวมสิ่งเหล่านี้เว้นแต่ตัวเลือกพิเศษจะต้องผ่าน
บาดเจ็บทางระบบดิจิตอล

42

JavaScript ( ES5 ) 20 ไบต์

ชุดรูปแบบของโซลูชัน JS ของ m.buettner

(x='.'+0xE).length+x

แก้ไข: JavaScript ( ES5 ) 18 ไบต์

ความแตกต่างของแนวคิดของ ComFreek ในการใช้ฟังก์ชันถอดรหัส base64

atob('Mw')+'.'+0xE

แก้ไข: Javascript ( ES5 ) 16 ไบต์

หาก+โอเปอเรเตอร์unary ได้รับอนุญาตให้ร่ายสตริงเป็นตัวเลขมันจะลดลงเป็น:

+atob('MDMuMTQ')

ว้าว! นั่นฉลาดจริงๆ!
kukac67

9
@NateEldredge นี่คือการต่อข้อมูลสตริงไม่ใช่คณิตศาสตร์
tomsmeding

คือการใช้ที่+ยอมรับได้ที่นี่?
phuclv

1
ฉันพบว่าโซลูชัน Javascript นั้นสวยงามที่สุดและฉันกำลังจะโพสต์ของฉันจนกว่าฉันจะสังเกตเห็นว่ามันมี '4' อยู่ในนั้น: atob ('My4xNA =='), lol
rdev5

1
@ เดนนิสคุณถูกต้องมันยังอยู่ที่นั่น มันจะอยู่ที่นั่นถ้าฉันคัดลอก + วางผลลัพธ์จากคอนโซล ฉันไม่มีความสุขกับมันดังนั้นฉันจะกลับไปใช้โซลูชัน 16 ไบต์
nderscore

39

Haskell, 41 ไบต์

เมื่อไหร่ที่ pi day ในออสเตรเลีย?

p=(\(a:n:y:t:i:m:e:_)->[m,a,t,e])['.'..]

แก้ไขเพื่อเพิ่ม: เช่นเดียวกับคำตอบของ Haskell อื่น ๆ ที่ส่งออกสตริงดังนั้นจึงมีเครื่องหมายคำพูด คุณสามารถทำคะแนน 33 และอยู่ภายในกฎอย่างเคร่งครัด แต่ก็สนุกน้อยลง:

p=putStr$map([','..]!!)[7,2,5,8]

ฮ่าฮ่าว้าว ดีจัง!
Ry-

คุณช่วยอธิบายได้ไหมว่าทำไมสิ่งนี้ถึงได้ผล
yhager

5
ฉันชอบอันนี้มาก +1 แต่ฉันคิดว่าในทางเทคนิค ".. " กำลังเรียกใช้ตัวดำเนินการส่วนเพิ่มซึ่งถูกห้าม (ความจริงแล้วการ upvoting นั้นเรียกใช้การเพิ่มขึ้นดังนั้นควรห้ามเช่นกัน ;-)
Marc van Leeuwen

ฉันคิดอย่างนั้นจริง - ฉันมีคำตอบที่สั้นกว่านี้: p=[2.9,2.92..]!!([0,6..]!!2)... และในอันนี้..มันดูผิด แต่ Haskell นั้นพิมพ์ออกมาอย่างรุนแรงและการเพิ่มคำตอบที่ฉันให้นั้นCharไม่ใช่Numและไม่ได้เป็นเลขคณิต - สิ่งที่ถูกแบนจริง ๆ ฉันต้องการที่fromEnumจะแปลงตัวอักษรกลับไปเป็นตัวเลขเพื่อใช้เป็นวิธีนั้น อย่างไรก็ตามมโนธรรมของฉันเป็นที่ชัดเจน :)
bazzargh

6
@yhager: ['.' .. ] เป็นลำดับถ่าน "./0123456 ... " (ฯลฯ ) (a: n: y: t: i: m: e: _) เป็นการจับคู่รูปแบบที่ดึงอักขระ 7 ตัวแรกออก, [m, a, t, e] เรียงลำดับใหม่ 4 รายการเป็น "3.14" รู้ว่านี่คือสิ่งที่คุณต้องการจะทำมันเป็นเรื่องของการค้นหาพจนานุกรมเพื่อค้นหาคำที่มีโครงสร้างที่เหมาะสม ซึ่งฉันทำ ... เช่นอีกคู่หนึ่งคือ ถ้างั้นคุณก็พูดเรื่องตลก :)
bazzargh

32

รหัสมอร์ส, 33 ไบต์

morse -d ...-- .-.-.- .---- ....-

เทคนิคการพูดข้อมูลใช้เวลาเพียง 21 ไบต์


11
เราต้องการวิธีแก้ไขปัญหากอล์ฟเพิ่มเติมในรหัสมอร์สที่นี่ ...
หยุดที่จะ counterclockwis

26
เทคนิคการพูดฉันจะบอกว่า 21 บิตไม่ใช่ไบต์
Michael M.

14
@Michael เนื่องจากรหัสมอร์สอาจเป็นแบบจุดขีดกลางหรือเว้นวรรคไม่ต้องใช้มากกว่า 1 บิตในการจัดเก็บ 1 การดำเนินการ
smcg

5
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThis
Cole Johnson

8
มากที่สุดเท่าที่ฉันชอบรหัสมอร์ส (และด้วยเหตุนี้การแก้ปัญหานี้) - แต่ไม่ใช่ว่ากับกฎ 3: "คุณไม่สามารถใช้ตัวแปร / ค่าคงที่ที่กำหนดไว้ล่วงหน้าว่าภาษาของคุณอาจมีการแทนที่สำหรับ 3, 1 และ 4" หรือแม้แต่กฎที่ 2: "ตัวเลข 3, 1 และ 4 อาจไม่ปรากฏที่ใดก็ได้ในรหัสของคุณ"?
kratenko

27

J - 15 11 10 ถ่าน

i:ทำให้มันสั้นลงโดยใช้ที่ยอดเยี่ยม

6{i:6.28j8

อธิบาย:

  • 6.28j8 - จำนวนเชิงซ้อน 6.28 + 8i
  • i:- นี่คือสิ่งที่เวทมนตร์เกิดขึ้น i:บนจำนวนเชิงซ้อน A + Bi, B ≠ 0 ใช้ B + 1 คะแนนเว้นระยะเท่ากันจากช่วง [-A, A]
  • 6{ - นำองค์ประกอบที่ดัชนี 6 ซึ่งเกิดขึ้นเป็น 3.14

ก่อนหน้านี้เรามีเรื่องไร้สาระดังต่อไปนี้:

|.'.'2}":22b8d5

อธิบายโดยการระเบิด:

         22b8d5  NB. 8d5 in base 22 = 4163
       ":        NB. convert to string
  '.'2}          NB. change character at index 2 to '.'
|.               NB. reverse to make '3.14'

แทนที่จะเป็น|.'.'2}":22b8d5คุณสามารถบันทึกได้ 2 ตัวอักษรโดยเลือกหมายเลขที่ไม่ต้องมีการกลับรายการ:'.'1}":16bbc6
เหตุผล

3
@epicwisdom ห้าม 3 หลัก 1 และ 4 ฉันต้องใช้ตัวเลขในแบบฟอร์ม41X3เพราะฉันได้รับอนุญาตให้แก้ไขอักขระที่ดัชนี 0 และ 2 เท่านั้น
algorithmshark

20

บรรทัดคำสั่ง Linux, 35 ไบต์

อันนี้ไม่มีที่ไหนใกล้ชนะ แต่ที่นี่มันเพื่อความสนุกของมัน:

ping -w2 67502862|grep -oP '.\..\d'

เอาท์พุท (หลังจาก 2 วินาที):

$ ping -w2 67502862|grep -oP '.\..\d'
3.14
$

อ้างจากคำถาม: "ไม่มีการร้องขอทางเว็บ"
Doorknob

9
@Doorknob คำขอ ICMP echo! = คำขอทางเว็บ โดยไม่คำนึงถึง ping คือ 4.6.3.14 ซึ่งฉันไม่ได้รับคำตอบดังนั้นมันจึงไม่เหมือนกับฉันได้รับข้อมูลที่เป็นประโยชน์กลับมาจากอินเทอร์เน็ต
Digital Trauma

10
@Doorknob :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'แต่ถ้ายังคงรบกวนจิตใจคุณเราสามารถทำเช่นนี้ นี่เป็นการตั้งค่า TTL เป็น 1 ดังนั้น ICMP echo ขาออกของคุณจึงถูกทิ้งโดยเราเตอร์ของคุณก่อนที่มันจะเข้าใกล้อินเทอร์เน็ต
Digital Trauma

1
คุณสามารถบันทึก 9 s ping -w2 67502862โดยใช้ (นินจาแก้ไขเพราะก่อนที่ผมจะได้รับการให้คำปรึกษา w1 เกือบยากจนกฎ.)
lolesque

@lolesque ขอบคุณ ไม่ปรับปรุงคะแนนกอล์ฟแม้ว่า ;-)
Digital Trauma

16

GolfScript, 18 13 12

'.'.`,\.,n`,

เวอร์ชั่นเก่า:

'...','.'.,'....',

มันเป็นศิลปะมากมีเพียง 3 ตัวละครที่ไม่เหมือนใคร! ;)

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

# cmd   # stack
'...',  # 3
'.'.    # 3 '.' '.'
,       # 3 '.' 1
'....', # 3 '.' 1 4

นี่คือคำอธิบายของรุ่น 12 char (น่าสนใจยิ่งขึ้น IMO):

'.' # '.'
.`, # '.' 3
\.  # 3 '.' '.'
,   # 3 '.' 1
n`, # 3 '.' 1 4

มันทำงานได้เพราะn`,เป็น4เนื่องจากเป็นn` ตรรกะเดียวกัน'"\n"' '.'`,นอกจากนี้ยังสลับแทนการสร้างสตริงใหม่เพื่อบันทึกอักขระถ่าน (ขอบคุณ @algorithmshark)

รุ่นอื่น:

'pi ','.'.,'day!',

หรือ

'Hi ','.'.,'PPCG',

หรืออะไรก็ตามในสายเหล่านั้นจริงๆ : P


เพียง 3 ตัวอักษรต่าง ๆ เท่ห์ :)
aditsu

จะ'.'.`,\.,n`,ทำงานเพื่อประหยัดถ่านหรือไม่ การ'.'ใช้ซ้ำโดยการทำซ้ำและสลับ
algorithmshark

@ Algorithmshark อ๋อขอบคุณมาก!
Doorknob

มันฉลาดมาก! +1
VisioN

สิ่งนี้จะดูเหมือนเวอร์ชันรหัสมอร์ส
pwned

14

คำตอบของ OP

Mathematica, 21 20 18

รู้สึกว่าราคาถูก ...

Range[2,5,.06][[20]]

หรือ

Range[2,5,.02][[58]]

คิดหาวิธีที่จะทำให้มัน 18:

Range[-.86,5][[5]]

Haskell, 49 48 12

(48 รวมถึงอักขระบรรทัดใหม่)

p=[-6..]
r=concat$show(p!!9):".":(show$p!!20):[]

เรียกใช้โดยเรียกใช้rฟังก์ชัน

ด้วยวิธีการเช่นเดียวกับ Mathematica ด้านบนคุณสามารถพิมพ์สิ่งนี้ลงใน GHCi:

[-2.86..]!!6

Java, 87 86

class P{public static void main(String[]a){System.out.print("tri".length()+"."+0xe);}}

สกาลา, 27

แปลจาก Java ตามที่Score_Underแนะนำ (ฉันไม่รู้ Scala จริงๆ)

print("tri".length+"."+0xe)

โอ้0xeฉลาด คุณรังเกียจไหมถ้าฉันปรับปรุงคำตอบ JS ของฉันด้วยสิ่งนั้น? ;)
Martin Ender

จาวาส่วนใหญ่สามารถแปลงเป็นสกาล่าได้โดยตรงซึ่งโดยปกติจะสั้นกว่าหากคุณต้องการบันทึกเป็นไบต์ - ถ้าคุณใช้มันเป็นสคริปต์สิ่งทั้งหมดคือ: print ("tri" .length + "." + 0xe)
คะแนน _ ต่ำ

ใช่ฉันคิดแบบเดียวกันซึ่งจูเลียสั้นกว่า [-.86:5][5]สำหรับ 11 แต่คิดว่ามันไม่ได้นับตั้งแต่ช่วงเป็นแค่คณิตศาสตร์
gggg

12

Bash, 50

ข้อความช่วยเหลือ / ข้อผิดพลาดไม่ใช่ทรัพยากรภายนอกมันเป็นผลลัพธ์ของคำสั่ง!

หากมีสิ่งใดที่เป็นการละเมิดกฎนี่คือมัน มันใช้เรื่องบังเอิญที่ข้อความช่วยเหลือที่กำหนดSTDERRโดยคำสั่งที่แน่นอน

ping6

มีความยาว 314 อักขระ (อย่างน้อยบน Ubuntu 13.10 ด้วยiputils-121221) แก้ไข: ฉันขอขอบคุณที่พกพาน้อยกว่าที่ฉันคาดไว้มาก ...

m=`ping6|&wc -c`
false
o=$?
echo ${m:0:o}.${m:o:2}

บรรทัดแรกใช้ความยาวอักขระของข้อความช่วยเหลือและเก็บไว้ในตัวแปร

ในคำตอบอื่น ๆ ของฉันสองสามบรรทัดถัดไปจะได้รับหมายเลข 1 โดยการออกจากสถานะของfalse(ไม่ใช่แบบพกพามาก แต่นี่คือหลังจากทั้งหมด!) จากนั้นใช้ค่านั้นเพื่อแทรกจุดทศนิยมในบรรทัดสุดท้าย

เอาท์พุท: 3.14


คุณเป็นอัจฉริยะ
Joshua

1
เอ่อโอ้ "2.81" บน Ubuntu 12.04 (iputils-101006) +1 เหมือนกันทั้งหมด ;-)
Digital Trauma

@DigitalTrauma ตามที่info ping6ฉันมี iputils-121221

ตรวจสอบchmodคำตอบที่ใช้งานของฉันสำหรับคำถามนี้ที่codegolf.stackexchange.com/a/25724/16402

2
ยิ่งสั้น:ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 ไบต์

หากคุณติดตั้ง TeX:

tex -v|head -c8|cut -d\  -f2

หมายเลขเวอร์ชันของ TeX แบบไม่แสดงอาการเข้าใกล้ pi เมื่อซอฟต์แวร์ดีขึ้น ดังนั้นเมื่อเวลาผ่านไปคุณสามารถใช้การดำเนินการนี้ (ไม่เป็นไปตามข้อกำหนด) เพื่อพิมพ์ตัวเลขมากขึ้น!

tex -v|cut -d\  -f2 | head -n1

สิ่งนี้พิมพ์ 3.1415926 ย้อนกลับไปในปี 2011 ตั้งแต่มกราคม 2014 มันจะพิมพ์ 3.14159265


ฉันรักอันนี้!
gniourf_gniourf

คุณสามารถใช้tex -v|grep -oP '.\..\d'เพื่อบันทึก 4 ไบต์ (Regex ถูกขโมยจากคำตอบของ DigitalTrauma ) อย่างไรก็ตาม +1 เพราะฉันแค่คิดถึงคำตอบเดียวกัน
ace_HongKong การพึ่งพากัน

10

JavaScript ขนาด 20 ไบต์

'...'.length+'.'+0xe

ใช้ในคอนโซลเพื่อให้ผลการพิมพ์โดยตรง มิฉะนั้นalert(...)จะเพิ่มอีก 7 ตัวอักษร

เช่นเดียวกับคำตอบอื่น ๆ ของฉันฉันเพิ่งสังเกตว่ามันสั้นกว่ามากใน JS

ความคิดในการใช้0xe14 ถูกนำมาจากการส่งของ OP ด้วยการอนุญาตชนิดของ OP


1
ไม่เป็นไรคุณสามารถใช้ได้ :)
kukac67

1
ทางเลือกที่ 20 โซลูชันไบต์:(x='.'+0xE).length+x
ขีดล่าง

@ ตัวเลขที่เป็นความคิดที่ค่อนข้างสวย หากคุณโพสต์ข้อความนั้นเป็นคำตอบอื่นคุณจะได้รับ upovote ของฉัน;)
Martin Ender

10

วันที่ของ GNU ขนาด 17 ไบต์

date -d2/5 +%u.%y

อันนี้รับประกันการทำงานในปีนี้เท่านั้น แต่ฉันไม่เห็นข้อ จำกัด ในกฎเกี่ยวกับเรื่องนี้ ;-)

สิ่ง+นี้เป็นเพียงการระบุจุดเริ่มต้นของตัวระบุรูปแบบสำหรับdateและไม่ใช่การเพิ่มทางคณิตศาสตร์ เช่นเดียวกันกับ-ระบุวันที่เข้า

เอาท์พุท:

$ date -d2/5 +%u.%y
3.14
$

only guaranteed to work this yearไม่เป็นไร .. :)
kukac67

10

Bash ขนาด 17 ไบต์

tr 0 .<<<$[62#MC]

เส้นประ, 41 ไบต์

perl -pechomp,s/./$./<<$


..










.

Bash จะบ่นเสียงดังเกี่ยวกับเครื่องหมายสิ้นสุดที่ขาดหายไปในขณะที่ Dash ไม่ทำงานดังนั้นโซลูชัน Bash ที่ไม่มีข้อความแสดงข้อผิดพลาดจะต้องใช้สองไบต์เพิ่มเติม
Dennis

+1 เช่นกัน ฉันเดา @TheDoctor ลืมคลิกที่ปุ่ม upvote?
Digital Trauma

@DigitalTrauma อ๊ะ ... แก้ไขแล้ว
TheDoctor

7

Bash 23 22

seq 2 .02 5|sed -n 58p

เชลล์ (ไม่ขยายประวัติ) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pยังทำงานตามที่ระบุไว้ในคำตอบ Mathematica ของ OP
user80551

sed 58!dสั้นกว่าเล็กน้อย
Dennis

@Dennis แปลกทดแทน gnome-ขั้ว!dด้วยซึ่งเป็นคำสั่งสุดท้ายที่ฉันวิ่งที่เริ่มต้นด้วยdpkg ... dใช้งานได้ดีในkshแต่zshพูดว่าzsh: event not found: dเพื่อให้ได้รับการทดแทนอย่างแน่นอน
user80551

นั่นเป็นเพราะการขยายตัวของประวัติศาสตร์ทุบตี มันถูกปิดการใช้งานโดยค่าเริ่มต้นสำหรับสคริปต์ดังนั้นหากคุณบันทึกคำสั่งเดียวกันในpi.shและดำเนินการbash pi.shมันจะทำงานได้ดี
เดนนิส

6

Python, 39 หรือ 28 47 หรือ 34

(ขอบคุณ Score_Under สำหรับการเล่นกอล์ฟลงมาก)

print"%s.%s%c"%(len('aaa'),len('a'),52)

+ นี่คือโอเปอเรเตอร์การต่อสตริงไม่ได้เพิ่มเข้ามา

คัดลอก0xeเคล็ดลับจาก OP ต่อไปนี้เป็น 28 ตัวอักษรด้วยความช่วยเหลือจาก @psal

print('%X.%s'%(675,0xE))[2:]

รุ่นเก่า:

print str(len('aaa'))+'.'+str(len('a'))+chr(52)

print str(len('aaa'))+'.'+str(0xe)

print"%s.%s"%(len('aaa'),0xe)

ส่วนที่สองสามารถย่อให้สั้นลงได้โดยลบที่ว่างหลังจากการพิมพ์และใช้รูปแบบ "% s" แทน str () cf print"%s.%s"%(len('aaa'),0xe)ที่ 29 ไบต์ คุณสามารถทำเช่นเดียวกันกับอันแรกได้ที่: print"%s.%s%c"%(len('aaa'),len('a'),52)39 ไบต์
คะแนน _ ต่ำ

@Score_Under โอ้ฉันคิดว่าใช้ยังคงต้อง%s strขอบคุณสำหรับเคล็ดลับ :)
ace_HongKongIndependence

1
โซลูชัน 29 ไบต์อื่น:print('%s,%s'%(0xE9,0xE))[2:]
onionpsy

1
... และใน 28 ไบต์:print('%X.%s'%(675,0xE))[2:]
onionpsy

5

GolfScript ขนาด 8 ไบต์

'??.'(\(

โปรแกรมนี้มีอักขระ ASCII ที่ไม่สามารถพิมพ์ได้ดังนั้นจึงไม่สามารถวางที่นี่ได้โดยตรง แต่เครื่องหมายคำถามในรหัสด้านบนควรถูกแทนที่ด้วยไบต์03และ0Eเลขฐานสิบหก

เพื่อความสะดวกนี่คือการดัมพ์แบบเลขฐานสิบหกของโปรแกรมจริง ผู้ใช้ Unix / Linux สามารถรันฐานข้อมูลเลขฐานสิบหกนี้xxd -rเพื่อสร้างโปรแกรมใหม่:

0000000: 2703 0e2e 2728 5c28                      '...'(\(

คำอธิบาย:

  • ห้าไบต์แรกของโปรแกรมเป็นสตริงตัวอักษรที่ยกมาเดี่ยวเข้ารหัสอักขระสามตัวด้วยรหัส ASCII 3, 14 และ 46 (= ระยะเวลา ASCII)

  • (สับอักขระตัวแรกออกจากสตริงและกดรหัส ASCII (3) บนสแต็ก \สลับสองรายการบนสุดบนสแต็กดึงสตริงกลับไปด้านบนและวินาที(สับอักขระอื่นออกจากสตริงอีกครั้งกดรหัส ASCII (14) บนสแต็ก

ในตอนท้ายของโปรแกรมสแต็ก (ไม่รวมสตริงอินพุตว่าง) จึงมีลักษณะดังนี้:

3 "." 14

ในตอนท้ายของโปรแกรมลักษณะการทำงานเริ่มต้นของล่าม GolfScript คือการทำให้เป็นสตริงและพิมพ์ทุกอย่างบนสแต็คเพื่อให้ได้ผลลัพธ์ที่ต้องการ


1
Snap! ฉันมีความคิดเดียวกันว่าเพียง 12 ชั่วโมงสายเกินไป ฉันเดาว่าฉันควรอ่านหน้า 2 ก่อนโพสต์ ... อืมมกลิ้งกลับ +1 ให้คุณ
เดนนิส

5

ทุบตี - 39

เราทุกคนรู้ว่าตัวเลขสองสามตัวแรกของ Pi สามารถคำนวณได้จากคำสั่งต่อไปนี้:

ฉันขอกาแฟหนึ่งลังได้ไหม

เราต้องการทศนิยม 2 ตำแหน่งเท่านั้นจริงไหม

m=May
i=I
h=have
echo ${#m}.${#i}${#h}


4

Perl, 15 20 ไบต์

print 05706=~s/0/./r
print 0xbc6=~s/0/./r

PI__ ไม่เกี่ยวข้องกับ Pi หรือไม่?
Llamageddon

มันไม่คงที่ มันมีสองสายคือ XOR-ed
ขีดเส้นใต้

ไม่อนุญาตให้ใช้ตัวดำเนินการ Bitwise
kukac67

โอ้พวกเขาไม่ได้ ทีนี้, ทางออกของสมมุติฐานไป ที่กล่าวว่าหากไม่อนุญาตให้ใช้ตัวดำเนินการระดับบิตมีอะไรอีกมากมายที่ต้องทำมากกว่าการนับความยาวของสตริง
Llamageddon

มีหลายคำตอบที่ใช้ตัวเลขในฐานต่างกัน
kukac67

4

tr + Bash ขนาด 17 ไบต์

tr a-j 0-9<<<d.be

-ตัวอักษรที่นี่มีผู้ประกอบการลบไม่เลขคณิต พวกเขาระบุช่วง

เอาท์พุท:

$ tr a-j 0-9<<<d.be
3.14
$

ฉลาดถึงแม้ว่าการแปลตัวละครจะถูกซ่อนไว้อย่างแท้จริง
Pierre Arlaud

@ArlaudPierre True แม้ว่าฉันจะยืนยันว่าโซลูชั่นทั้งหมดที่นี่มีเลขคณิตที่ซ่อนอยู่ไม่ทางใดก็ทางหนึ่ง หากคุณดูคำแนะนำเครื่องจริงที่ดำเนินการสำหรับคำตอบใด ๆ เหล่านี้ฉันคิดว่าทุกคนมีคำแนะนำในระดับบิตหรือคณิตศาสตร์ซึ่งถูกห้ามจากการใช้งานโดยคำถามอย่างชัดเจน
บาดเจ็บทางระบบดิจิตอล

@ArlaudPierre คำถามต้องมีสตริง "3.14" เป็นผลลัพธ์ ไม่ว่าภาษาที่ไหนสักแห่งภายใต้ประทุนจะทำให้การwrite()โทรหรือสิ่งที่คล้ายกันแย่ลง จะต้องมีเลขคณิตบางอย่างภายใต้หน้าปกเพื่อให้แน่ใจว่ามีการเขียนจำนวนไบต์ที่ถูกต้องหากไม่มีที่อื่น ฉันคิดว่าประเด็นของคำถามคือการซ่อนการคำนวณทางคณิตศาสตร์ / bitwise ที่จำเป็น
บาดเจ็บทางระบบดิจิตอล

4

BASH, 57

นี่เป็นคำตอบที่ยาวกว่าคำตอบส่วนใหญ่ แต่ก็ไม่มีอะไรเลวร้ายในการลอง

f=`echo aaaaaaaaaaaaa|wc -c`;e=`echo aa|wc -c`;echo $e.$f

จะช่วยให้

3.14

3
ขออภัยที่ต้องเล่นซ้ำคำตอบของทุกคน: P ในหลอดเลือดดำเดียวกับที่ฉันพบ:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
คะแนน _ ต่ำกว่า

4

C, 36

main(){printf("%d\b.%o\b",' ','`');}

1
หากเรารวมเข้ากับคำตอบของฉันเราสามารถบันทึก 2 ไบต์เพื่อรับคะแนน34 :main(){printf("%d\b.%d",' ',0xe);}
vsz

3

JavaScript - 23 ไบต์

atob('Mw')+atob('LjE0')

ขอบคุณที่ขีด (ดูความเห็นของเขา)!


นิสัยดี: DI ไม่รู้ด้วยซ้ำเกี่ยวกับสิ่งนี้
kukac67

มันประกอบด้วย4แม้ว่า;)
nderscore

@nderscore Ah! คุณถูก! จะbtoa()ทำงานเพื่อให้ได้3.14อย่างใด
kukac67

@ kukac67 ชุดอักขระ base64 ไม่มีจุด :(
nderscore

3
รุ่น 23 ไบต์ "ถูกกฎหมาย": atob('Mw')+atob('LjE0')และ 14 ไบต์ "ผิดกฎหมาย" รุ่น:atob("My4xNA")
ขีดล่าง

3

C #

 ((int)'ĺ').ToString("#\\.##");

ĺคืออักขระ 314 ไม่ใช่ตัวแปรหรือค่าคงที่ที่กำหนดไว้ล่วงหน้า . ToString จะจัดรูปแบบผลลัพธ์เป็นตัวเลขจุดและจากนั้นอีก 2 หลัก


ดีมาก แต่มันไม่ได้ส่งออกในขณะนี้และมันไม่สามารถรวบรวมได้
ฤดี Kershaw

Console.Write (((int) 'L') ToString (). "# \\ ##.");
Grax32

3

GolfScript, 13 10

{xy}.*'.'\

ขอบคุณIlmari Karonenสำหรับรุ่นที่ปรับปรุงแล้ว!

xและyเป็นอักขระที่ไม่สามารถพิมพ์ได้ (ดูhttp://www.asciitable.com/สำหรับข้อมูลเพิ่มเติม) ตามลำดับETXและSOถอดรหัสเป็น 3 และ 14

รหัสนี้ควรชัดเจนอะไร

หมายเหตุ:กฎต่อไปนี้

You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)

ไม่เสียหายเนื่องจากอักขระ ASCII ไม่ใช่ตัวแปรหรือค่าคงที่


The digits 3, 1, and 4 may not appear anywhere in your code.,Your program cannot require input of any kind (besides running it).
user80551

ตัวเลขไม่ปรากฏที่ใดก็ได้ ไม่มีอินพุต
Vereos

และรหัสสุดท้ายของคุณคือ ... ?
user80551

{}.*.{}.*และภายในวงเล็บมีอักขระที่ไม่สามารถพิมพ์ได้ 2 ตัวตามลำดับ ( asciitable.com ) ETXและSO
Vereos

2
คุณสามารถย่อให้เหลือ{xy}.*'.'\ (10 ตัวอักษร) แม้ว่าของฉันจะยังสั้นกว่า ;-) แต่ +1 สำหรับการสอนฉันเกี่ยวกับ{ }.*(และ{ }.%) ฉันจะต้องคำนึงถึงเคล็ดลับนั้น
Ilmari Karonen

3

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

'...'.length+'.'+0xe

และกฎนี้:

3.14 เป็นสิ่งเดียวที่คุณสามารถส่งออกได้มันไม่สามารถเป็นส่วนหนึ่งของเอาท์พุทที่ยาวขึ้น / ใหญ่ขึ้นได้

ถ้าฉันเรียกใช้รหัสนี้ในคอนโซลเบราว์เซอร์ของฉันฉันจะได้รับ:

"3.14"

หรือใช้ Node ที่บรรทัดคำสั่ง:

'3.14'

แต่ถ้าฉันใช้รหัสนี้:

parseFloat('...'.length+'.'+0xe)

ฉันเข้าใจ:

3.14

ใช้ Node.js เพื่อเรียกใช้ไฟล์. js ฉันสามารถเขียน:

console.log('...'.length+'.'+0xe)

และรับ:

3.14

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

ยินดีต้อนรับสู่ CodeGolf และปริศนาการเขียนโปรแกรม @RobertMunn! คำตอบนี้ถูกต้องตามที่เป็นไปตามกฎทั้งหมด ... โปรดจำไว้ว่าconsoleมีแนวโน้มที่จะตัดสตริงในเครื่องหมายคำพูดเมื่อคุณแสดง ... คุณใช้ไปแล้ว+แต่ไม่ได้ใช้เลขคณิตมันถูกใช้เป็นตัวเชื่อม คุณสามารถทำให้สิ่งนี้เล็กลงโดยใช้alertมากกว่าconsole.log... แต่อย่างอื่นความพยายามที่ดี เราหวังว่าคุณจะชอบที่นี่ ...
WallyWest

นั่นเป็นสิ่งที่ดีงาม! คุณควรพิจารณาเพิ่มชื่อของภาษาและจำนวนไบต์ (เช่น Javascript, 20)
Vereos

1
ขอบคุณ Ace ฉันเพิ่งเรียนรู้กฎที่นี่ ฉันไม่สามารถแสดงความคิดเห็นได้ดังนั้นฉันจึงโพสต์แยกกันฉันคิดว่านี่เป็นคำชี้แจงเพิ่มเติมเกี่ยวกับประเภทของกฎซึ่ง nderscore และ WallyWest ชี้แจงให้ฉัน ฉันขอขอบคุณที่อดทนรอทุกคนด้วย newb
Robert Munn

2

Mathematica, 56 ไบต์

(l=ToString@StringLength@#&)@"..."<>"."<>l@"."<>l@"...."

ไม่มากที่จะพูด ฉันกำลังสร้างตัวเลขเป็นความยาวสตริงและเชื่อมต่อพวกเขา

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