13

ソースコードのを文字列として出力するプログラムを書いてください。ソースが

abcd
efg

(つまり、C 文字列"abcd\nefg")

次に、出力は次のようになります

gfe
dcba

(つまり、C 文字列"gfe\ndcba")

Brainf*ck などの難解な言語を使用するためのボーナス ポイント。


*EDIT:** 不要な \0 文字を削除しました.+

4

25 に答える 25

32

C : 0 文字

参照: http://www0.us.ioccc.org/years.html#1994_smr

于 2010-03-17T21:15:27.940 に答える
24

HQ9+:

HQ9+の難解な言語では、このコードは次のようになります。

Q

ここでその言語の通訳を見つけることができます。

ルビー:

ここから逆クイン。

eval s=%q(puts "eval s=%q(#{s})".reverse)
于 2009-09-01T22:28:25.683 に答える
18

Powershell FTW (1 キャラクター):

1

コマンドラインまたはスクリプト内に直接配置します。

于 2009-09-03T16:08:41.457 に答える
8

これは、 NeatQuine.pyから改作された 2 つのライナーです。

me = 'me = %(me)r\nprint (me %% locals())[::-1]'
print (me % locals())[::-1]
于 2009-09-01T22:59:08.540 に答える
7

C89

int sprintf(char*,char*,...);char*d=
"int sprintf(char*,char*,...);char*d=%c%c%s%c%c,b[999],*p=b+251;main(){for(sprintf(b+1,d,10,34,d,34,10,10,10);*p;)putchar(*p--);}%c"
,b[999],*p=b+251;main(){for(sprintf(b+1,d,10,34,d,34,10,10,10);*p;)putchar(*p--);}
于 2009-09-01T23:47:58.457 に答える
5

バッシュスクリプト

(10文字)

cat $0|rev

これをスクリプト ファイルとして保存し、同じディレクトリで実行する必要があります。

別の解決策は、Python (またはその他のスクリプト言語) でゼロ バイトのソース コード ファイルを作成することです。代わりに何も出力しません。ルールには、0byte ファイルにすることはできないと言っているものは何もありません:)。

于 2009-09-01T23:05:55.640 に答える
5

J、26文字。

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

出力を生成します。

'''):{#2,~,(.|'):{#2,~,(.|
于 2010-06-29T04:39:23.473 に答える
4

Python 2 (55 文字):

x='x=%s;print(x%%repr(x))[::-1]';print(x%repr(x))[::-1]

より良いゴルファーはこれをいくらか短縮できるかもしれないので、改善は大歓迎です.

編集 (43 文字):

x='x=%r;print(x%%x)[::-1]';print(x%x)[::-1]

また、印刷物の空白をキャッチしてくれた@stephan202にも感謝します

于 2009-09-05T06:59:33.647 に答える
4

私はゴルフで負けるだろうが、その微妙さについての重要な教訓を私に教えてくれたreverse(). Perl多すぎる(142) 文字:

#!/usr/bin/perl
$_='#!/usr/bin/perlc%$_=c%s%c%;print sprintf~~reverse,10,39,~~reverse,39,10;c%';print sprintf~~reverse,10,39,~~reverse,39,10;

sprintf()これは、 /のreverse()組み合わせがこの問題にアプローチする方法ではないことを証明しています。より優れた Perl ソリューションは、間違いなく を使用しますeval()


大幅な改善: 45 文字:

print~~reverse <<''x2
print~~reverse <<''x2

ソース ファイルは空白行で終了する必要があることに注意してください。空白行は文字数にカウントされます。2 つの同一のコード行から奇数の文字数が得られたと他にどのように考えますか?

于 2009-09-02T00:04:56.380 に答える
3

Javascript - IE/Chrome/FF

(function(){alert(("("+arguments.callee+")()").split("").reverse().join(""))})()
于 2011-07-18T12:44:02.960 に答える
3

C では、217 文字:

a="};)01(rahctup;)--p*(rahctup);p*;43=p*(rof;)a(ftnirp;))a,b=p(tacrts(nelrts=+p{)p*rahc(niam;}7393422{=]99[b;";b[99]={2243937};main(char*p){p+=strlen(strcat(p=b,a));printf(a);for(*p=34;*p;)putchar(*p--);putchar(10);}
于 2011-02-26T14:53:25.237 に答える
3

Python 対話型プロンプトで:

xatnys dilavni :rorrExatnyS

27文字。

于 2013-12-18T22:55:08.393 に答える
3

F# (659 文字)

open System;let R(s:String)=new System.String(s|>List.of_seq|>List.rev|>Array.of_list) in let q=char 34 in let Q(s:String)=s.Replace(new String([|q|]),new String([|char 92;q|])) in let Quine s=String.Format("let s={0}{1}{2} in printf {3}%s%s{4} (R(Quine s)) (R s)",[|box q;box(Q s);box q;box q;box q|]) in let s="open System;let R(s:String)=new System.String(s|>List.of_seq|>List.rev|>Array.of_list) in let q=char 34 in let Q(s:String)=s.Replace(new String([|q|]),new String([|char 92;q|])) in let Quine s=String.Format(\"let s={0}{1}{2} in printf {3}%s%s{4} (R(Quine s)) (R s)\",[|box q;box(Q s);box q;box q;box q|]) in " in printf "%s%s" (R(Quine s)) (R s)

改行を挿入する (プログラムを壊しますが、ここでは読みやすくします):

open System;
let R(s:String)=new System.String(s|>List.of_seq|>List.rev|>Array.of_list) in 
let q=char 34 in 
let Q(s:String)=s.Replace(new String([|q|]),new String([|char 92;q|])) in 
let Quine s=String.Format("let s={0}{1}{2} in printf {3}%s%s{4} (R(Quine s)) (R s)",
    [|box q;box(Q s);box q;box q;box q|]) in 
let s="open System;
       let R(s:String)=new System.String(s|>List.of_seq|>List.rev|>Array.of_list) in 
       let q=char 34 in 
       let Q(s:String)=s.Replace(new String([|q|]),new String([|char 92;q|])) in 
       let Quine s=String.Format(\"let s={0}{1}{2} in printf {3}%s%s{4} (R(Quine s)) (R s)\",
           [|box q;box(Q s);box q;box q;box q|]) in " in
printf "%s%s" (R(Quine s)) (R s)
于 2009-09-02T11:33:11.150 に答える
2

UNIXシェル:

z=\' a='z=\\$z a=$z$a$z\;eval echo \$a\|rev';eval echo $a|rev

私は自分自身を繰り返す傾向があります。これらのプログラムは「ゲーデル」と呼ばれるべきです。なぜなら、そのようなものの大部分の背後にあるアイデアは、最初の不完全性定理(Kurt Goedel's Collected)の証明でKurt Goedelによって最初に使用されたからです(現代では)作品I、p.175)。

于 2011-07-17T12:44:55.683 に答える
2

バッシュ、75文字

もちろん、空のシェル スクリプトでは何も出力されませんが、次に考えられる最良の方法は次のとおりです。

a=\;printf\ \"a=%q%s\"\ \"\$a\"\ \"\$a\"\|rev;printf "a=%q%s" "$a" "$a"|rev

同じトリック。

于 2009-12-04T23:38:33.797 に答える
2

C89、119文字

残念ながら、これには非常に非標準的な関数を使用する必要がありますstrrev()

main(){char*a="};)43,)b(verrts,43,a(ftnirp;)a(pudrts=b*,%c%s%c=a*rahc{)(niam",*b=strdup(a);printf(a,34,strrev(b),34);}
于 2009-12-04T23:00:40.457 に答える
1

Haskell、79文字

a=";main=putStr.reverse$\"a=\"++show a++a";main=putStr.reverse$"a="++show a++a

標準的なトリック。

于 2009-12-04T23:29:41.593 に答える
1

PHP 36 バイトテスト

<?echo strrev(join(file(__FILE__)));
于 2011-01-19T22:30:23.873 に答える
1

ジャワ:

間違いなく可能な限り最短ではありませんが、なんと(1行):

public class R{public static void main(String[] a){StringBuffer s = new StringBuffer("public class R{public static void main(String[] a){StringBuffer s = new StringBuffer();s.reverse();System.out.print(s.substring(0,152));System.out.write(34);System.out.print(s);System.out.write(34);System.out.println(s.substring(152));}}");s.reverse();System.out.print(s.substring(0,152));System.out.write(34);System.out.print(s);System.out.write(34);System.out.println(s.substring(152));}}

于 2010-03-17T22:28:25.973 に答える
1

パール

73文字。

#! /opt/perl/bin/perl
seek DATA,0,0;$/=\1;print reverse <DATA>;
__DATA__
​
  • ファイルハンドルを開いた状態で開始するに__DATA__は、最後に必要があります。DATA
  • $/数値の参照に設定するreadline()と、一度にその数のバイトが読み取られます。
  • seek(DATA,0,0)セクションの先頭ではなく、ファイルの先頭にポインタを設定する必要があります__DATA__
  • シバンラインを削除または短縮できます ( #!...)
  • __DATA__の後に改行が必要であるか、有効な Perl ではありません。
于 2009-09-02T18:28:30.717 に答える
0

PHP

Snip - 不正解を削除

そして今、自分自身を贖うために。

<?php echo strrev(file_get_contents(__FILE__)); ?>
于 2009-09-02T00:02:56.617 に答える
0

JavaScript: 何文字必要ですか?
2 番目に単純な有効なプログラム (私の方法を使用): 240 文字! (スペースは含むが改行は含まない)

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<script>
var string = "<!DOCTYPE HTML>\n<html>\n" + document.documentElement.innerHTML + "\n</html>";
var string2 = string.split("").reverse().join("");
document.write(string2);
</script>
</body>
</html>
于 2013-12-20T17:26:01.823 に答える
0

python (34 文字):

print(open(__file__).read()[::-1])
于 2009-09-02T18:48:32.453 に答える
0

C/C++:

#include<stdio.h>
int main() {
    char c;
    freopen("thisfilename.c","r",stdin); //or thisfilename.cpp
    while(scanf("%c",&c)!=-1)
        printf("%c",c);
return 0; }
于 2013-12-22T19:56:21.183 に答える