In mã của bạn ngược - quine ngược


83

Viết chương trình in mã nguồn của chính nó ra phía sau, nói cách khác là eniuq .

Ghi điểm:

  • +50 nếu bạn sử dụng dữ liệu kéo từ Internet.
  • +25 nếu bạn đọc mã nguồn của riêng bạn.
  • +1 điểm cho mỗi nhân vật
  • Điểm số thấp nhất chiến thắng.

Quy tắc:

  • Không sử dụng các tệp khác (ví dụ reverse.txt)
  • Độ dài mã tối thiểu là hai ký tự.
  • Chương trình của bạn không thể là một bảng màu.

1
Có vẻ như điều này đã được thực hiện trước đây , chỉ cần không có quy tắc "không palindromes".
Iszi

3
Là những điểm thưởng hoặc hình phạt ? Bạn cần chỉ định bằng từ nếu một cái gì đó là hình phạt hoặc tiền thưởng, bởi vì nói +10có thể được hiểu là "điểm như thể nó có nhiều hơn 10 ký tự so với thực tế" hoặc "mã có thể có thêm 10 ký tự sẽ không được ghi điểm ", hoặc các cách giải thích khác.
AJMansfield

7
@AJMansfield Điểm số thấp nhất có nghĩa là + x sẽ là một hình phạt, -x sẽ là một phần thưởng.
Iszi

9
Sau đó, một câu hỏi tôi có là tại sao việc lấy dữ liệu từ internet bị phạt lớn hơn đọc tệp nguồn?
AJMansfield

4
Woohoo, vị trí số 1 trong danh sách câu hỏi mạng nóng: D Trang web của chúng tôi cần được chú ý nhiều hơn ...
Doorknob

Câu trả lời:


69

GolfScript - 2


1

(tức là \n1nơi \nlà kí tự xuống dòng)

Đầu ra:

1

(tức là 1\n)


Để trích dẫn Ilmari :

GolfScript tự động nối thêm một dòng mới vào cuối đầu ra

Do đó, một dòng mới theo sau là một số sẽ in số theo sau là một dòng mới.


14
+1 Tôi không nghĩ bất cứ điều gì có thể đánh bại giải pháp Mathicala.
Kaya

26
Giải pháp khá nhàm chán ...
theonlygusti

@theonlygusti Đó là bản golf, whaddya mong đợi ...
Chương trình Redwolf

96

Huh? , 5 ký tự

!hcuO

Tôi thực sự KHÔNG biết nó hoạt động như thế nào, nhưng nếu bạn tải xuống trình thông dịch, và nếu bạn viết !hcuO, thì bạn sẽ nhận đượcOuch!

Để chạy cái này, bạn cần thực thi chương trình như thế này:

huh.exe !hcuO

Nó thực sự sẽ tìm một tệp được gọi !hcuO, nhưng nó không tồn tại, vì vậy nó xuất raOuch!


93
+1 để viết một cái gì đó bạn không hiểu
Cruncher 18/12/13

30
Có phải không chỉ một chút mỉa mai là bạn không hiểu cách thức hoạt động của mã của mình, trong một esolang mà theo thiết kế không phải là để hiểu mã của bạn?
Iszi

@Iszi Đó là trò đùa.
AJMansfield

9
Tôi không chắc bạn đang sử dụng huh?đúng, mặc dù tôi đang gặp khó khăn trong việc tìm tài liệu phù hợp. Có vẻ như việc sử dụng được dự định huh.exe <path to source code>Ouch!được trả lại cho một đường dẫn không hợp lệ. Hãy thử đặt mã của bạn vào một tệp thực tế và cung cấp tệp đó làm đối số huh?và xem điều gì sẽ xảy ra. Thật thú vị khi thấy rằng nó tạo ra một Notes.txttệp với một số lời bình luận.
Iszi

8
Ok, điều này chỉ nói với tôi rằng nó nghĩ nó hiểu nhưng tôi không thấy có gì xảy ra. Có lẽ tôi nên ngừng chơi với nó trên hệ thống chính của mình.
Iszi

85

Toán học, 3 ký tự

a 2

a 2có nghĩa là alần 2. Vì vậy, câu trả lời là 2 a.


2
Điều này có thể sẽ thắng trừ khi ai đó có thể có được một giải pháp hai char.
ike

22
Trong thực tế, tôi biết một giải pháp hai char. Ngoài ra trong Mathicala : 1#. Đầu ra là #1.
alephalpha

7
@alephalpha: Sau đó, bạn nên đăng nó như một câu trả lời!
Chương trìnhFOX

65

H9 + , 13 ký tự

!dlrow ,olleH

Như trang web nói, tất cả các nhân vật mà không phải là H, 9hoặc +là bỏ qua, vì vậy chương trình của tôi sẽ inHello, world!


30
Lợi ích thiết thực và duy nhất của các ngôn ngữ bí truyền điên rồ là trả lời những câu hỏi điên rồ này.
totymedli

Sẽ thực tế hơn nếu những câu hỏi này là như vậy.
kojiro

1
Thật là thông minh!
theonlygusti

40

Javascript: 34 ký tự

reifitnedi detcepxenU :rorrExatnyS

đầu ra SyntaxError: Unexpected identifier, ít nhất là trong bảng điều khiển Chrome


8
Sử dụng thông minh việc lạm dụng hệ thống thông qua lạm dụng lỗi
WallyWest

2
Thưa ngài, đã làm cho ngày của tôi: D
thiếu tá

4
Không phải là một ý tưởng ban đầu, đã có câu trả lời về điều này trong python 2.
o0 '.

1
@Lohoris Xin lỗi, tôi đã không thấy cái đó
Scrblnrd3

1
Bảng điều khiển Firebird trong Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
kenorb

27

Con trăn, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]


20

TI-CƠ BẢN, 2

i2

Đâu ilà con số tưởng tượng.

Đầu ra 2i


1
Điều này chỉ hoạt động trong màn hình chính, không phải trong PRGM.
hạt nhân

8
@kernigh Bạn đã thử chưa? Nó hoạt động tốt. (Nếu tuyên bố cuối cùng của chương trình TI-BASIC đánh giá là biểu thức, kết quả của nó được in thay vì 'Xong' khi chương trình kết thúc)
AJMansfield

18

CƠ BẢN, 22 12 7 ký tự

:-)

1 enil ni rorre xatnyS

EDIT: Nếu bạn được phép vào chương trình ở chế độ ngay lập tức, thì điều này có thể được giảm xuống rorre xatnyS(12 ký tự).

Trong BBC BASIC, bạn chỉ cần 7 ký tự:

ekatsiM

13

C ++ 472 ký tự

Rất nhiều nhân vật nhưng tôi không thể nghĩ ra một cách đơn giản hơn trong ngôn ngữ dựa trên c.

#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}

13

bash

$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found

Độ dài: 31 ký tự.


sh

$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found

Độ dài: 29 ký tự.

Cái này không thể hoạt động trên một số bản phân phối Linux, nhưng hoạt động trên OSX.


tcsh

$ .dnuof ton dnammoC :found.
.dnuof: Command not found.

Độ dài: 26 ký tự.


csh

% .dnuof ton dnammoC :found.
.dnuof: Command not found.

Độ dài: 26 ký tự.


Người thắng cuộc là:

ksh

$ dnuof ton :found :hsk
ksh: dnuof: not found

Độ dài: 21 ký tự.


Ở trên nên hoạt động trên tất cả * hệ điều hành dựa trên unix.


32
Không làm việc cho tôi, tôi có một lệnh có têndnuof
Kroltan

8
Tôi quên thêm, nó không hoạt động trên các bản phân phối đã dnuofđược cài đặt (bất kể đó là gì). Tin tặc chết tiệt.
kenorb

5
Hahaha, có một lệnh được đặt tên dnuof? : D nó làm gì?
Doorknob

11

GolfScript, 12 ký tự

"-1%.`"-1%.`

Mã này lấy chuỗi trích dẫn kép "-1%.`", đảo ngược nó ( -1%), sao chép nó ( .) và un-evals ( `) bản sao thứ hai, khôi phục các dấu ngoặc kép xung quanh nó.

Mục trước (13 ký tự):

{`'.~'+-1%}.~

Dựa trên câu hỏi 8-char {'.~'}.~từ câu trả lời này ; cần thêm 5 ký tự để xâu chuỗi và đảo ngược đầu ra.

Thi thiên Lưu ý rằng GolfScript tự động nối thêm một dòng mới vào cuối đầu ra. Nếu điều này được tính là một phần của đầu ra, một dòng mới tương ứng có thể được thêm vào một trong hai phiên bản mã mà không ảnh hưởng đến đầu ra, với chi phí thêm một char.


10

Befunge 98 - 10 ký tự

"8k,'!1+,@

Điều này hoạt động nếu trình thông dịch của bạn không diễn giải các dòng được bọc sau khi "thêm một khoảng trắng. Nếu trình thông dịch của bạn không diễn giải các dòng được bọc như thế, thì giải pháp 11 char này hoạt động ( vì các khoảng trắng trùng lặp trong một chuỗi ký tự được hiểu là một ):

"9k,'!1+,@ 

Nếu tôi có thể sử dụng gmà không bị phạt, thì chúng cũng hoạt động (tương ứng 7 và 8 ký tự):

"5k,g,@

"6k,g,@ 

9

Hồng ngọc, 60

puts(2,s=<<2.chop.reverse,s)
puts(2,s=<<2.chop.reverse,s)
2

Dựa trên một quine Ruby cổ điển.


Sử dụng tốt của heredocs.
Jon Purdy

9

Perl, 41

$_=q{print~~reverse"\$_=q{$_};eval"};eval

Trả lời 52 ký tự cũ (phạt 27 + 25)

open+0;print ~~ reverse <0>

Đọc nguồn riêng của nó, lưu trữ ngược lại trong một vô hướng và in nó.


1
Các scalartoán tử có thể được thay thế bởi ~~. Tuy nhiên, bạn cần thêm +25 vào điểm số của mình để đọc mã nguồn của riêng bạn.
hộp bánh mì

@breadbox lưu ý
smcg

+1. Tôi chuẩn bị đăng một cái gì đó giống như giải pháp shell của tôi : $_='say"lave;\047",~~reverse,"\047=_\$"';evalnhưng giải pháp của bạn ngắn hơn :-) Lưu ý rằng bạn có thể đánh golf xuống 39 ký tự bằng cách sử dụng say. Hy vọng bạn sẽ đánh bại tất cả sự kỳ lạ bí truyền :-)
Tomas

@Tomas bạn đang đề nghị thay thế printbằng say? Điều đó kết thúc không in bất cứ điều gì.
smcg

Bạn đã chạy perl với -Mfeature=saytùy chọn?
Tomas

9

Phân hạch , 6 byte

Một trường hợp hiếm hoi của một quine tổng quát có cùng chiều dài với quine bình thường :

"LO+!'

Ý tưởng này giống như của quine thông thường, nhưng chúng tôi đang sử dụng một nguyên tử đi bên trái (bắt đầu từ L) để chế độ in đi qua mã theo thứ tự ngược lại.


8

J: 26

Chuẩn quining (26 ký tự) : bằng cách xác định hàm và truyền vào định nghĩa của chính nó, trong ngoặc kép:

|.(,],2#{:)'|.(,],2#{:)'''

Có lẽ có thể được thực hiện ngắn hơn.

J-Cụ thể (33 ký tự) : bằng cách xác định một biến và hỏi tệp nào được xác định trong đó, tức là tệp này, sau đó in ra nội dung của tệp đó:

1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''

Phải được lưu và chạy từ một tập lệnh (nghĩa là không có trong REPL, vì khi đó câu trả lời cho câu hỏi là "đối số của bạn không được xác định trong một tệp", vì vậy không có tệp nào để đọc).


2
Người thứ hai sẽ nhận được phần thưởng + 25 để đọc tệp riêng.
Julian Kuhn

2
@JohannesKuhn: Phạt, nhưng ừ.
jazzpi

1
"Tiền thưởng" nghe hay hơn.
Julian Kuhn

7

> <> , 25 byte

Tôi đã ngạc nhiên khi thấy điều này chưa được thực hiện. :)

...yhsif sllems gnihtemoS

Dán mã ở đây và chạy nó.

.là lệnh Jump, bật xytắt ngăn xếp và di chuyển IP đến (x, y)trong hộp mã. Trong trường hợp này, ngăn xếp trống, do đó, thông báo lỗi duy nhất của ngôn ngữ được in:

Something smells fishy...

1
Câu trả lời hay nhất
Insane

7

Kính hiển vi , 11 byte

Tôi đã phải làm điều này.

0"Caxq"Caxq

Đáng ngạc nhiên, điều này thực sự ngắn hơn so với câu hỏi thực sự ngắn nhất được biết đến của ngôn ngữ. qatương đương, ngoại trừ qthêm dấu ngoặc kép trong khi akhông.


5

JQuery jQuery 119 92 74 70 ký tự

alert($("#answer-16051 pre code").text().split("").reverse().join(""))

Bây giờ sử dụng jQuery, như minitech đã đề xuất trong các nhận xét và đóng gói thủ công <pre><code>để tôi có thể sử dụng text()mà không sợ các khối mã khác trong bài đăng này can thiệp. <h4>Gói thủ công không tương thích với chromeium khi tôi thử nghiệm nó, vì vậy bây giờ nó sẽ hoạt động trong hầu hết các trình duyệt.

Chương trình này, nếu được chạy từ trang này, sẽ tìm thấy khối mã trực tiếp ở trên, đảo ngược nội dung của nó và đặt nó vào một hộp cảnh báo.

Nó đủ dễ để xác minh, chỉ cần dán nó vào bảng điều khiển dev.


Đây là cách lâu hơn so với chỉ sử dụng một chức năng. Và bạn nên sử dụng jQuery (trên trang này) hoặc ít nhất là querySelectordù sao đi nữa
Ry- 19/12/13

@minitech cảm ơn vì tiền boa, tôi đổi chỗ querySelectorngay bây giờ. Tôi muốn xem xét khả năng của jQuery, nhưng có vẻ như tôi sẽ mất nhiều thời gian hơn để tìm ra.
AJMansfield

@minitech ok, cảm ơn vì tiền jQueryboa. (Tôi chỉ bắt đầu học javascript ngày hôm qua.)
AJMansfield 19/12/13

Tôi thích giải pháp này; suy nghĩ ngoài hộp.
theonlygusti

4

PHP, 41 ký tự (+25)

Không biết tôi có hiểu đúng bài tập không. Nhưng đây là một thử PHP:

while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);

chỉnh sửa: điều này có thể ngắn hơn nhiều:

echo strrev(file_get_contents(__FILE__));

Nhưng vì nó có thể đơn giản như vậy, nên đây có lẽ không phải là điều đang được hỏi ...



Khi tôi nhấp vào chạy, tôi nhận được cả đống thứ vô nghĩa (đây là một đoạn ngắn của nó : >? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw ; còn nhiều hơn thế nữa). Ngoài ra, bao gồm số lượng nhân vật của bạn; Đây là một mã golf. Ngoài ra, có vẻ như bạn đang đọc tệp nguồn của mình, vì vậy hãy thêm 25 vào số ký tự của bạn và đó là điểm số của bạn. Điểm số thấp nhất chiến thắng.
Justin

@Quincunx Trước hết, nó ngược ... nhưng thứ hai, đây là mã nguồn mà phpfiddle tạo ra! (nhưng ngược lại ...) Họ dường như trốn thoát rất nhiều thứ, cố gắng giữ mọi thứ an toàn. Thay thế array_popbằng array_shiftđể xem mã nguồn không bị ngược ...
nl-x

Có tôi có thể thấy mã nguồn bị đảo ngược, nhưng với văn bản không liên quan là gì? Có rất nhiều chuỗi thoát, nhưng có một số không (ví dụ: ESLAF nrutervd return FALSE).
Justin

@Quincunx Xin lỗi, tôi không nắm bắt được nếu bạn đang thể hiện sự quan tâm đến cách hoạt động của phpFiddle hoặc nếu bạn đang chỉ trích mã của tôi. Nếu đó là cái sau, thì để bảo vệ tôi, hãy đặt mã của tôi vào tệp .php và chạy nó trong trình duyệt và nó sẽ hoạt động sạch sẽ. Tôi chỉ nghĩ rằng phpfiddle là một thứ tốt đẹp để cho bạn xem, vì vậy bạn có thể thấy một chút hoạt động bên trong của nó.
nl-x

4

MATLAB, 78 ký tự:

 
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE

Lưu ý rằng giải pháp yêu cầu bạn bắt đầu bằng một ký tự đặc biệt (alt + 0160) và nó sẽ in chính xác thông điệp đảo ngược. (Không giống như giải pháp trăn)


4

Vỏ UNIX, 31

Giải pháp thực sự ở 52 ký tự:

A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A

Nhưng hãy cẩn thận! Sự trung thực không được đền đáp trong thế giới ngày nay! Mức phạt quá thấp !!

6 ký tự + 25 = 31:

rev $0

Trên OSX rev $0tạo ra lỗi : rev: illegal option -- b.
kenorb

4

MS-DOS, 24 byte

eman elif ro dnammoc daB

Đầu ra:

Bad command or file name

3

JavaScript, 62

function f(){alert((f+'f()').split('').reverse().join(''))}f()

Hoạt động với tôi trên Chrome mới nhất (v 31.0.1650.63). Một số trình duyệt khác có thể cung cấp một đầu ra khác. (Nếu bạn đảo ngược đầu ra đó, thì nó sẽ hoạt động: P)


3

SmileBASIC, 118 102 byte

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT

2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()

Vui lòng cho biết môi trường của bạn vì điều này không hoạt động trong Chrome. Đây là Rhino hay là gì?
George Reith

@GeorgeReith: Bất cứ điều gì có hỗ trợ chức năng mũi tên ES6. Tất cả các SpiderMonkey đều hoạt động tốt, chẳng hạn (bao gồm cả Rhino).
Ry- 20/12/13

2

CSS, 88 byte

<style>:before,*{display:block;unicode-bidi:bidi-override;direction:rtl;content:'<style>

Đặt trong một trang html trống để tránh xung đột với các thẻ khác.


2

JavaScript, 53 50 46 43 byte

q=_=>("q="+q+";q()").split("").reverse().join("");q()

(q=_=>`(q=${q})()`.split("").reverse().join(""))()

(q=_=>`(q=${q})()`.split``.reverse().join``)()

(q=_=>[...`(q=${q})()`].reverse().join``)()

Xin hãy giúp tôi rút ngắn điều này lên.


Bạn không cần trình bao bọc. q=_=>[...`q=${q}`].reverse().join`` hoạt động tốt như vậy.
Rɪᴋᴇʀ

Nếu tôi loại bỏ trình bao bọc, nó sẽ không tự động thực thi.
ericw31415

nó không cần Chức năng là tốt.
Rɪᴋᴇʀ

Nhưng sau đó, mã trả về tham chiếu hàm, không phải đầu ra của hàm.
ericw31415

@ ericw31415 đúng. chức năng gọi là cần thiết.
Mama Fun Roll

2

Fuzzy Octo Guacamole, 4 byte

KNU_

Kin _UNK, Nđẩy None, và Uđẩy 0. Và _bật giá trị hàng đầu trên ngăn xếp (nhưng không in). Vì vậy, chỉ _UNKđược in.


Tại sao Kđầu ra _UNK?
caird coinheringaahing

@RandomUser hỏi Riker để biết thêm chi tiết, anh ấy là người tạo ngôn ngữ. Tôi chỉ đọc tài liệu.
Hói Bantha
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.