Đầu ra Pi không có toán [đóng]


56

Trong càng ít byte càng tốt, công việc của bạn là viết một chương trình xuất ra:

3.14

Trong lễ kỷ niệm một ngày cuối khóa Pi!:)

Quy tắc

Bạn có thể làm điều đó bằng mọi cách bạn thích, nhưng có một số hạn chế.

  • Bạn không thể sử dụng các phép toán số học ở bất cứ đâu trong chương trình của bạn. Điều này bao gồm +, -, *, /, %, ^(lũy thừa), vv ... Điều này cũng bao gồm incrementing (thường ++), decrementing ( --), hoạt động Bitwise , và bất kỳ được xây dựng trong các chức năng có thể được sử dụng như một sự thay thế như sum(), prod(), mod(), double(), pow(), sqrt(), inc(),dec() v.v ... (theo ý của tác giả)
  • Các chữ số 3, 14có thể không xuất hiện ở bất cứ đâu trong mã của bạn.
  • Bạn có thể không sử dụng bất kỳ biến được xác định trước / hằng rằng ngôn ngữ của bạn có thể là một thay thế cho 3, 14. (Theo ý của tác giả)
  • Bạn cũng có thể không sử dụng bất kỳ hàm lượng giác như sin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh(), vv ... (Tác giả của ý)
  • Bạn không được sử dụng các giá trị tích hợp hoặc được xác định trước của Pi (hoặc 3.14). Không có yêu cầu web .
  • Chương trình của bạn không thể yêu cầu bất kỳ loại đầu vào nào (ngoài việc chạy nó).
  • 3.14là điều duy nhất mà bạn có thể xuất ra, nó không thể là một phần của đầu ra dài hơn / lớn hơn ..

Người chiến thắng

Câu trả lời với số lượng byte ít nhất vào ngày 18 tháng 4 sẽ thắng. Chúc may mắn!

Mong câu trả lời thông minh từ đầu óc thông minh! Malbolge có ai không? : P


3
Bạn có thể muốn làm rõ đó ^là toán tử lũy thừa, không phải toán tử XOR bitwise.
ace_HongKongInependence

2
Các toán tử bitwise có được phép không?
Chương trìnhFOX

1
@ProgramFOX Vâng, chúng có thể được sử dụng thay thế cho các hoạt động bình thường, vì vậy, không. Không cho phép. Tôi sẽ chỉnh sửa bài viết.
kukac67

1
Yêu cầu web cho phép?
swish

7
@swish: Tôi sẽ không sử dụng các yêu cầu web, vì đó thuộc danh sách "sơ hở" tiêu chuẩn không còn buồn cười nữa
Chương trìnhFOX

Câu trả lời:


25

CJam - 8 6

S`,'.E

CJam là một ngôn ngữ mới mà tôi đang phát triển, tương tự như GolfScript - http://sf.net/p/cjam .
Đây là lời giải thích:

S là một biến được khởi tạo trước vào không gian ("")
` tạo ra biểu diễn chuỗi của giá trị cuối cùng - chính xác là " "(3 ký tự)
,tính toán độ dài chuỗi (3)
'.là ký tự dấu chấm
Elà biến được định trước thành 14; 3, 1 và 4 không được phép nhưng nó không nói gì về 14 :)

Tín dụng cho Doorknob cho ý tưởng backtick


1
@Brilliand Tôi sẽ chấp nhận sử dụng E.
kukac67

6
@ kukac67 Mặc dù tôi chưa phát hành chính thức (đến ngày hôm nay), tôi đã cung cấp mã CJam hiện tại qua hg. Nếu bạn nhận được mã CJam kể từ 1 ngày trước khi bạn đăng câu hỏi, nó sẽ chạy chương trình của tôi một cách chính xác (vì vậy tôi đã không thực hiện thay đổi để giải quyết vấn đề này). Nhưng dù sao thì tôi cũng không bận tâm lắm.
aditsu

33
thời gian để phát triển HQ9 + π ...
Nzall

2
@AnonymousPi Mọi người đều có quyền bình chọn cho câu trả lời họ chọn. Có lẽ họ ấn tượng hơn với những câu trả lời khác ngay cả khi chúng không ngắn.
aditsu

2
Tại sao bạn có một biến được preinitialized thành 14?
user2357112

113

PHP - 22 byte

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

Ngày Pi năm 1998 thật tuyệt!


13
@ kukac67: n.jlà định dạng và 8899e5là dấu thời gian của Unix vào ngày 14 tháng 3 năm 1998.
Chương trìnhFOX

7
Điều đó thật thông minh.
Amal Murali

7
Bạn có thể lưu 7 ký tự bằng cách xóa ,8899e5. Nó sẽ đúng mỗi năm một lần.
Damir Kasipovic

1
@Timo Bạn nói đúng, nhưng nó chứa chữ số bất hợp pháp "3";).
Hố đen

18
@Blackhole 20 byte: <?=date('w.W',78e5);ngày 1 tháng 4 năm 1970 là thứ tư trong tuần 14.
primo

92

C, 39

Giả sử máy là thiết bị nhỏ và sử dụng tiêu chuẩn dấu phẩy động của IEEE.

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

Sự thật thú vị là nó "P@I@"thực sự không liên quan đến PInhưng tương đương với0x40494050 nó là đại diện của3.144550323486328

http://ideone.com/uXVEtl


3
Điều đó thật tuyệt vời.
wchargein

1
Mã của bạn giả định loại lỗi trên một máy tính nhỏ.
Nayuki

@NayukiMinase, vâng, bạn đúng, đáng để chỉ ra điều đó. Và nó cũng giả định việc sử dụng tiêu chuẩn dấu phẩy động của IEEE.
Michael M.

Và nó chứa hành vi không xác định (khai báo ngầm định của hàm
matrixdic

5
Mã này thực sự giả định rằng máy là máy của Michael :-).
Konrad Borowski

50

dc , 11 9 byte

zE[.]znPp
  • z Đẩy độ sâu ngăn xếp hiện tại (0) lên ngăn xếp
  • EĐẩy E 16 (== 14 10 )
  • [.] Đẩy chuỗi "."
  • z Đẩy độ sâu ngăn xếp hiện tại (3) lên ngăn xếp
  • n Pop 3 và in dưới dạng số
  • PPop "." và in như char
  • p Pop 14 và in dưới dạng số với dòng mới

Đầu ra:

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

Vậy "sử dụng cơ sở đầu vào" là một toán tử? Nó có mùi giống như một phép toán số học, nhưng có lẽ vẫn còn hiệu lực.
Brilliand

@Brilliand Không có gì tôi thấy trong câu hỏi cấm chuyển đổi cơ sở. Trên thực tế, OP dường như đang khuyến khích chuyển đổi cơ sở trong một bình luận ở đây codegolf.stackexchange.com/a/25681/11259
Chấn thương kỹ thuật số

Tôi đồng ý rằng nó hợp lệ; Tôi chỉ nghĩ rằng khi chuyển đổi cơ sở là một toán tử chứ không phải là một phần của cú pháp số, nó sẽ làm mờ ranh giới giữa dữ liệu nội tuyến và hoạt động số học.
Brilliand

Tôi nghĩ rằng đây phải là 15 byte?
Người dùng đã đăng ký

9
@AdityaPatil Tại sao? dclà một ngôn ngữ và thông dịch viên, giống như tất cả các ngôn ngữ khác ở đây. dc -e chỉ là sự mời gọi của thông dịch viên đó. Tôi có thể dễ dàng lưu chương trình 9 byte trong một tệp và chạy dc pi.dc. Nếu các byte này cần được tính, thì điều tương tự sẽ phải áp dụng cho tất cả các ngôn ngữ khác. ví dụ bao gồm python trong tất cả các mục python hoặc ruby golfscript.rb trong tất cả các mục golfscript. Tôi tin rằng quy ước đã thỏa thuận ở đây không bao gồm những điều này, trừ khi các tùy chọn đặc biệt cần được thông qua.
Chấn thương kỹ thuật số

42

JavaScript ( ES5 ) 20 byte

Một biến thể của giải pháp JS của m.buettner.

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

Chỉnh sửa: JavaScript ( ES5 ) 18 byte

Một biến thể của ý tưởng sử dụng hàm giải mã base64.

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

Chỉnh sửa: Javascript ( ES5 ) 16 byte

Nếu toán tử đơn nguyên +được phép truyền một chuỗi thành một số, nó có thể được giảm xuống thành:

+atob('MDMuMTQ')

Ôi! Điều đó thực sự thông minh!
kukac67

9
@NateEldredge Đây là nối chuỗi, không phải số học.
tomsmeding

việc sử dụng +được chấp nhận ở đây?
phuclv

1
Tôi thấy giải pháp Javascript là thanh lịch nhất và tôi sắp đăng bài của mình cho đến khi tôi nhận thấy nó có '4' trong đó: atob ('My4xNA =='), lol.
lần thứ

1
@Dennis bạn nói đúng, nó vẫn ở đó. Nó thậm chí còn ở đó nếu tôi sao chép + dán kết quả từ bàn điều khiển. Tôi không hài lòng với nó vì vậy tôi sẽ trở lại giải pháp 16 byte.
nderscore

39

Haskell, 41 byte

Khi nào là ngày pi ở Úc?

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

Đã chỉnh sửa để thêm: giống như câu trả lời Haskell khác, đưa ra một chuỗi, do đó có dấu ngoặc kép. Bạn có thể đạt 33 điểm và tuân thủ nghiêm ngặt các quy tắc, nhưng điều đó ít thú vị hơn:

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

Haha, wow Điều này là tốt!
Ry-

Bạn có thể giải thích tại sao điều này làm việc?
yhager

5
Tôi thích cái này rất nhiều, +1. Nhưng tôi nghĩ về mặt kỹ thuật ".." đang gọi toán tử tăng, bị cấm. (Trên thực tế, việc nâng cấp cũng gọi một hoạt động gia tăng, vì vậy nó cũng bị cấm ;-)
Marc van Leeuwen

Tôi thực sự đã nghĩ về điều đó - tôi đã có một câu trả lời thậm chí còn ngắn hơn: p=[2.9,2.92..]!!([0,6..]!!2)... và trong câu này ..có vẻ sai. Nhưng Haskell được đánh máy mạnh mẽ, và sự gia tăng trong câu trả lời tôi đưa ra Charkhông phải Numvà không phải là số học - điều thực sự bị cấm. Tôi cần một fromEnumchuyển đổi ký tự trở lại thành số để sử dụng chúng theo cách đó. Dù sao, lương tâm của tôi là rõ ràng :)
bazzargh

6
@yhager: ['.' ..] là chuỗi char "./0123456 ..." (v.v.). (a: n: y: t: i: m: e: _) là một mô hình khớp với 7 ký tự đầu tiên, [m, a, t, e] sắp xếp lại 4 trong số chúng thành "3.14". Biết rằng đây là những gì bạn muốn làm, đó là vấn đề tìm kiếm từ điển để tìm các từ có cấu trúc phù hợp. Mà tôi đã làm ... ví dụ một cặp khác là "bộ đồ xấu nhất". Sau đó, bạn nghĩ ra một trò đùa :)
bazzargh

32

Mã Morse, 33 byte

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

Về mặt kỹ thuật, thông tin chỉ mất 21 byte.


11
Chúng tôi chắc chắn cần nhiều giải pháp chơi gôn hơn bằng mã morse ở đây ...
đã ngừng quay ngược chiều

26
Về mặt kỹ thuật, tôi muốn nói 21 bit , không phải byte
Michael M.

14
@Michael vì mã Morse có thể là dấu chấm, dấu gạch ngang hoặc dấu cách, không cần nhiều hơn 1 bit để lưu trữ 1 thao tác?
smcg

5
@smcg ButSpacesAreForWeakP PeopleWhoCan'tReadThingsLike This
Cole Johnson

8
Nhiều như tôi thích mã morse (và do đó là giải pháp này) - nhưng không phải là trái với quy tắc 3: "Bạn không được sử dụng bất kỳ biến / hằng được xác định trước nào mà ngôn ngữ của bạn có thể thay thế cho 3, 1 và 4." hoặc thậm chí quy tắc 2: "Các chữ số 3, 1 và 4 có thể không xuất hiện ở bất kỳ đâu trong mã của bạn."?
kratenko

27

J - 15 11 10 char

Làm cho nó ngắn hơn, sử dụng tuyệt vời i:.

6{i:6.28j8

Giải thích:

  • 6.28j8 - Số phức 6.28 + 8i.
  • i:- Đây là nơi phép màu xảy ra. i:trên một số phức A + Bi, B 0 lấy B + 1 các điểm cách đều nhau từ khoảng [-A, A].
  • 6{ - Lấy phần tử ở chỉ số 6, chỉ xảy ra là 3.14.

Trước đây, chúng tôi đã có những điều vô nghĩa sau:

|.'.'2}":22b8d5

Giải thích bằng vụ nổ:

         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'

Thay vì |.'.'2}":22b8d5, bạn có thể lưu 2 ký tự bằng cách chọn một số không yêu cầu đảo ngược:'.'1}":16bbc6
rationalis

3
@epicwisdom Các chữ số 3, 1 và 4 bị cấm. Tôi phải sử dụng một số trong biểu mẫu 41X3vì tôi chỉ được phép sửa đổi các ký tự ở chỉ số 0 và 2.
thuật toán

20

Dòng lệnh Linux, 35 byte

Đây không phải là nơi gần chiến thắng, nhưng đây là niềm vui của nó:

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

Đầu ra (sau 2 giây):

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

Trích dẫn từ câu hỏi: "Không có yêu cầu web."
Doorknob

9
@Doorknob Yêu cầu tiếng vang ICMP! = Yêu cầu web. Bất kể, ping là 4.6.3,14, từ đó tôi không nhận được phản hồi, vì vậy nó không giống như tôi nhận được bất kỳ thông tin hữu ích nào từ internet
Digital Trauma

10
@Doorknob Nhưng nếu điều này vẫn làm phiền bạn, chúng tôi có thể làm điều này :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'. Điều này đặt TTL thành 1, do đó, tiếng vang ICMP đang bị loại bỏ bởi bộ định tuyến của bạn trước khi nó đến bất kỳ nơi nào gần internet
Chấn thương kỹ thuật số

1
Bạn có thể lưu 9 giây bằng cách sử dụng ping -w2 67502862. (Ninja chỉnh sửa vì trước khi tôi tư vấn cho w1, gần như đã phá vỡ các quy tắc.)
lolesque

@lolesque Cảm ơn. Không cải thiện điểm số golf mặc dù ;-)
Chấn thương kỹ thuật số

16

GolfScript, 18 13 12

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

Phiên bản cũ:

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

Nó rất nghệ thuật, chỉ có 3 nhân vật độc đáo! ;)

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

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

Dưới đây là lời giải thích về phiên bản 12 char (thú vị hơn nhiều, IMO):

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

Nó hoạt động vì n`,4, vì n`'"\n"'. Cùng logic cho '.'`,. Nó cũng hoán đổi thay vì tạo một chuỗi mới để lưu char (cảm ơn @alerskymshark).

Phiên bản thay thế:

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

hoặc là

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

Hoặc bất cứ điều gì trong các chuỗi, thực sự. : P


Chỉ có 3 nhân vật khác nhau, tuyệt vời :)
aditsu

Sẽ '.'.`,\.,n`,làm việc để cứu một char? Tái sử dụng '.'bằng cách nhân đôi và hoán đổi.
thuật toán

@alerskymshark Yep, cảm ơn!
Doorknob

Điều này rất thông minh! +1
VisioN

nó trông giống như phiên bản mã morse
pwned

14

Câu trả lời của OP.

Toán học, 21 20 18

Cảm giác này thật rẻ ...

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

hoặc là

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

Tìm hiểu làm thế nào để làm cho nó 18:

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

Haskell, 49 48 12

(48 bao gồm ký tự dòng mới)

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

Chạy nó bằng cách gọi rhàm.

Sử dụng phương thức như với Mathicala ở trên, bạn có thể nhập phương thức này vào GHCi:

[-2.86..]!!6

Java, 87 86

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

Scala, 27

Được dịch từ Java theo đề xuất của Score_Under . (Tôi không thực sự biết Scala)

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

Ồ, 0xethật thông minh. Bạn có phiền nếu tôi cải thiện câu trả lời JS của tôi với điều đó không? ;)
Martin Ender

Hầu hết java có thể được chuyển đổi trực tiếp thành scala, thường ngắn hơn nếu bạn thực sự muốn lưu byte - nếu bạn đang sử dụng nó làm tập lệnh, toàn bộ chỉ là: print ("tri" .length + "." + 0xe)
Điểm_Under

Vâng, tôi đã nghĩ về điều tương tự, ngắn hơn ở Julia như [-.86:5][5]đối với 11, nhưng hình dung nó không được tính vì phạm vi chỉ là toán học.
gggg

12

Bash, 50

Thông báo trợ giúp / lỗi không phải là tài nguyên bên ngoài, chúng là đầu ra của lệnh!

Nếu bất cứ điều gì là lạm dụng quy tắc, đây là nó. Nó sử dụng sự trùng hợp ngẫu nhiên mà thông báo trợ giúp được đưa ra STDERRbởi lệnh chính xác

ping6

dài 314 ký tự (ít nhất là trên Ubuntu 13.10 với iputils-121221). EDIT: Tôi đánh giá cao rằng nó ít di động hơn tôi mong đợi ...

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

Dòng đầu tiên lấy độ dài ký tự của thông báo trợ giúp và lưu nó trong một biến.

Như trong các câu trả lời khác của tôi, một vài dòng tiếp theo có được số 1 bằng cách lấy trạng thái thoát của false(không di động lắm nhưng đây là !), Sau đó sử dụng giá trị đó để chèn dấu thập phân ở dòng cuối cùng

Đầu ra: 3.14


bạn là thiên tài
Joshua

1
À, "2,81" trên Ubuntu 12.04 (iputils-101006). +1 tất cả đều giống nhau ;-)
Chấn thương kỹ thuật số

@DigitalTrauma theo info ping6tôi có iputils-121221

đồng thời kiểm tra chmodcâu trả lời khó hiểu của tôi cho câu hỏi này tại codegolf.stackexchange.com/a/25724/16402

2
thậm chí ngắn hơn:ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 byte

Nếu bạn đã cài đặt TeX:

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

Số phiên bản của TeX không có triệu chứng tiếp cận pi khi phần mềm được cải thiện. Vì vậy, khi thời gian trôi qua, bạn có thể sử dụng triển khai (không phù hợp) này để in ngày càng nhiều chữ số!

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

Điều này đã in 3.1415926 vào năm 2011; kể từ tháng 1 năm 2014, nó sẽ in 3.14159265.


Tôi yêu cái này
gniourf_gniourf

Bạn có thể sử dụng tex -v|grep -oP '.\..\d'để lưu 4 byte. (Regex bị đánh cắp từ câu trả lời của DigitalTrauma .) Dù sao đi nữa, +1 vì tôi chỉ nghĩ về cùng một câu trả lời.
ace_HongKongInependence

10

JavaScript, 20 byte

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

Sử dụng nó trong một giao diện điều khiển, để kết quả được in trực tiếp. Nếu không, alert(...)sẽ thêm 7 ký tự.

Giống như câu trả lời khác của tôi, tôi chỉ nhận thấy nó ngắn hơn rất nhiều trong JS.

Ý tưởng sử dụng 0xecho 14 được lấy từ đệ trình của OP với sự cho phép của OP.


1
Không sao, bạn có thể sử dụng nó :)
kukac67

1
Giải pháp thay thế 20 byte:(x='.'+0xE).length+x
nderscore

@nderscore đó là một ý tưởng khá gọn gàng. Nếu bạn đăng câu trả lời đó như một câu trả lời khác, bạn sẽ nhận được upovote của tôi;)
Martin Ender

10

Ngày GNU, 17 byte

date -d2/5 +%u.%y

Điều này chỉ đảm bảo hoạt động trong năm nay, nhưng tôi không thấy bất kỳ giới hạn nào trong các quy tắc về điều này ;-)

Điều +này chỉ đơn giản chỉ ra sự bắt đầu của trình xác định định dạng cho datevà không phải là một bổ sung số học. Tương tự với -, cho biết ngày đầu vào.

Đầu ra:

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

only guaranteed to work this yearKhông sao đâu .. :)
kukac67

10

Bash, 17 byte

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

Dấu gạch ngang, 41 byte

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


..










.

Bash sẽ phàn nàn lớn về điểm đánh dấu kết thúc bị thiếu trong khi Dash thì không, vì vậy một giải pháp Bash không có thông báo lỗi sẽ cần thêm hai byte.
Dennis

+1 cũng vậy. Tôi đoán @TheDoctor quên nhấp vào nút upvote?
Chấn thương kỹ thuật số

@DigitalTrauma oops ... đã sửa
TheDoctor

7

Bash 23 22

seq 2 .02 5|sed -n 58p

Shell (không mở rộng lịch sử) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pcũng hoạt động như được đưa ra trong câu trả lời Mathicala của OP.
user80551

sed 58!dngắn hơn một chút.
Dennis

@Dennis, sản phẩm thay thế gnome-terminal Weird !dvới dpkg ...đó là lệnh cuối cùng mà tôi chạy mà bắt đầu với d. Hoạt động tốt trong kshnhưng zshnói zsh: event not found: dnhư vậy chắc chắn sẽ được thay thế cho một cái gì đó.
user80551

Đó là vì sự mở rộng lịch sử của Bash . Nó được tắt theo mặc định cho các tập lệnh, vì vậy nếu bạn lưu cùng một lệnh pi.shvà thực thi bash pi.sh, nó sẽ hoạt động tốt.
Dennis

6

Con trăn, 39 hoặc 28 47 hoặc 34

(Cảm ơn bạn Score_Under vì đã chơi golf rất nhiều)

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

+ đây là toán tử nối chuỗi, không thêm.

Sao chép 0xethủ thuật từ OP, đây là 28 ký tự với sự trợ giúp từ @psal

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

Phiên bản cũ:

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

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

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

Cái thứ hai có thể được rút ngắn bằng cách xóa khoảng trắng sau khi in và sử dụng định dạng "% s" thay vì str (). cf print"%s.%s"%(len('aaa'),0xe)ở 29 byte. Bạn cũng có thể làm tương tự với cái đầu tiên: print"%s.%s%c"%(len('aaa'),len('a'),52)ở mức 39 ​​byte.
Điểm_Under

@Score_Under Ồ, tôi nghĩ sử dụng %svẫn cần str. Cảm ơn vì tiền boa :)
ace_HongKongInependence

1
Giải pháp 29 byte khác:print('%s,%s'%(0xE9,0xE))[2:]
củ hành tây

1
... và trong 28 byte:print('%X.%s'%(675,0xE))[2:]
củ hành tây

5

GolfScript, 8 byte

'??.'(\(

Chương trình này chứa các ký tự ASCII không in được, vì vậy nó không thể được dán trực tiếp tại đây. Thay vào đó, các dấu hỏi trong đoạn mã trên nên được thay thế bằng các byte 030E ở dạng thập lục phân.

Để thuận tiện, đây là một bãi chứa hex của chương trình thực tế. Người dùng Unix / Linux có thể chạy kết xuất hex này xxd -rđể xây dựng lại chương trình:

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

Giải trình:

  • Năm byte đầu tiên của chương trình tạo thành một chuỗi ký tự đơn được trích dẫn mã hóa ba ký tự với mã ASCII 3, 14 và 46 (= giai đoạn ASCII).

  • (cắt ký tự đầu tiên ra khỏi chuỗi và đẩy mã ASCII (3) trên ngăn xếp. \hoán đổi hai mục trên cùng của ngăn xếp, kéo chuỗi trở lại trên cùng và lần thứ hai cắt (một ký tự khác ra khỏi chuỗi, một lần nữa đẩy mã ASCII (14) của nó trên ngăn xếp.

Vào cuối chương trình, ngăn xếp (không bao gồm chuỗi đầu vào trống) do đó trông như thế này:

3 "." 14

Vào cuối chương trình, hành vi mặc định của trình thông dịch GolfScript là xâu chuỗi và in mọi thứ trên ngăn xếp, mang lại đầu ra mong muốn.


1
Chộp lấy! Tôi đã có chính xác cùng một ý tưởng , chỉ 12 giờ là quá muộn. Tôi đoán tôi nên đọc trang 2 trước khi đăng ... Ồ, quay lại, +1 cho bạn.
Dennis

5

bash - 39

Chúng ta đều biết rằng một vài chữ số đầu tiên của Pi có thể được tính từ câu lệnh sau:

Tôi có thể có một thùng cà phê lớn

Chúng ta chỉ cần 2 chữ số thập phân, phải không?

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

4

Toán học - 78

DateList["March"<>ToString@FromDigits@"E"]~DateString~{"MonthShort",".","Day"}

Trong tinh thần của Ngày Pi! : D
kukac67

4

Perl, 15 20 byte

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

Không phải PI__ là thứ gì đó liên tục liên quan đến Pi sao?
Llamageddon

Nó không phải là một hằng số. Đó là hai chuỗi là XOR-ed.
nderscore

Toán tử bitwise không được phép.
kukac67

Ồ, họ không phải. Vâng, đó là giải pháp giả thuyết của tôi. Điều đó nói rằng, nếu các toán tử bitwise không được phép, thậm chí còn có nhiều việc phải làm hơn là đếm độ dài của chuỗi?
Llamageddon

Có một số câu trả lời sử dụng số trong các cơ sở khác nhau.
kukac67

4

tr + Bash, 17 byte

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

Các - ký tự ở đây không phải là toán tử trừ số học. Họ chỉ ra phạm vi.

Đầu ra:

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

Thông minh, mặc dù một bản dịch nhân vật là thực sự ẩn giấu.
Pierre Arlaud

@ArlaudPierre Đúng, mặc dù tôi sẽ cho rằng khá nhiều giải pháp ở đây đã ẩn số học theo cách này hay cách khác. Nếu bạn nhìn vào các hướng dẫn máy thực tế được thực hiện cho bất kỳ câu trả lời nào trong số này, tôi sẽ nghĩ rằng tất cả đều có một số hướng dẫn bitwise hoặc số học, bị cấm sử dụng rõ ràng bởi câu hỏi.
Chấn thương kỹ thuật số

@ArlaudPierre Câu hỏi yêu cầu chuỗi "3.14" được xuất ra. Bất kể ngôn ngữ, ở đâu đó dưới mui xe, điều này sẽ suy biến thành một write()cuộc gọi hoặc tương tự. Chắc chắn sẽ có một số số học dưới vỏ bọc để đảm bảo số byte được viết chính xác, nếu không có nơi nào khác. Tôi nghĩ rằng điểm của câu hỏi để ẩn các tính toán số học / bitwise cần thiết.
Chấn thương kỹ thuật số

4

BASH, 57

Điều này dài hơn hầu hết các câu trả lời, nhưng không có gì xấu trong việc thử.

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

cho

3.14

3
Xin lỗi vì đã chơi lại câu trả lời của mọi người: P, Trong cùng một hướng như tôi đã tìm thấy:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
Score_Under

4

C, 36

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

1
Nếu chúng tôi kết hợp nó với câu trả lời của tôi, chúng tôi có thể lưu 2 byte để có được số điểm 34 :main(){printf("%d\b.%d",' ',0xe);}
vsz

3

JavaScript - 23 byte

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

Cảm ơn nderscore (xem bình luận của anh ấy)!


Nice: DI thậm chí không biết về điều này
kukac67

Nó chứa 4mặc dù;)
nderscore

@nderscore ơi! Bạn đúng! Sẽ btoa()làm việc để có được 3.14bằng cách nào đó?
kukac67

@ kukac67 Bộ ký tự base64 không chứa dấu
chấm

3
Phiên bản "hợp pháp" 23 byte: atob('Mw')+atob('LjE0')và phiên bản "bất hợp pháp" 14 byte:atob("My4xNA")
nderscore

3

C #

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

là ký tự 314, không phải là biến được xác định trước hoặc hằng số. .ToString định dạng đầu ra thành một chữ số, một khoảng thời gian và sau đó thêm 2 chữ số.


Đẹp, nhưng hiện tại nó không có đầu ra, và nó không thể biên dịch được.
Rudi Kershaw

Bảng điều khiển.Write (((int) 'ĺ'). ToString ("# \\. ##"));
Grax32

3

GolfScript, 13 10

{xy}.*'.'\

Cảm ơn Ilmari Karonen cho phiên bản cải tiến!

xylà các ký tự không in được (xem http://www.asciitable.com/ để biết thêm thông tin), tương ứng ETXSO , giải mã thành 3 và 14.

Những gì mã này làm nên khá rõ ràng.

Lưu ý: Quy tắc sau

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

không bị phá vỡ, vì các ký tự ASCII không phải là biến, cũng không phải là hằng.


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

Các chữ số không xuất hiện ở bất cứ đâu. Không có đầu vào.
Vereos

Và mã cuối cùng của bạn là ...?
user80551

{}.*.{}.*và bên trong ngoặc có 2 ký tự không in được, tương ứng ( asciitable.com ) ETXSO
Vereos

2
Bạn có thể rút ngắn điều này xuống {xy}.*'.'\ (10 ký tự). Của tôi vẫn còn ngắn hơn, mặc dù. ;-) Nhưng +1 để dạy tôi về { }.*(và { }.%), tôi sẽ phải ghi nhớ mẹo đó.
Ilmari Karonen

3

Mới vào trang web và chưa thể viết bình luận, vì vậy tôi sẽ đăng nó ở đây. Chỉ cần tự hỏi về giải pháp Javascript này:

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

và quy tắc này:

3.14 là điều duy nhất mà bạn có thể xuất ra, nó không thể là một phần của một số đầu ra dài hơn / lớn hơn ..

Nếu tôi chạy mã này trong bảng điều khiển trình duyệt của mình, tôi nhận được:

"3.14"

hoặc sử dụng Node tại dòng lệnh:

'3.14'

nhưng nếu tôi chạy mã này:

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

Tôi có:

3.14

Sử dụng Node.js để chạy tệp .js, tôi có thể viết:

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

và lấy:

3.14

1
Không bao giờ có giới hạn về loại giá trị kết quả có thể. Vì vậy, chuỗi hoặc số không quan trọng. Các trích dẫn xung quanh chuỗi không được coi là một phần của đầu ra.
nderscore

Chào mừng bạn đến với CodeGolf và Câu đố lập trình @RobertMunn! Câu trả lời này là hợp lệ vì nó tuân theo tất cả các quy tắc ... Hãy nhớ rằng consolecó xu hướng quấn các chuỗi trong dấu ngoặc kép khi hiển thị chúng ... Bạn đã sử dụng +nhưng không hợp lý, nó được sử dụng như một công cụ hòa giải, vì vậy điều đó hợp lệ ... bạn có thể làm cho nó nhỏ hơn bằng cách sử dụng alertchứ không phải console.log... Nhưng nếu không, nỗ lực rất lớn. Chúng tôi hy vọng bạn thích nó ở đây ...
WallyWest

Điều đó thật tuyệt! Bạn nên xem xét việc thêm tên của ngôn ngữ và số byte (ví dụ: Javascript, 20)
Vereos

1
Cảm ơn Ace, tôi chỉ đang học các quy tắc ở đây. Tôi không thể để lại một bình luận vì vậy tôi đã đăng riêng, tôi đoán đây là một sự làm rõ hơn về các loại bài đăng, mà nderscore và WallyWest đã làm rõ cho tôi. Tôi đánh giá cao sự kiên nhẫn của mọi người với một người mới.
Robert Munn

2

Toán học, 56 byte

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

Không có gì để nói. Tôi đang tạo các chữ số dưới dạng độ dài chuỗi và nối chúng.

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.