2010-03-19 21 views
16

Vừa đọc xong bài đăng trên blog này: http://www.skorks.com/2010/03/an-interview-question-that-prints-out-its-own-source-code-in-ruby/Ngắn nhất Ruby Quine

Trong đó, tác giả cho rằng trường hợp dùng câu hỏi phỏng vấn. Tôi không chắc chắn tôi đồng ý nhưng đó không phải là những gì câu hỏi này là về.

Ông tiếp tục xây dựng một quine trong Ruby và refactor nó để làm cho nó ngắn hơn. Sau đó, anh ấy thách thức người đọc cố gắng làm cho nó ngắn hơn.

tôi đã chơi đùa với nó trong một thời gian và đã đưa ra như sau:

s="s=;puts s[0,2]+34.chr+s+34.chr+s[2,36]";puts s[0,2]+34.chr+s+34.chr+s[2,36] 

Đây là lần đầu tiên tôi đã từng cố gắng một Quine và tôi không thể tìm ra cách để làm cho nó bất kỳ ngắn hơn .

Ruby quine ngắn nhất mà bạn có thể đưa ra là gì? Vui lòng đăng giải thích nếu việc triển khai của bạn yêu cầu.

+2

Nếu bạn đang tự hỏi, một Quine là một chương trình mà khi chạy, in mã nguồn riêng của nó. http://en.wikipedia.org/wiki/Quine_(computing) – AaronThomson

+6

Đây là ngắn nhất của tôi Quine: –

+0

Có lẽ tôi nên nói "ngắn nhất, không tầm thường quine"? – AaronThomson

Trả lời

19

Thật không may RubyGarden không tồn tại nữa. Dưới đây là một vài liên kết để bù đắp cho nó (một trong những Kevin gửi không phải là ngắn nhất một nữa bằng cách này):

The first quines in Ruby

s="s=%c%s%c; printf s,34,s,34,10%c"; printf s,34,s,34,10 

ruby quine slightly smaller than python quine

_="_=%p;puts _%%_";puts _%_ 

shortest nozero [sic!] ruby quine

puts <<2*2,2 
puts <<2*2,2 
2 
+0

Cảm ơn, đó chỉ là những gì tôi đang tìm kiếm. Bạn có thể giải thích cú pháp trên cú pháp cuối cùng không? – AaronThomson

+0

Nó thực sự được giải thích trên trang thứ hai của chuỗi được liên kết ở trên. Trích dẫn: "đặt << 2" - in tất cả văn bản từ sau tuyên bố này cho đến khi bạn truy cập chuỗi "2". .... "* 2" - In chuỗi đó hai lần .... ", 2" - Và sau đó in giá trị 2 Thứ hai "đặt << 2 * 2,2" chỉ là văn bản và "2" cuối cùng là ký hiệu phân cách . –

+0

Nó hoạt động trên Perl quá! http://pastebin.com/0YVrr4wN –

2
$><<open($0).read 

17 byte, nếu bạn không có dòng mới.

EDIT: oh, chờ đã, đọc tệp nguồn của riêng bạn đang gian lận.

4

Thậm chí ngắn hơn:

$><<IO.read($0) 

15 ký tự, không bao gồm các newline

+8

Không phải là một quine: http://en.wikipedia.org/wiki/Quine_(computing)#.22Cheating.22_quines – johncorser

Các vấn đề liên quan