코드를 거꾸로 인쇄


83

자체 소스 코드를 거꾸로 출력하는 프로그램, 즉 eniuq을 작성하십시오 .

채점 :

  • 인터넷에서 풀 데이터를 사용하는 경우 +50
  • 자신의 소스 코드를 읽는 경우 +25
  • 문자 당 +1 점
  • 최저 점수가 이깁니다.

규칙 :

  • 없음 사용하여 다른 파일이 없습니다 (예를 들어 reverse.txt)
  • 최소 코드 길이는 2 자입니다.
  • 프로그램은 회문이 될 수 없습니다.

1
"무 문경"규칙없이이 작업이 이전에 수행 된같습니다 .
Iszi

3
그 점수는 보너스 또는 처벌 입니까? +10"실제보다 10 글자가 더 많은 것처럼 점수"또는 "코드에 10 글자가 더 많을 수 있음"을 의미 할 수 있기 때문에 페널티 나 보너스 인 경우 단어로 지정해야합니다. 득점 "또는 기타 해석
AJMansfield

7
@AJMansfield 최저 점수 승은 + x가 페널티가되고 -x는 보너스가됩니다.
Iszi

9
그렇다면 내가 가진 한 가지 질문은 인터넷에서 데이터를 가져 오는 것이 소스 파일을 읽는 것보다 더 큰 페널티를받는 이유는 무엇입니까?
AJMansfield

4
Woohoo, 핫 네트워크 질문 목록에서 1 위 : D 우리 사이트는 더 많은주의가 필요합니다 ...
Doorknob

답변:


69

GolfScript-2


1

(즉 , 개행 문자는 \n1어디에 있습니까 \n)

산출:

1

(즉 1\n)


Ilmari 를 인용하려면 :

GolfScript는 자동으로 줄 바꿈을 출력 끝에 추가합니다

따라서 줄 바꿈 뒤에 숫자가 오면 숫자 뒤에 줄 바꿈이 인쇄됩니다.


14
+1 Mathematica 솔루션을 능가 할만한 것은 없다고 생각했습니다.
카야

26
꽤 지루한 해결책 ...
theonlygusti

@theonlygusti 그것은 골프 스크립트입니다, whaddya 기대 ...
Redwolf 프로그램

96

응? , 5 자

!hcuO

나는 실제로 어떻게 작동하는지 모르겠지만, 당신이 통역을 다운로드하는 경우, 당신이 작성하는 경우 !hcuO, 당신은 얻을Ouch!

이를 실행하려면 다음과 같이 프로그램을 실행해야합니다.

huh.exe !hcuO

실제로라는 파일을 !hcuO찾지 만 존재하지 않으므로 출력합니다.Ouch!


93
이해하지 못하는 것을 쓰려면 +1
Cruncher

30
의도적으로 코드가 이해되지 않는 esolang에서 자신의 코드가 어떻게 작동하는지 이해하지 못하는 것은 조금 아이러니하지 않습니까?
Iszi

@ Iszi 농담입니다.
AJMansfield

9
huh?올바른 문서를 찾는 데 어려움을 겪고 있지만 올바르게 사용하고 있는지 잘 모르겠습니다 . 사용이 될 것입니다 보인다 huh.exe <path to source code>Ouch!잘못된 경로를 반환됩니다. 코드를 실제 파일에 넣고 해당 파일을 인수로 제공 huh?하여 결과를 확인하십시오. Notes.txt주석이 달린 파일을 생성한다는 것도 흥미 롭습니다 .
Iszi

8
좋아, 이것은 이해한다고 생각하지만 아무 일도 일어나지 않았다고 말했다. 어쩌면 나는 주 시스템에서 그만 놀아야 할 것입니다.
Iszi

85

Mathematica, 3 자

a 2

a 2a시간은 2를 의미합니다 . 따라서 대답은 2 a입니다.


2
누군가가 두 개의 문자 솔루션을 얻을 수 없다면 아마도 이길 것입니다.
ike

22
사실 나는 두 가지 char 솔루션을 알고 있습니다. Mathematica에서도 : 1#. 출력은 #1입니다.
alephalpha

7
@ alephalpha : 그런 다음 답변으로 게시해야합니다!
ProgramFOX

65

H9 + , 13 자

!dlrow ,olleH

웹 페이지가 말했듯이 H, 9또는 문자가 아닌 모든 문자는 +프로그램이 인쇄Hello, world!


30
미친 밀교 언어의 유일한 장점은이 미친 질문에 답하는 것입니다.
totymedli

이러한 질문이 있다면 더 실용적 일 것입니다.
kojiro

1
그것은 꽤 대담한 영리합니다!
theonlygusti

40

자바 스크립트 : 34 자

reifitnedi detcepxenU :rorrExatnyS

SyntaxError: Unexpected identifier적어도 Chrome 콘솔에서 출력


8
오류 학대를 통해 시스템을 남용의 영리한 사용
WallyWest

2
당신은 내 하루를 만들 : D
major-mann

4
원래의 아이디어는 아니지만 이미 파이썬 2에서 이에 대한 답변 이있었습니다.
o0 '.

1
@Lohoris 죄송합니다, 저것도 보지 못했습니다
scrblnrd3

1
Mozilla Firefox의 Firebug 콘솔 : tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
kenorb

27

파이썬, 43 41

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


20

TI-BASIC, 2

i2

i허수는 어디에 있습니까 ?

출력 2i


1
이것은 PRGM 내부가 아닌 홈 화면에서만 작동합니다.
kernigh

8
@kernigh 사용해 보셨습니까? 잘 작동합니다. (TI-BASIC 프로그램의 마지막 명령문이 표현식으로 평가되는 경우 프로그램이 종료 될 때 결과가 '완료'대신 인쇄 됨)
AJMansfield

18

기본, 22 12 7 문자

:-)

1 enil ni rorre xatnyS

편집 : 즉시 모드로 프로그램을 입력 할 수 있으면이 rorre xatnyS(12 자) 로 줄어들 수 있습니다 .

BBC BASIC에서는 7 자만 필요합니다.

ekatsiM

13

C ++ 472 자

많은 문자가 있지만 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

세게 때리다

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

길이 : 31 자


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

길이 : 29 자

이것은 일부 Linux 배포판에서는 작동하지 않지만 OSX에서는 작동합니다.


tcsh

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

길이 : 26 자


csh

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

길이 : 26 자


우승자는 :

ksh

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

길이 : 21 자


위의 모든 * unix 기반 OS에서 작동합니다.


32
나를 위해 작동하지 않습니다, 나는 이름이 명령입니다dnuof
Kroltan

8
추가하는 것을 잊어 버렸습니다. dnuof설치 된 배포판 (무엇이든)에서는 작동하지 않습니다 . 젠장 해커.
kenorb

5
하하하라는 이름의 명령이 있습니다 dnuof. : D 그것은 무엇을 하는가?
Doorknob

11

GolfScript, 12 자

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

이 코드는 이중 인용 문자열을 사용 "-1%.`", (그것을 반대로 -1%그것을 (복제) .) 및 해제 evals ( `주위에 따옴표를 복원) 두 번째 사본을.

이전 항목 (13 자) :

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

이 답변{'.~'}.~ 에서 8 문자 quine 을 기반으로합니다 . 출력을 문자열 화하고 역전시키기 위해서는 여분의 5 개의 문자가 필요합니다.

추신. GolfScript는 자동으로 줄 바꿈을 출력 끝에 추가합니다. 이것이 출력의 일부로 계산되면 출력에 영향을 미치지 않고 해당 문자를 한 줄의 추가 문자 비용으로 추가 할 수 있습니다.


10

Befunge 98-10 자

"8k,'!1+,@

"여분의 공간을 추가 한 후 인터프리터가 줄 바꿈을 해석하지 않으면 작동합니다 . 인터프리터가 줄 바꿈을 그렇게 해석하면이 11 문자 솔루션이 작동합니다 ( 문자열 리터럴의 중복 공백은 하나로 해석되기 때문에 ).

"9k,'!1+,@ 

g페널티없이 사용할 수 있다면 이것들도 작동합니다 (각각 7 자와 8 자).

"5k,g,@

"6k,g,@ 

9

루비, 60

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

고전적인 루비 퀴네를 기반으로합니다.


heredocs의 좋은 사용.
Jon Purdy

9

펄, 41

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

오래된 52 자 답변 (27 + 25 페널티)

open+0;print ~~ reverse <0>

자체 소스를 읽고 스칼라에 반전을 저장 한 후 인쇄합니다.


1
scalar연산자는로 대체 될 수있다 ~~. 그러나 자체 소스 코드를 읽으려면 점수에 +25를 추가해야합니다.
breadbox December

@breadbox 메모
smcg

+1. 내가 좋아하는 뭔가를 게시하고 있었다 내 껍질 솔루션을 : $_='say"lave;\047",~~reverse,"\047=_\$"';eval하지만 솔루션은 39 자에 골프를 아래로 사용 할 수 짧은 :-) 참고입니다 say. 당신은 모든 이길 희망 비의 불확실성을 :-)
토마스

@Tomas 당신은 대체 제안되어 print함께 say? 그 결과 아무것도 인쇄되지 않습니다.
smcg

-Mfeature=say옵션으로 펄을 실행 했습니까 ?
Tomas

9

핵분열 , 6 바이트

같은 길이 인 일반화 quine 하였기에 정상 quine :

"LO+!'

아이디어는 일반 퀴니와 동일하지만 L인쇄 모드가 반대 순서로 코드를 통과하도록 왼쪽 원자 (으로 시작 )를 사용하고 있습니다.


8

J : 26

표준 Quining (26 문자) : 함수를 정의하고 자체 정의를 따옴표로 전달하여 :

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

아마 더 짧아 질 수 있습니다.

J-specific (33 chars) : 변수를 정의하고 변수가 정의 된 파일, 즉이 파일을 요청한 다음 해당 파일의 내용을 인쇄합니다.

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

스크립트에서 저장 및 실행해야합니다 (예 : REPL이 아님). 질문에 대한 대답은 "인수가 인수가 파일에 정의되지 않았으므로 읽을 파일이 없기 때문"입니다.


2
두 번째는 자신의 파일을 읽으려면 + 25 보너스를 받아야합니다.
Johannes Kuhn

2
@JohannesKuhn : 페널티, 그래.
jazzpi

1
"보너스"소리가 더 좋습니다.
Johannes Kuhn

7

> <> , 25 바이트

나는 이것이 아직 끝나지 않았다는 사실에 놀랐다. :)

...yhsif sllems gnihtemoS

여기에 코드를 붙여서 실행하십시오.

.터지는 점프 명령입니다 xy스택에서, 그리고에 IP를 이동 (x, y)코드 상자에. 이 경우 스택이 비어 있으므로 언어의 유일한 오류 메시지가 인쇄됩니다.

Something smells fishy...

1
가장 좋은 답변
Insane

7

마이크로 스크립트 , 11 바이트

나는 이것을해야했다.

0"Caxq"Caxq

놀랍게도이 언어는 실제로 가장 짧은 알려진 실제 퀴네보다 짧습니다. 래핑 따옴표를 추가 하지만 그렇지 않은 경우를 제외 q하고 a는 그렇지 않습니다.qa


5

자바 스크립트 jQuery 119 92 74 70 자

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

이제 minitech이 의견에서 제안한 것처럼 jQuery를 사용하고 수동으로 래핑 하여이 게시물 간섭의 다른 코드 블록에 대한 두려움없이 <pre><code>사용할 수 있습니다 text(). 수동으로 줄 바꿈 <h4>은 테스트 할 때 크롬 과 호환되지 않으므로 이제는 대부분의 브라우저에서 작동합니다.

이 프로그램은이 페이지에서 실행되면 바로 위의 코드 블록을 찾아 내용을 바꾸어 경고 상자에 넣습니다.

확인하기 쉬우므로 개발자 콘솔에 붙여 넣기 만하면됩니다.


함수를 사용하는 것보다 길다. 그리고 당신은 jQuery (이 페이지에서)를 사용하거나 적어도 querySelector어쨌든…
Ry-

팁에 대한 @minitech 감사합니다, 나는 querySelector지금 그것을 교환했습니다 . jQuery 가능성을 살펴보고 싶지만 알아내는 데 시간이 조금 더 걸릴 것 같습니다.
AJMansfield

@ minitech 좋아, jQuery팁 주셔서 감사합니다 . (나는 어제 자바 스크립트를 배우기 시작했다.)
AJMansfield

나는이 해결책을 좋아한다; 틀을 깨고 생각하라.
theonlygusti

4

PHP, 41 자 (+25)

과제를 올바르게 이해했는지 모르겠습니다. 그러나 여기에 PHP 시도가 있습니다.

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

편집 : 이것은 훨씬 짧을 수 있습니다 :

echo strrev(file_get_contents(__FILE__));

그러나 그것이 간단 할 수 있기 때문에 이것은 아마도 묻고있는 것이 아닙니다 ...



실행을 클릭하면 쓸모없는 말도 안됩니다 (여기에는 짧은 발췌 문장이 있습니다. >? ;)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 ; 훨씬 더 많습니다). 또한 문자 수를 포함하십시오. 이것은 코드 골프입니다. 또한 소스 파일을 읽는 것처럼 보이므로 문자 수에 25를 더하면 점수입니다. 최저 점수가 이깁니다.
저스틴

@Quincunx 우선, 그것은 거꾸로입니다 ... 그러나 둘째, 이것은 phpfiddle이 생성하는 소스 코드입니다! (하지만 거꾸로 ...) 그들은 많은 일을 피하고 물건을 안전하게 지키려고합니다. 교체 array_poparray_shift...하지 뒤로 소스 코드를 볼 수
NL-X

예, 역 소스 코드를 볼 수 있지만 모든 관련없는 텍스트는 무엇입니까? 이스케이프 시퀀스는 많지만 그렇지 않은 시퀀스가 ​​있습니다 (예 ESLAF nruter:) return FALSE.
Justin

@Quincunx 죄송합니다. phpFiddle의 작동 방식에 관심이 있거나 내 코드를 비판하는 경우에는 놓치지 않습니다. 후자 인 경우 방어에서 내 코드를 .php 파일에 넣고 브라우저에서 실행하면 제대로 작동합니다. 방금 phpfiddle이 당신이 볼 수있는 좋은 것이라고 생각했기 때문에 내부 작업의 일부를 볼 수 있습니다.
nl-x

4

MATLAB, 78 자 :

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

이 솔루션을 사용하려면 특수 문자 (alt + 0160)로 시작해야하며 반전 된 메시지를 정확하게 인쇄해야합니다. (파이썬 솔루션과 달리)


4

유닉스 쉘, 31

52 자 실제 솔루션 :

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

그러나 조심하십시오! 정직은 오늘날의 세상에서 돈을 지불하지 않습니다! 페널티가 너무 낮습니다 !!

6 자 + 25 = 31 :

rev $0

OSX rev $0에서 다음 오류가 발생합니다 rev: illegal option -- b..
kenorb

4

MS-DOS, 24 바이트

eman elif ro dnammoc daB

산출:

Bad command or file name

3

자바 스크립트, 62

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

최신 Chrome (v 31.0.1650.63)에서 작동합니다. 일부 다른 브라우저는 다른 출력을 제공 할 수 있습니다. (출력을 반대로 바꾸면 작동합니다. : P)


3

SmileBASIC, 118 102 바이트

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

2

자바 스크립트, 56

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

Chrome에서는 작동하지 않으므로 환경을 알려주십시오. 이 코뿔소입니까?
George Reith

@GeorgeReith : ES6 화살표 기능이 지원되는 모든 것. 예를 들어 모든 SpiderMonkey는 제대로 작동해야합니다 (Rhino 포함).
Ry-

2

CSS, 88 바이트

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

다른 태그와의 충돌을 피하려면 빈 HTML 페이지를 넣으십시오.


2

자바 스크립트, 53 50 46 43 바이트

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``)()

이것을 짧게 도와주세요.


랩퍼가 필요하지 않습니다. q=_=>[...`q=${q}`].reverse().join`` 잘 작동합니다.
Rɪᴋᴇʀ

래퍼를 제거하면 자동으로 자체 실행되지 않습니다.
ericw31415

필요하지 않습니다. 기능은 괜찮습니다.
Rɪᴋᴇʀ

그러나 코드는 함수의 출력이 아닌 함수 참조를 반환합니다.
ericw31415

@ ericw31415가 맞습니다. 함수 호출이 필요합니다.
Mama Fun Roll

2

퍼지 옥토 과카 몰리, 4 바이트

KNU_

K인쇄 _UNK, N밀기 NoneU밀기 0. 그리고 _스택의 최상위 값을 표시합니다 (그러나 인쇄하지는 않습니다). _UNK인쇄 만됩니다 .


K출력 _UNK합니까?
caird coinheringaahing

@RandomUser 자세한 내용은 Riker에게 문의하십시오. 그는 언어를 만든 사람입니다. 방금 문서를 읽었습니다.
대머리 Bantha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.