古くから有効


24

SOに関するこの質問に触発され、あなたの仕事は、異なる出力を生成する選択した言語の(少なくとも)2つの主要バージョンで有効なプログラムを生成することです。

ルール

  • 複数のメジャーバージョンを持つ任意の言語を使用できます。
    • この課題のために、バージョン番号の最初の数字が変わる「メジャーバージョン」を提案します。
      • PHP 4とPHP 5は異なりますが、PHP 5.3とPHP 5.4は違います。
    • しかし、私はすべての言語のバージョン管理スキームを知らないので、あなたがあなたの主張を十分に主張できるなら、コミュニティはあなたがあなたが「メジャーバージョン」を決定するのに公平であったかどうか決定すると確信しています。
  • コードは毎回同じフラグと入力でコンパイルおよび実行する必要があります
    • これが適切である場合、言語のバージョンを変更することを除いて
  • エラーは出力としてカウントされず、エラーを生成する回答は失格になります(エラー出力は単に無視されるのではなく)
  • プログラムは、実行に必要なもの以外の入力を受け付けません。
  • 特定のバージョンごとに、出力は常に同じである必要があります
  • 意図は、変更がVM仕様または環境メタデータではなく、言語仕様の変更の結果であるべきだということです。

得点

  • タイプの長さのスコアリング、したがって+1各文字/バイト
  • -1出力の長さの各文字の違いに対して。
    • 例:バージョン1出力abcde(5文字)、バージョン2出力123abc(6文字)=-1

その他の規則

  • 標準の例外が適用されます-外部プログラム、Webリクエストなどはありません。
  • プログラムは終了します(2秒以内)
  • 最低スコアが勝ちます。

「より良い」スコアリング

公平を期すために、元のルールに基づいて勝者をマークします。

私の元のスコアリングは基本的に壊れているので、次のスコアリングシステムで再度スコアリング/再試行してみてください。

  • タイプの長さのスコアリング、したがって+1各文字/バイト
  • +1出力の 長さの各文字の違いについて
    • abcdeおよび123456->+1
  • -1出力の一意の文字の違いごとに(最短出力の長さに制限されます)
    • abcdeおよび123456->-5
    • 12345および123456->-1
    • 12345および123455->0
  • ゼロ勝に最も近いスコア
  • 2回目のタイブレークの場合は、単純なスコアが勝ちます。

注:Rubyでは、最初の数字はエポックであり、バージョン番号ではなく、Rubyの歴史における主要なイベントを意味します(0-> 1が初期リリース、1-> 2がRubyの20歳の誕生日でした)。メジャー番号は2番目の番号です。そのため、Ruby 1.8-> 1.9はメジャーリリースを通過します。
ヨルグWミットタグ14

1
私はそれが実質的に新しい問題だ、新しい得点はオリジナルとあまりにも違うと思い
タル

PHPの例は議論の余地があり、5.4には5.3で機能しなくなる基本的な機能がいくつかあります(特性、[]配列、配列の逆参照)。それはPHP6になるだろうが、その後IIRC、デフォルトでUnicode文字列など、より過激なものに6を保存することを決めた
Einacio

2
ユニークなキャラクターの違いは何ですか?私が出力zzzzしてaaaa、それが私に与えます-4か?それは私にはそう思われます。
ジャスティン14

1
だから、プログラムが実行するバージョンを検出できると仮定すると、勝者は2秒でほとんどの文字を出力できる人ですか?この質問は、人々に興味深くて微妙な言語のバグを見つけるよう促す人気コンテストとしてはより良いと思います。
頭足類14

回答:


39

「より良い」スコアリングシステムの修正された回答

C89 / C99、スコア:0

私のプログラムは52文字の長さで、元の回答と同じメカニズムを使用して異なる出力を実現しています。これは、C89 //がコメントとして扱わないために機能します。

i=32;main(){putchar(i+++0//**/
+52)&&i<84&&main();}

結果:

$ ./diff2c89
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS
$ ./diff2c99
TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂Çüéâäàåç
$ ./diff2c99 | wc
      0       1      52
$ ./diff2c89 | wc
      0       1      52
$ wc diff2.c
      1       2      52 diff2.c

古い答え:

C89 / C99、スコア:-無限大?

このプログラムが規則に違反しないかどうかは完全にはわかりませんが、気にしません。このプログラム//は、C89では有効なコメントではないという事実を利用してい/* ... */ます。

コメントトリックを使用して、他の関数が実行されます。C89では、関数"trolololol..."はスタックがオーバーフローするまで出力します(したがって、2秒以内に終了する可能性があります)。

f1(){printf("ol");f1();}
f2(){printf("oll");}
main(){
    printf("tr");
    void (*f[])() = {f1,f2};
    f[0 //* trollololol */
      +1]();
}

C99

$ ./diffc99
troll

C89

$ ./diffc89
trolololololololololololololololololololololololololololololololololololololololololo
lolololololololololololololololololololololololololololololololololololololololololol
ololololololololololololololololololololololololol ....

1
規則に反するかどうかはわかりませんが、私はそれが好きです:)
タル14

9
「より良い規則」によると、Scores closest to zero winこれは実際はゼロからはかけ離れています。
user80551 14

1
C標準のコメントの定義に応じて、除算または加算によって関数ポインターの配列にインデックスを付けます...美しい。
Desty

16

Python-次のベストアンサーより10ポイント少ない

print(range(100))

Python 2では、これは0から99までの整数のリスト全体を印刷します。

Python 3では、 rangeジェネレーターであるため、「range(0,100)」のみが出力されます。

Pythonで数値のサイズ制限に遭遇したことがないので、その100をもっと大きな数値(2 ** 1000など)に置き換えると、出力に実質的に無限の差が生じます。

実際の目的では無限に低いスコアを取得できるが、2秒未満で終了するプログラムでは実際の無限に到達できないという事実を反映するように編集

更新されたタイブレーカースコアリングシステムについては、以下を提出します。

print(range(4))

出力:

Python 2: [0, 1, 2, 3]

Python 3: range(0, 4)

最初の印刷には5つの固有の文字([123])、2番目の印刷には8つの固有の文字(range(4))、出力の長さの違いは1、コードには15文字、最短の出力には11文字があります...これにより、最終スコアが15 + 1-min(11,5 + 8)= 5になると思います。


ただし、「プログラムは終了する必要があります」、非常に(有限)高速なマシンであっても、「はるかに大きい」(有限)数はまだ-∞の近くにないため、スコアに異議を唱えます(与えるか取る;])
James Webster

@JamesWebsterこの恐ろしい技術的ミスに注意を払ってくれてありがとう、それに応じて答えを編集しました;)
タル14

他の同様の答えはきっと来るでしょう。これらの回答のスコアは、無限に到達する速さで計算する必要があると思います。
ヴェレオ14

@Vereosこの種の他の回答が表示された場合、追加のスコアリング詳細を使用して質問が編集されることを願っています。
タル14

1
@Talスコアリングルールを読む人は誰でも、問題に対する答えを読む前に、言語またはハードウェアによってのみ制限されるネガティブスコアを生成できるソリューションを構成すると思います;)スコアリングは設計により壊れています...
foob​​ar 14

13

Python-0ポイント

これがどのように機能するのかわかりません:Pランダムなコードを試しているときにつまずいただけです。

int

Python 3、<class 'int'>Python 2、および<type 'int'>(インタラクティブコンソールを使用)
「Better」スコア:3(長さ)+ 1(char diff。)-4(一意のchars)

古いPython 1-7ポイント

print()

@grcに大きな感謝このバージョンのにます。

Python 2では、このステートメントはprint ()空のtupleを出力するものとして解釈され()ます。
Python 3では、printは関数であり、何も出力されません。
「より良い」スコア:7(長さ)+ 2(char diff。)-2(一意のchars)

古いPython 2-13ポイント:

print(1,2)

「より良い」スコア:12(長さ)+ 2(char diff。o / p)-1(一意のchars o / p)

私はこれが勝つつもりはないことを知っていますが、これは私の最初のPythonの試みであるため、まだ答えを与えました:)


これはに短縮できると思いますprint()
GRC

@grcアドバイスをありがとう!私のコンパイラを振り返ってみると、私はそれを試してみましたが、ドキュメントで非常に失われたので、試してみるためにそれを削除しましたdict.itertools():P
Gaurang Tandon 14

12

C#

また、C#2、3、および4の間でジェネリックメソッドタイプ推論アルゴリズムを変更しました。次に例を示します。

using System;
class C
{
  static int M<T>(T x, T y) { return 1; }
  static int M(object x, object y) { return 2; }
  static void Main() 
  {
    Console.WriteLine(M(1, new int?()));
  }
}

C#2のメソッド型推論では、Tはintandの両方になり得ないint?ため、を生成し2ます。C#3メソッドの型推論では「との間で最良の妥協点を言うintint?ですint?」などを選択したM<int?>と1を生成します。


9
> 私はまた変わっあなたが何を意味するのか、あなたがああ...変更しました。ああ。
ボブ14

9

ルビー、4文字+ 0文字の長さの差-3ユニークな文字の差=スコア1

p ?d

Ruby 1.9では、印刷されます"d"。1.8では、印刷され100ます。

説明:?dある"d"1.9にし、100(DのASCIIコード)1.8インチ p xはと同等puts x.inspectです。*文字列の繰り返しと乗算の両方です。


古いスコアリング用の「最適化された」バージョン:

Ruby、8文字-999999989文字の差= -999999981のスコア

p ?!*1e9

33000000000.01.8および"!!!!!!... !!!"1.9で印刷します。(?!ある331.8にと"!"1.9に、と*文字列の繰り返しと乗算の両方です。)

本当に、あなたはあなたが掛け算で望む限り行くことができました、それはちょうどあなたのコンピュータがどれくらい速いかに依存します。


その2行目で正確に何が起こっているのか説明できますか?
タル14

@タル大丈夫、編集
ドアノブ

8

Bash —-∞(実用的な制限まで)

効果的に、しかしあなたが持っている多くのメモリ。たとえば、約10GBの場合:

echo {0..999999999}

Bash 2:ブレース展開の範囲をサポートしていないため、を出力し{0..999999999}ます。

Bash 3:


任意の言語—-∞(実用的な制限まで)

多少複雑になっても、ほとんどすべての言語でこれを使用できます。2つの異なる値を作成できるようになるとすぐに、任意の異なる出力を生成するコードを作成できます。より良いスコアリング方法は、出力の違いを無視します。

version = … # some arbitrarily weird stuff
if version = 2:
    while not timed_out():
        print "version2"

@foobar 「任意の言語」バージョンでは、言語仕様の変更にプログラムを依存させるために使用するあらゆるトリックを表します。それはあなたが行うかどうか、バージョン検出ですif $version >= 3if isinstance(range(0),list)
ジル 'SO-悪であるのをやめる' 14

4

C#

次のコードは、C#5.0と以前のバージョンのC#で異なる出力を生成します

using System;
using System.Collections.Generic;

namespace TestConsoleAppClosure
{
    class Program
    {
        static void Main(string[] args)
        {
            var actions = new List<Action>();
            List<int> list = new List<int> { 10, 20, 30, 40 };
            foreach (var item in list)
            {
                  actions.Add(() => Console.WriteLine(item));
            }
            foreach (var act in actions) act();
        }
    }
}

出力:C#5.0

10
20
30
40

出力:C#4.0

40
40
40
40

その理由は、Eric Lippertによるブログ投稿で説明されています

有害と考えられるループ変数を閉じる


4

Python、-14ポイント(3-17文字の長さの差= -14)

2/3

Python 2出力: 0

Python 3の出力: 0.6666666666666666

より良いスコアリングバージョン、5ポイント(3 + 2文字の長さの差= 5)

3/2

Python 2出力: 1

Python 3の出力: 1.5


4

C#

C#4に共分散と反分散を追加したので、次の形式のプログラム:

using System;
using System.Collections.Generic;
class C
{
  static void Main() 
  {
    Console.WriteLine((new List<string>()) is IEnumerable<object>);
  }
}

falseC#2および3で生成し、true#4 Cで。

ただし、定義が含まれているライブラリIEnumerable<T>も変更する必要があるため、これは重要ではないと主張するかもしれません。


3

C ++ 98/11-「より良い」スコアリング(115文字-出力での115の一意の文字の違い=スコア0)

新しいスコア規則に準拠するために若干編集されたバージョン

ゴルフ:

#include<cstdio>
#define u8 "\x0B"
int main(){int i=116;char c[i];c[--i]=0;while(i-->0)c[i]=u8"\x7E"[0]+i;puts(c);}

ゴルフされていないバージョン:

#include <cstdio>
#define u8 "\x0B"
int main() {
    int i = 116;
    char c[i];
    c[--i] = 0;

    while(i-- > 0)
        c[i] = u8"\x7E"[0] + i;

    puts(c);
}

新しいソリューションは、古いソリューションと大差ありません。新しいソリューションでは、C ++ 11とC ++ 98の両方の出力は同じ長さの116文字ですが、共通する文字はputs関数によって追加された改行文字のみです。

C ++ 98の場合 u8 in u8"\x7E"[0]は引き続き置き換えられますが、現在は"\x0B"です。したがって、前処理後の結果の値はになります"\x0B""\x7E"[0]。2つの文字列は連結さ"\x0B\x7E"れ、添字演算子は最初の要素、この場合は文字エンコーディングの値が11の文字にアクセスします。さらに、の値iが追加されます。これは最初は114です。したがって、値125の文字が結果の配列に書き込まれます。ASがiゼロになる125から11までのすべての値は、アレイに書き込まれるとputs 11から125までの値を持つすべての文字、プラス末尾新しい行を印刷します。

C ++ 11ではu8"\x7E"[0]、16進数値7Eの単一文字で構成されるUTF-8文字列として解釈されます。添字演算子はこの文字にアクセスし、の値がiそれに追加され、最初の反復中に10進数値241が得られます。一方でiゼロになる、126までのすべての値は、配列に書き込まれ、puts126から241までの値、プラス末尾の新しい行に文字を印刷します。

ほとんどの文字セットは共通の最初の128文字しか持っていないため、使用する文字セットによって異なります。

ISO-8859-2の場合、出力は次のようになります。

C ++ 98: Output for C++98

C ++ 11: Output for C++11

C ++(106文字-出力の107の差= -1のスコア)(旧規則)

ゴルフ:

#include<cstdio>
#define u8 "f"
int main(){int i=108;char c[i];c[--i]=0;while(i-->0)c[i]=u8""[0];puts(c);}

ゴルフされていないバージョン:

#include <cstdio>
#define u8 "f"

int main() {
    int i = 108;
    char c[i];
    c[--i] = 0;

    while(i-- > 0)
            c[i] = u8""[0];

    puts(c);
}

してコンパイルg++ -std=c++98 main.cppし、g++ -std=c++11 main.cppます。

実際に交換できます 108負のスコアを達成するために、整数範囲の任意の正の数に。108より大きい限り;)

C ++ 98では#define u8 "f"、プリプロセッサがに置き換えu8""[0]られ"f"""[0]ます。これにより"f"[0]、が最終的に単一の文字になり'f'、配列に書き込まれます。

puts(c)i-1で構成される結果の配列を出力し'f'ます。

C ++ 11ではu8""[0]、空の文字列はUTF-8文字列として解釈されるため、文字列の連結は行われません。これはC文字列であるため、添字演算子は終端のNULLバイトにアクセスし、配列に書き込みます。

最終的にputs(c)は、結果として得られる配列を出力します。これは、ヌルバイトのみで構成されています。ただしputs、nullバイトが検出されるとすぐに入力の読み取りが停止するため、改行のみが出力され、それ以上は出力されません。


スコアは1になります。c++ 89とc ++ 11の両方が?(少なくとも私の(Mac)システムで)出力します
ジェームズウェブスター14

ソリューションでは115文字しかカウントされませんが。
ジェームズウェブスター14

@James Webster true、wc -cは私に嘘をつきました;)ソリューションの最後に改行を追加します;)...または単に調整します。
foob​​ar 14

@James Webster端末でUTF-8エンコーディングを使用していると思います。バイトの最上位ビットはUTF-8で予約されているため、プログラムが出力する文字を128〜232の範囲でマップできません。したがって、最大104個の「?」が表示されるはずです。以下の間にバイナリゴミを入れます。例としてWINDOWS-1256エンコーディングを使用すると、端末はC ++ 11バージョンに対して次のように表示します。tuvwxyz {|}〜€پ、ƒ……†‡ˆ‰ٹ‹Œچژڈگ ''”” ––—ک™ڑ › œ‌‍ں、¢£¤¥¦§¨©ھ«¬®¯°±²³´µ¶・¸¹؛»¼½¾?ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهو–
foob​​ar

C ++ 98バージョンの場合、端末に「?」が表示される可能性があります 32未満の値は制御文字であるため。たとえば、私の端末では、それらのほとんどが正方形に置き換えられ、16進値が印刷されます。例として、新しい行とタブ文字を除きます。しかし、今私はそれを自分で言及している。C ++ 98バージョンには改行が2回含まれていますが、それは簡単に修正できます;)
foob​​ar 14

2

CSS2対CSS3 48ポイント

<i style='font-feature-settings:"smcp" on;'>abcdefghijklmnopqrstuvwxyz</i>

としてレンダリング ABCDEFGHIJKLMNOPQRSTUVWXYZCSS3ブラウザーで(スモールキャップ)

としてレンダリング abcdefghijklmnopqrstuvwxyz非CSS3ブラウザのにれます

74文字-26の一意の文字差= 48


しかし、これはCSS2のエラーです。エラーは数えられないと思った。
リスター氏14

@MrLister AFAIK font-feature-settingsがCSS3 dev.w3.org/csswg/css-fonts/#propdef-font-feature-settingsに
チョッパー

1

Perl、24文字-(9 *(10 ^ 9))-1文字の差=-((9 *(10 ^ 9))-1)+24のスコア

print$]>=5?"a":"a"x9e9;

a5より下のすべてのバージョンで9e9回印刷aします。5より上のすべてのバージョンで印刷しますa。2番目の出力にsを追加するだけで、スコアを無限に低くすることができます。


2
質問では、「意図は変更は、言語仕様ではなく、VMの仕様や環境のメタデータの変化の結果でなければならないということです」
ドアノブ

VM仕様も環境メタデータも使用していません。インストールされたバージョンのみ。
ビンス14

1

Befunge、36-378 = -342; 164-2576 = -2412

"v
"<v
" <v
"  <v
"   <v
 <v:,<
 ^_@

Befunge 93では、これは3つのスペースを出力<v<v、その後に76スペース、<v76スペース、76スペース、76スペース、<v77スペース、77スペース、v 78個のスペースが続きます。長さ:3 + 2 + 76 + 2 + 76 + 2 + 76 + 2 + 77 + 1 + 78 = 395これは、最初の5行に似た行を追加することで簡単に拡張できます。

Befunge 98では、これは出力されます <v <v <v <v v

長さの違い: 395 - 17 = 378。したがって、スコアは次のようになります(古いルールによる)。-342

注:の.代わりに使用した場合、さらに大きな違いを得ることができました,。違いは-684


ルールの変更:

これはもう少し注意が必要です。

"  "-v>"Befunge 93 very long strings"v>"F"0g" "1-`!#v_   "F"0g1-"F"0pvz
     _^p0"F"-1g0"F"_v#    `-1" "g0"F"<^"j++a81zzzzzz]zzzzzzzzzzzzzzz"<
             _@#`0:,<

Befunge 93の出力:

sgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeBsgnirts gnol yrev 39 egnufeB

Befunge 98の出力:

j++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzzj++a81zzzzzz]zzzzzzzzzzzzzzz

長さ:2576。文字列間の文字が同じではないため、チャレンジを正しく理解した場合、私のスコアは164 - 2576 = -2412(はい、私が目指していたはずです0が、これはもっと楽しかったです)。各文字列の各文字が一意であり、互いに異なるようにする必要がある場合は、そうすることができます、教えてください。


1

Powershell、「より良い」スコアリング、-163(15-178 char diff = -163)

$PSVersionTable

Powershell V2

Name                           Value                                                                   
----                           -----                                                                   
CLRVersion                     2.0.50727.5477                                                          
BuildVersion                   6.1.7601.17514                                                          
PSVersion                      2.0                                                                     
WSManStackVersion              2.0                                                                     
PSCompatibleVersions           {1.0, 2.0}                                                              
SerializationVersion           1.1.0.1                                                                 
PSRemotingProtocolVersion      2.1                                                                     

Powershell V3

Name                           Value                                                                   
----                           -----                                                                   
WSManStackVersion              3.0                                                                     
PSCompatibleVersions           {1.0, 2.0, 3.0}                                                         
SerializationVersion           1.1.0.1                                                                 
BuildVersion                   6.2.9200.16398                                                          
PSVersion                      3.0                                                                     
CLRVersion                     4.0.30319.1022                                                          
PSRemotingProtocolVersion      2.2 

1

PHP、スコア:0(ベストケース)

srand(2);echo rand();

うわー、これは説明するのが楽しいでしょう。

このWebサイトによると、このsrand()関数はPHP 5.1.5からPHP 5.3.14に壊れているようです。したがって、PHP 4.4.9と、上記で指定したバージョン間隔に収まるPHP 5のランダムバージョンの1つを考慮します。

PHP 4.4.9の出力: 1505335290

これは規則違反だとは思わない。これはバグのように見えるため、出力同じになるはずですが、そうではありません。他のPHPバージョンでは、単にsrand()関数をスキップして乱数を出力します。


1

Java(約-2.000.000.000)

Javaバージョンは1.xと呼ばれることもありますが、まだルール内にあると思います。

簡単な方法は、特定のバージョンで導入されたクラスが存在するかどうかを確認することです。

try {
    Class.forName("java.lang.AutoCloseable");
    // Java 7 or later
    char[] text = new char[Integer.MAX_VALUE];
    Arrays.fill(text, 'a');
    System.out.println(new String(text));
} catch (Exception e) {
    // Java 6 or earlier
    System.out.println("-");
}

(2秒で20億文字を出力できるかどうかは端末によって多少異なります/新しいスコアリングの場合は、 Integer.MAX_VALUEは、プログラムのバイトカウントにて、完全なゼロスコアを達成します。)

このコードは、使用されているVM / JDKのバージョンに依存します(カウントされますか?)

import java.lang.reflect.Field;
import java.util.Arrays;

{
    Field fValue = null;
    for (Field f: String.class.getDeclaredFields()) {
            if (f.getName().equals("value")) {
                    fValue = f;
            }
    }
    char[] text = new char[10];
    Arrays.fill(text, 'a');
    String s1 = new String(text);
    String s2 = s1.substring(1);
    fValue.setAccessible(true);
    text = (char[]) fValue.get(s2);
    Arrays.fill(text, 'z');
    System.out.println(s1);
}

これは、印刷しzたJava 6およびそれ以前のJDKのための秒とa最近のバージョンのためにね。


1

JavaScript(ES3 vs ES5)-9ポイント

長さ10 +長さの差0 -出力の差1

[].map?1:0

1Array.prototype.mapをサポートする最新のブラウザーの出力。出力0古いブラウザでの。IE8でこれをテストしました。

古いルールの場合:0ポイント

長さ26 -長さの差26

Array([].map?27:0).join(0)

00000000000000000000000000最新のブラウザでの出力。そして、古いものの空の文字列。


IE8はES4を本当にサポートしますか?
ベルギ14

私はむしろ、彼らが実装したのか驚いた非既存の標準を ...
Bergi

おっと!修正:)
nderscore 14

1

Python-0

a='a=%r\ntry:print a%%a\nexcept:pass'
try:print a%a
except:pass

Python 2はクインを出力しますが、Python 3は何も出力しません。

編集:更新、修正。


あなたのコンピューターは、実際に2秒で最大90億桁を印刷できますか?
ジェームズウェブスター14

@JamesWebsterこれは実際には関数の戻り値です。したがって、プログラムが終了するためにはメモリに存在する必要があります。/ lot /のRAMが必要ですが、十分なスペックのコンピューターでは2秒以内に終了します。
cjfaure 14

0

APL(5-(1988894-1)= -1988888)

古いスタイルのAPL(Dyalog if ⎕ML=0*など)では、mixを意味します。これは、1次元ベクトルでは何もしません。GNU APL(またはDyalog if ⎕ML=3)のようなAPL2スタイルのAPLでは、最初を意味しますベクターの最初のアイテムをます。

したがって、次の5バイト(APL文字セット 1バイトに収まります)、

↑⍳3e5

1988894古いスタイルのAPL方言でバイト(1〜3e5のスペースで区切られたリスト)を出力します。

および1バイト(上記のリストの最初の数、1つまり長さ1APL2スタイルのAPL方言)。

ノート:

  • ⎕ML移行レベルを意味します。Dyalog APLでは、設定する値が高いほど⎕ML、APL2スタイルの機能が有効になります。デフォルトは0です。(そして、それはグローバル変数です!楽しい!)
  • 3e5は、Dyalog APLが受け入れる最高の3文字の値でした。4e5私に与えたLIMIT ERROR。この制限は、おそらくインタープリターに依存しています。(GNU APLはより高い値でも問題ありませんでした。)

0

Bash 7(14バイトのプログラム長+出力長の0の差-出力の一意の文字の7の差)

@Gillesの回答に関連していますが、拡張機能とバージョンが異なります。編集した質問に応じたスコアリング:

echo {1..9..2}

bash 3.xの出力:

{1..9..2}

bash 4.xの出力:

1 3 5 7 9

0

PHP:-134217684(43-134217727)

echo str_pad("",ip2long("")&0x7ffffff,"a");

使用法:

time php -r 'echo str_pad("",ip2long("")&0x7ffffff,"a");' > /tmp/test
1.61user 0.17system 0:01.79elapsed 99%CPU (0avgtext+0avgdata 142272maxresident)k
0inputs+0outputs (0major+35922minor)pagefaults 0swaps

PHP5 +では、無効な引数を持つip2longがfalseになり、ゼロにキャストされるため、何も出力されません。PHP4ではip2long("") -1を返し、空の文字列に128MB ogをますa

マスクは、マシンの2秒前に戻るように取り付けられています。あなたが2秒でそれを作ることができない場合は、より良いハードウェアを購入してください!

新しいルールの場合:0(40-40。ゼロに近づくことはできません。)

echo str_pad("",40,chr(97+ip2long("")));

出力:

In PHP4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
In PHP5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

新しいスコアリングルールを使用すると、スコアは39になります。両方の出力は等しく長いため、ペナルティはありません。しかし、唯一のユニークなキャラクターの違いがあります。aはbと等しくないため、スコアから-1を引くことができます。
foob​​ar 14

0

C89 / C99コメントエクスプロイト、45文字、0スコア

main(a){while(++a<47)putchar(79-a//**/~0
);}

c89出力

QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} -45文字。

c99出力

MLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! -45文字。


これは実際、他のCの回答とまったく同じロジックを使用しています
user12205 14

つまり、まったく同じ言語とまったく同じロジックを使用して、この質問に対する回答がすでに存在しているという事実を考えると、この回答はあまり興味深いものではありません。
user12205 14

このエントリは、複数のレベルでの最初の「その他のC回答」よりも優れています。短く、完璧なスコアで、2秒以内に完了し、クラッシュしたり中断したりしません。更新されたバージョンに関しては、公平を期して、おそらくこのコードをリンクするコメントを残す必要があります。
ジョニーケージ

ルールが変更される前に他のCの回答が送信されたため、あなたの回答は「最初の」他のCの回答よりも優れています。
user12205 14

たぶん、しかし、更新されたバージョンは私の実装をリッピングします。同じオフセットを使用してからprintfに切り替えるだけではありませんputcharr5の場合、ルールを誤解し、誤って新しいスコアと古いスコアを組み合わせてしまったというのが最もひどいことです。[r5、r6]の出力はエラーです。他のC回答のr3には、まったく同じエラーが含まれています。タイムスタンプを見ると、他の回答が更新されたときにここに投稿されたのがr5であることがわかります。これは重要なことではありません。これはコードゴルフであり、このエントリはより少ないキャラクター、期間で課題を満たします。
ジョニーケージ14

0

C ++ 98 / C ++ 11

#include <iostream>

int main()
{
  for (long i = 0; i < __cplusplus; ++i)
     std::cout << "x";
}

標準準拠のC ++ 98コンパイラの場合、これは199711倍の文字「x」を出力し、標準準拠のC ++ 11コンパイラの場合、201103倍の文字「x」を出力します。したがって、出力の長さの違いは1392文字です。これは、ソースコードを実際にゴルフする価値がないことを意味します。これは"x"、長い文字列に置き換える__cplusplusか、ある数を乗算するだけで、より大きな効果が得られるためです。


0

SmileBASIC 3 / SmileBASIC 2、スコア:-5(元のスコアリング)

?1E9

SBの最新バージョンでは、これ1000000000は期待どおりに印刷されますが、バージョン2以前で10はバグが原因で印刷されました。


0

TI-Basic 83 Plus対84 Plus、スコア5-1 = 4

length("setTime(

2同じプログラムがコマンドがまだ導入されていないlength("?►DMSために見えるものとして解析されるTI-83 Plusでの出力setTime(。したがって、文字列には2つの1バイトトークンが含まれ、その長さは2です。

1単一の2バイトトークンを含む文字列の長さは1であるため、TI-84 Plusで出力されます。


0

1.9-> 1.10。に進みます。スコア= 1-1 = 0

1.10ノートから:

GOMAXPROCS設定に制限はなくなりました。(Go 1.9では、制限は1024でした。)

package main 
import (r"runtime")
var g=r.GOMAXPROCS
func main() {g(10340)
print(g(0))}

1.8: 256

1.9: 1024

1.10: 10340

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.