Quine


25

Viết một câu hỏi ... từ đó mọi ký tự khác có thể được loại bỏ, nó vẫn là một câu hỏi hợp lệ. Bạn có thể chỉ định nên bắt đầu loại bỏ các ký tự ở ký tự đầu tiên hoặc thứ hai.

Tiêu chí chấm điểm (cộng các phần thưởng / tỷ lệ phần trăm với nhau cho tổng tỷ lệ phần trăm):

  • Câu trả lời phải dài ít nhất 4 ký tự
  • Chương trình phải chứa ít nhất một ký tự chữ cái trong nguồn của nó, vì vậy, ví dụ, 12345!@#$%^&*()bị loại
  • + 750% nếu ngôn ngữ được sử dụng không hoàn chỉnh (Tôi đang nhìn bạn, HTML!)
  • -15% nếu giải pháp không đọc nguồn của nó từ bất kỳ đâu dưới mọi hình thức
  • -20% nếu bạn cũng chỉ có thể giữ mỗi ký tự thứ 5 mà vẫn tạo thành một quine

Điểm số được đo bằng số lượng ký tự trong chương trình đầu tiên.

Ví dụ (không phải chương trình thực):

Nếu 123456789abcdef13579bdflà cả hai 159dquine, điểm số là 15. Ngoài ra, nếu cũng là một quine, thì điểm cuối cùng là 12.

Đây là môn đánh gôn, nên điểm số thấp nhất sẽ thắng.


2
@ hosch250 Chương trình ban đầu sẽ không phải là một câu hỏi vì nó sẽ không in những khoảng trắng đó. Cùng đi cho ý kiến ​​không cần thiết.
Jwosty

1
Vâng, tôi chưa bao giờ lập trình một câu hỏi trước đây và không biết làm thế nào để làm điều đó mà không cần đọc mã nguồn trong C ++. Tôi đã thấy chúng trong C ++ trước đây!
Hosch250

1
Bạn nêu: "-20% nếu bạn cũng có thể xóa mỗi 4 ký tự và vẫn tạo thành một câu đố". Nhưng về mặt kỹ thuật thì đây không phải là điều xảy ra trong ví dụ của bạn. Bạn có nghĩa là bạn có thể làm điều đó lần thứ hai?
mmumboss

4
Là tiền thưởng phụ gia hay nhân? Đó là, nếu chương trình của tôi dài 10 ký tự và đủ điều kiện cho cả phần thưởng -15% và phần thưởng -20%, điểm số của nó sẽ là 10 * (1 - 0,15 - 0,2) = 6,5 hoặc 10 * (1 - 0,15) * (1 - 0,2) = 6,8? Tôi giả sử sau, nhưng một sự làm rõ rõ ràng sẽ tốt đẹp.
Ilmari Karonen

1
Đây sẽ không phải là một quine Mandoline, không phải là Guillotine? Guillotines làm cho một người sạch sẽ, thường gây tử vong, cắt và đầu lăn đi. Mandolines thực hiện với nhiều lát cách đều nhau. :)
Jonathan Van Matre

Câu trả lời:


24

PHP, 4 ký tự - 15% - 20% = 2,72 2,6 điểm

ABCD

Vâng, PHP là một ngôn ngữ hoàn chỉnh. Không ai nói tôi phải sử dụng bất kỳ tính năng lập trình thực tế nào của nó. ;-)

Chỉnh sửa: Thay đổi điểm số dựa trên việc làm rõ rằng tiền thưởng là phụ gia, không phải là số nhân.


Điều này hoạt động trong ASP, có thể.
Ismael Miguel

2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Tôi bỏ cuộc. : P
Jwosty

17
Trên thực tế, việc sử dụng các tính năng lập trình thực tế của PHP không được khuyến khích.
Rhymoid

1
Đây không phải là một quine thích hợp. Tuy nhiên, đây vẫn là một câu trả lời hay
MilkyWay90

14

TI CƠ BẢN 4 - 35% = 2,6

Tôi có thể hiểu họ sai, nhưng tôi nghĩ rằng tôi cũng đủ điều kiện cho các -15% và -20% bonusses, có nghĩa là tôi có điểm thấp nhất có thể.

Tôi có thể viết chương trình:

123i

Tất nhiên sẽ xuất ra 123itrong đó tôi là đơn vị tưởng tượng. Khi bạn loại bỏ ký tự thứ 1 và thứ 3, tất cả những gì còn lại là 2iđầu ra2i


Không hoàn toàn ... '12i' sẽ xuất ra '12i' và '2' sẽ xuất '2' cho số điểm tối thiểu là 1,95.
intx13

Trên thực tế, '2i' đạt 1,3 điểm và nếu chương trình trống được coi là điểm trừ, 'i' sẽ đạt 0,65.
intx13

4
@ intx13: " Câu trả lời phải dài ít nhất 4 ký tự. "
Ilmari Karonen

À, tôi đã bỏ lỡ điều đó!
intx13

Đánh bại tôi với nó;)
Timtech

13

Con trăn - 95

Thử thách lớn. Tôi nghĩ rằng điều này là khá thông minh, và thực sự là một giải pháp hợp pháp!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)

1
Tốt đẹp! Lưu ý rằng về mặt kỹ thuật này không hoạt động như hiện tại vì cuối cùng bạn sẽ xóa dòng mới khi thực hiện thay thế. đòi hỏi một chút tinh chỉnh IOW
Claudiu

3
@Claudiu Tôi đoán nó phụ thuộc vào việc OP có xem dòng mới là một nhân vật hay không. Nếu vậy, bạn chỉ có thể thêm một dòng mới giữa mỗi dòng. 96 ký tự
qwr

Tất nhiên một dòng mới là một nhân vật ...
mbomb007

11

Golf, 5 điểm

{hai}

là một hàm mà khi được thực thi sẽ chạy hàm (không tồn tại) hai . Tuy nhiên, nó không được thực thi mà chỉ được in khi chương trình kết thúc - bao gồm cả dấu ngoặc ngoài. Loại bỏ các ký tự khác mang lại:

{a}

Lame, tôi biết :-)


Tôi tin rằng bạn cũng đủ điều kiện nhận cả hai phần thưởng: chương trình của bạn không đọc mã nguồn của chính nó và {}cũng là một điểm trừ.
Ilmari Karonen

@IlmariKaronen thật khó để nói điều gì được tính là đọc mã nguồn riêng. Liệu các hàm không định giá được tính? Có đánh giá chuỗi? Đối với phần thưởng khác - có thể nó chỉ bị nói xấu, nhưng tôi đã đọc "xóa bốn ký tự" thành "giữ mỗi ký tự thứ năm", sẽ chỉ còn lại một dấu ngoặc (mặc dù {ab0}đủ điều kiện nếu 0có thể là ký tự được giữ)
John Dvorak

Nó thực sự bị nói xấu, nhưng ví dụ cho thấy nó có nghĩa là "giữ mọi ký tự thứ tư". Dù sao, như bạn lưu ý, {ab0}đủ điều kiện một trong hai cách.
Ilmari Karonen

Nó dường như {hi}cũng hoạt động, sẽ ngắn hơn (4 ký tự), và cũng sẽ đủ điều kiện cho tất cả các phần thưởng. (Có vẻ như kịch bản {iước tính {ivì một số lý do ...)
Claudiu


8

HQ9 + - 4 * 7.5 * 0.8 = 24 điểm

Q+++

Vẫn là một câu đố với mỗi nhân vật thứ hai:

Q+

... và mỗi thứ năm:

Q

Xin lỗi, tôi không thể cưỡng lại. :)


7

HTML / Đánh dấu, 4 * 7.5 = 30

HHHH

Tôi thừa nhận điều này là khập khiễng, nhưng nó không thực sự đi ngược lại bất kỳ quy tắc nào trong câu hỏi. Ngoại trừ việc HTML / Markdown có thể không được coi là ngôn ngữ lập trình thực sự.


Tôi cho rằng tôi đã không chỉ định rằng các chương trình không thể chia nhỏ hơn không hợp lệ. Thử thách sửa đổi ...
Jwosty

@Jwosty: thì "HHHH" trong HTML sẽ thắng. Lưu ý 5555không hoạt động vì nó không có ký tự chữ cái
Claudiu

Bạn cần một ký tự chữ cái.
qwr

@qwr: Quên điều đó khi xem GolfScript. Đã gỡ bỏ.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Hmm ... Tôi cho rằng điều này hợp lệ: P
Jwosty

5

! / thùng / sh

Tôi thích giải pháp của qwr rất nhiều, tôi không biết xấu hổ đã tạo một cổng cho vỏ POSIX. Vui lòng không lưu nó vào tên tệp chứa dấu cách.

: '#';cat $0

#c a t   $ 0

Bắt đầu xóa ở ký tự số 1 và đếm dòng mới dưới dạng ký tự. Tất nhiên, câu hỏi thứ hai là:

 #;a 0
cat $0

Vui lòng upvote câu trả lời của qwr thay vì câu trả lời này!


3

Bash, 23

Dòng mới là một nhân vật!

Một số bình luận lộn xộn hoạt động, để khi mọi ký tự khác bắt đầu từ ký tự đầu tiên bị xóa, bình luận sẽ trở thành mã và mã trở thành một nhận xét:

#cRaRtR R$R0R R#
cat $0

Sau khi mọi ký tự khác ( bao gồm cả dòng mới ) bị xóa:

cat $0 #ct$

nó không phải là một câu hỏi nếu nó đọc nguồn của chính nó.
daniero

@daniero "-15% nếu giải pháp không đọc được nguồn từ bất kỳ nơi nào dưới bất kỳ hình thức nào" ngụ ý rằng bạn được phép đọc nguồn của chương trình (nhưng bạn không nhận được tiền thưởng)

@daniero oh tôi đã xem trên wikipedia Tôi cho rằng nó gian lận ... nhưng đó là mã golf

Tôi luôn upvote mèo!
Antonio Ragagnin

2

Brainf ** k, 37 - 15% = 31,45

Lạm dụng Trình thông dịch Brainfuck di động

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Bắt đầu loại bỏ từ nhân vật thứ hai.


Khi tôi chạy nó, tôi nhận được B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]như là đầu ra vì vậy nó thiếu một số ký tự.
Sylwester

Đó có phải là Brainfuck, hay một phương ngữ đặc biệt của Brainfuck chỉ hoạt động trên một trình thông dịch?
dùng253751

@immibis Đó là thông thường (những chữ in hoa có thể là khoảng trắng hoặc ký hiệu hoặc bất cứ thứ gì). Tuy nhiên, bạn phải sử dụng trình thông dịch di động được liên kết từ câu trả lời.
Timtech

1
Phần đầu tiên đi bên trái cho đến khi nó tìm thấy và trình thông dịch được liên kết tình cờ lưu mã 5000 byte trước khi bắt đầu băng dữ liệu. Đó là Brainfuck khó cầm tay.
dùng253751

0

HQ9 + T, - 4 * 0,8 = 3,2 điểm

qqqq

Đó là một quine hợp lệ (ish) và một quine mỗi giây và thứ năm char. Tôi không thể cưỡng lại. . . .

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.