시대를 통해 유효


24

SO에 대한이 질문에서 영감을 얻은 임무는 다른 출력을 생성하는 선택한 언어의 두 가지 주요 버전 (최소한)으로 유효한 프로그램을 만드는 것입니다.

규칙

  • 주요 버전이 둘 이상인 모든 언어를 사용할 수 있습니다.
    • 이 문제를 해결하기 위해 "주 버전"은 버전 번호의 첫 번째 숫자가 변경되는 곳입니다.
      • PHP 4와 PHP 5는 다르지만 PHP 5.3과 PHP 5.4는 다릅니다.
    • 그러나 모든 언어에 대한 버전 관리 체계를 모르기 때문에 사례를 충분히 논의 할 수 있다면 커뮤니티가 "주요 버전"을 결정하는 데 공정한지 판단 할 것입니다.
  • 코드는 매번 동일한 플래그로 컴파일되고 실행되어야합니다.
    • 해당 언어 버전을 변경하는 것을 제외하고
  • 오류는 출력으로 계산되지 않으며 오류를 생성하는 답변은 실격 처리됩니다 (오류 출력 대신 무시 됨)
  • 프로그램은 프로그램을 실행하는 데 필요한 것 이외의 입력을 가져서는 안됩니다.
  • 주어진 버전마다 출력은 항상 같아야합니다
  • 변경 사항은 VM 사양 또는 환경 메타 데이터가 아닌 언어 사양 변경의 결과 여야합니다.

채점

  • 길이에 대한 유형 점수, +1각 문자 / 바이트마다
  • -1출력 길이 의 각 문자 차이에 대해
    • 예 : 버전 1 출력 abcde(5 자), 버전 2 출력 123abc(6 자) =-1

다른 규칙

  • 표준 예외 적용 – 외부 프로그램, 웹 요청 등 없음
  • 프로그램이 2 초 이내에 종료되어야합니다
  • 최저 점수가 이깁니다.

"더 나은"채점

공정성을 위해 원래의 답을 지키십시오. 나는 원래 규칙에 따라 승자를 표시합니다.

내 원래의 점수가 근본적으로 손상되었으므로 다음 점수 시스템으로 다시 점수를 매기거나 다시 시도하지 마십시오.

  • 길이에 대한 유형 점수, +1각 문자 / 바이트마다
  • +1출력 길이 의 각 문자 차이에 대해
    • abcde그리고 123456->+1
  • -1출력의 각 고유 문자 차이 에 대해 (가장 짧은 출력 길이에 제한)
    • abcde그리고 123456->-5
    • 12345그리고 123456->-1
    • 12345그리고 123455->0
  • 제로 승리에 가장 가까운 점수
  • 두 번째 동점 일 경우 간단한 점수가 이깁니다.

참고 : Ruby에서 첫 번째 숫자는 신기원 이며, 버전 번호가 아닌 Ruby 기록의 주요 이벤트를 나타냅니다 (0-> 1은 최초 릴리스이고 1-> 2는 Ruby의 20 번째 생일입니다). 주 번호는 두 번째 번호입니다. 따라서 Ruby 1.8-> 1.9는 주요 릴리스를 넘을 것입니다.
Jörg W Mittag

1
나는 새로운 점수가 원래 점수와 너무 다르다고 생각합니다. 그것은 실제로 새로운 질문입니다
Tal

PHP 예제가 논쟁의 여지가 있다고 말하고 싶습니다. 5.4에는 5.3에서 깨질 수있는 몇 가지 기본 기능 (특성, [] 배열, 배열 역 참조)이 있습니다. PHP6가 될 것이지만, 기본적으로 IIRC에 의해 6을 유니 코드 문자열처럼 더 급진적 인 것으로 저장하기로 결정했습니다.
Einacio

2
독특한 캐릭터 차이는 무엇입니까? I 출력하는 경우 zzzzaaaa, 그 날을 주는가 -4? 그것이 나에게 보이는 것입니다.
저스틴

1
따라서 프로그램이 어떤 버전에서 실행되는지 감지 할 수 있다고 가정하면 누가 2 초 안에 가장 많은 문자를 출력 할 수 있습니까? 사람들이 흥미롭고 미묘한 언어 버그를 찾도록 독려하는 인기 경연 대회로이 질문이 더 나을 것이라고 생각합니다.
Cephalopod

답변:


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
나는 확실히 중 하나는 규칙 위반 여부 아니지만, 내가 :) 좋아

9
은 "더 나은 규칙"에 따르면, Scores closest to zero win그래서 이것은 실제로 매우 멀리 0에서.
user80551

1
C 표준의 주석 정의에 따라 나누거나 덧셈하여 함수 포인터의 배열을 인덱싱하는 것.
Desty

16

파이썬-차기 최고 답변보다 10 포인트 낮음

print(range(100))

Python 2에서는 0에서 99까지의 정수 목록을 모두 인쇄합니다.

Python 3에서는 range생성기이므로 "range (0,100)"만 인쇄합니다.

파이썬에서 숫자의 크기 제한을 결코 경험하지 않았으므로 100을 훨씬 더 큰 숫자 (예 : 2 ** 1000)로 바꾸고 출력에서 ​​거의 무한한 차이로 끝날 수 있습니다.

실제적인 목적으로 무한히 낮은 점수를 얻을 수는 있지만 2 초 이내에 종료되는 프로그램으로는 실제 무한대에 도달 할 수 없다는 사실을 반영하도록 편집되었습니다.

업데이트 된 타이 브레이커 스코어링 시스템을 위해 다음을 제출합니다.

print(range(4))

산출:

파이썬 2 : [0, 1, 2, 3]

파이썬 3 : range(0, 4)

첫 번째 인쇄에는 5 개의 고유 문자 ( [123])가 있고 두 번째 인쇄에는 8 개의 고유 문자 ( range(4))가 있으며 출력 길이의 차이는 1이고 코드의 문자는 15 자이며 가장 짧은 출력은 11 자입니다 ...이 규칙은 매우 혼란 스럽지만 나는 이것이 15 + 1 분 (11,5 + 8) = 5의 최종 점수를 가져 온다고 생각합니다.


그러나 매우 빠른 컴퓨터에서도 "프로그램이 종료"되어야합니다. "훨씬 큰"숫자는 여전히 -∞ 근처에 있지 않으므로 점수에 이의를 제기해야합니다 (주지 마십시오)
James Webster

@JamesWebster이 끔찍한 기술적 실수를 주목 해 주셔서 감사합니다. 그에 따라 답변을 편집했습니다.)
Tal

다른 비슷한 대답이 올 것이다. 나는이 답변에 대한 점수가 그들이 얼마나 빨리 무한대에 도달하는지 계산해야한다고 생각합니다.
Vereos

@Vereos이 종류의 다른 답변이 표시되면 추가 점수 세부 정보로 질문이 편집되기를 바랍니다.
Tal

1
내가 생각 @Tal하는 문제에 어떤 대답을 읽을 필요하기 전에, 언어 또는 하드웨어에 의해 제한 부정적인 점수를 생성 할 수있는 솔루션을 만들 것 채점 규칙을 읽는 모든 사람, 채점 단지 설계에 의해 고장)을 ...
foobar

13

파이썬-0 포인트

이것이 어떻게 작동하는지 전혀 모른다 : P 무작위 코드를 시험하는 동안 우연히 발견되었다.

int

Python 3 <class 'int'>과 Python 2에서 <type 'int'>(대화식 콘솔 사용)
"더 나은"점수 : 3 (길이) + 1 (문자 차이)-4 (고유 문자)

이전 Python 1-7 점

print()

이 버전에 대한 @grc 덕분에 4 점을 뺄 수 있었습니다 .

Python 2에서이 명령문은 print ()비어있는 tuple을 인쇄하는 것으로 해석됩니다 ().
Python 3에서는 print함수이며 아무것도 인쇄되지 않습니다.
"더 나은"점수 : 7 (길이) + 2 (문자 차이)-2 (고유 문자)

이전 Python 2-13 포인트 :

print(1,2)

"더 나은"점수 : 12 (길이) + 2 (문자 차이 o / p)-1 (고유 문자 o / p)

나는 이것이 이길 수는 없지만 이것이 첫 번째 파이썬 시도이기 때문에 여전히 대답을했다는 것을 알고있다 :)


나는 이것이 단축 될 수 있다고 생각합니다 print().
grc

@grc 조언을 주셔서 감사합니다! 내 컴파일러를 다시 찾고, 내가 시도를 삭제 한 것을, 나는 그것을 시도했지만, 그래서 문서에서 손실 된 것을 볼 dict.itertools(): P
Gaurang Tandon

12

기음#

또한 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 방법의 형식 유추는 말한다 "사이의 최고의 타협 int하고 int?있다 int?선택 함 때문에" M<int?>1을 생산하고 있습니다.


9
> 나도 바꿨어 무슨 뜻 이죠 당신이 ... 오을 변경했습니다. 오.
Bob

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. *문자열 반복과 곱셈입니다.


이전 점수를위한 "최적화 된"버전 :

루비, 8 자-999999989 자 차이 = -999999981의 점수

p ?!*1e9

인쇄물 33000000000.0 1.8에 대한 "!!!!!!... !!!"1.9. ( ?!331.8 및 "!"1.9로하고, *문자열 반복과 승산 모두이다.)

실제로, 당신은 곱셈으로 원하는 한 멀리 갈 수 있습니다, 그것은 단지 컴퓨터의 속도에 달려 있습니다.


두 번째 줄에서 정확히 무슨 일이 일어나고 있는지 설명해 주시겠습니까?
Tal

좋아 @Tal, 편집
손잡이

8

배쉬 — -∞ (최대 실제 한계)

그러나 실제로 많은 메모리가 있습니다. 예 : 약 10GB :

echo {0..999999999}

Bash 2 : 괄호 확장에서 범위를 지원하지 않으므로 인쇄 {0..999999999} .

배쉬 3 :


모든 언어 — -∞ (최대 실제 한계)

조금 더 복잡 해지더라도 거의 모든 언어 로이 언어를 사용할 수 있습니다. 두 개의 다른 값을 만들 수있게되면 임의로 다른 출력을 생성하는 코드를 작성할 수 있습니다. 더 나은 점수 매기기 방법은 결과의 차이를 무시합니다.

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

@foobar “모든 언어”버전의 언어는 프로그램이 언어 사양의 변경에 의존하도록하는 데 사용하는 트릭을 나타냅니다. if $version >= 3또는 여부에 관계없이 버전 감지 if isinstance(range(0),list)입니다.
Gilles 'SO- 악한 중지'

4

기음#

다음 코드는 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

파이썬 2 출력 : 0

파이썬 3 출력 : 0.6666666666666666

더 나은 스코어링 버전, 5 점 (3 + 2 자 길이 차이 = 5)

3/2

파이썬 2 출력 : 1

파이썬 3 출력 : 1.5


4

기음#

C # 4에 공분산과 공분산을 추가 했으므로 다음과 같은 형식의 프로그램이 있습니다.

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

falseC # 2 및 3과 trueC # 4에서 생성 됩니다 .

그러나 의 정의를 포함하는 라이브러리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의 경우 u8in u8"\x7E"[0]은 여전히 ​​대체되지만 이제는으로 대체됩니다 "\x0B". 따라서 전처리 후 결과 값은입니다 "\x0B""\x7E"[0]. 두 개의 문자열이 연결되고 "\x0B\x7E"아래 첨자 연산자가 첫 번째 요소 (이 경우 문자 인코딩에서 값이 11 인 문자)에 액세스합니다. 또한 i초기 값은 114입니다. 따라서 값이 125 인 문자가 결과 배열에 기록됩니다. 같이i 125 (11)에이 배열에 기록됩니다에서 모든 값을 0이와 puts11에서 125의 값을 더한 뒤 새로운 라인으로 모든 문자를 인쇄 할 수 있습니다.

C ++ 11 u8"\x7E"[0]에서는 16 진수 값이 7E 인 단일 문자로 구성된 UTF-8 문자열로 해석됩니다. 아래 첨자 연산자는 이제이 문자에 액세스하고 그 문자의 값 i이 추가되어 첫 번째 반복 동안 10 진수 값 241이됩니다. 반면 i제로로 간다 (126) 아래의 모든 값이 어레이에 기록되고puts 126에서 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.cppg++ -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- 문자열이므로 아래 첨자 연산자는 종료 널 바이트에 액세스하여 배열에 씁니다.

결국 puts(c)결과 배열은 널 바이트로만 구성됩니다. 그러나 puts널 바이트가 발생하자마자 입력을 읽지 않으면 줄 바꿈 만 인쇄하고 더 이상 아무것도 인쇄하지 않습니다.


나는 당신의 점수를 1로 얻을 모두 C ++ 89과 C ++ (11)의 출력 ?(적어도 내 (맥) 시스템)
제임스 웹스터

솔루션에서 115 자만 계산합니다.
James Webster

@James Webster true, wc -c는 나에게 거짓말했습니다.)) 솔루션 끝에 줄 바꿈을 추가합니다.) ... 또는 그냥 조정하십시오.
foobar

@James Webster 터미널에서 UTF-8 인코딩을 사용하고 있다고 생각합니다. 바이트에서 최상위 비트가 UTF-8로 예약되어 있기 때문에 프로그램이 출력하는 문자를 128에서 232 사이의 범위로 매핑 할 수 없으므로 최대 104 '?' 사이에 이진 휴지통이있는 경우 예를 들어 WINDOWS-1256 인코딩을 사용하면 터미널에 C ++ 11 버전에 대해 다음과 같이 표시됩니다. tuvwxyz {|} ~ € پ ‚ƒ „… † ‡ ˆ ‰ ٹ‹Œ چژڈگ ''“”• –—ک ™ ڑ ›œ‌‍ ں ، ¢ £ ¤ ¥ ¦§¨ © ھ«¬®¯ ° ± ²³´µ¶ · ¸¹ ؛»¼½¾؟ ہءآأؤإئابةتثجحخدذرزسشصض × طظعغـفقك à ل â منهو
foobar

C ++ 98 버전의 경우 터미널에 '?'가 표시 될 수 있습니다. 32보다 작은 값은 제어 문자입니다. 예를 들어 내 터미널은 대부분을 정사각형으로 바꾸고 16 진수 값을 인쇄합니다. 줄 바꿈 및 탭 문자를 제외하고 예를 들어. 그러나 지금 나는 그것을 스스로 언급했습니다. C ++ 98 버전에는 줄 바꾸기가 두 번 포함되어 있지만 쉽게 고칠 수 있습니다.;)
foobar

2

CSS2 대 CSS3 48 점

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

ABCDEFGHIJKLMNOPQRSTUVWXYZCSS3 브라우저에서 (작은 대문자) 로 렌더링

abcdefghijklmnopqrstuvwxyz비 CSS3 브라우저에서 와 같이 렌더링

74 자-26 개의 고유 문자 차이 = 48


그러나 이것은 CSS2의 오류입니다. 오류가 계산되지 않았다고 생각했습니다.
Mr Lister


1

Perl, 24 자-(9 * (10 ^ 9))-1 문자 차이 =-((9 * (10 ^ 9))-1) +24의 점수

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

a5 이하의 모든 버전에 대해 9e9 회 인쇄 a하고 5 이상의 모든 버전에 대해 인쇄 합니다 a. 두 번째 출력에 s를 더 추가하여 점수를 무한대로 낮출 수 있습니다.


2
문제 : "변경은 VM 사양 또는 환경 메타 데이터가 아닌 언어 사양 변경의 결과 여야합니다"
Doorknob

VM 사양이나 환경 메타 데이터를 사용하고 있지 않습니다. 설치된 버전 만
Vince

1

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

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

비 펀지 (93)에서,이 출력은 3 대,이어서 것 <v, 공간 (76) 다음에, 다음에 <v, 그 다음 76 공간 다음 <v다음 다음 76 개 구역, <v77 개 구역 뒤에 후 v78 공백 하였다. 길이 : 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();

와우, 이것은 설명하기 재미있을 것입니다.

이 웹 사이트 에 따르면 , srand()함수는 PHP 5.1.5 에서 PHP 5.3.14 로 분리 된 것으로 보입니다 . 따라서 우리는 PHP 4.4.9와 위에서 지정한 버전 간격에 해당하는 임의의 PHP 5 버전을 고려할 것입니다.

PHP 4.4.9 출력 : 1505335290

나는 이것이 규칙을 어기는 것이라고 생각하지 않는다. 이것은 버그 인 것처럼 보이므로 출력 동일 해야 하지만 그렇지 않습니다. 우리의 다른 PHP 버전은 단순히 srand()함수 를 건너 뛰고 난수를 출력합니다.


1

자바 (약 -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 려면 프로그램의 바이트 수로 하여 완벽한 0 점수를 얻으십시오.)

이 코드는 사용되는 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);
}

zJava 6 및 이전 JDK 및 a최신 버전에 대해 인쇄합니다 .


1

자바 스크립트 (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를 지원합니까 ???
Bergi

차라리 그들이 존재하지 않는 표준을 어떻게 구현했는지 놀랐습니다 .
Bergi

으악! 고정 :)
nderscore

1

파이썬-0

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

Python 2는 quine을 인쇄하지만 Python 3은 아무것도 인쇄하지 않습니다.

편집 : 업데이트, 수정되었습니다.


컴퓨터가 2 초 안에 ~ 90 억 자리를 실제로 인쇄 할 수 있습니까?
James Webster

@JamesWebster 이것은 실제로 함수의 반환 값이므로 프로그램을 마치려면 메모리에만 존재하면됩니다. / lot /의 RAM이 필요하지만 올바르게 지정된 컴퓨터에서 2 초 내에 완료됩니다.
cjfaure

0

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

구식 APL ( ⎕ML=0* 인 경우 Dyalog와 같은 )에서 mix 는 1 차원 벡터에서 아무것도하지 않는 mix를 의미 합니다. GNU APL과 같은 APL2 스타일 APL (또는 Dyalog 인 경우 ) 은 먼저 의미합니다.⎕ML=3 는 벡터의 첫 번째 항목을 취하는 합니다.

따라서 다음 5바이트 (APL 문자 세트 바이트에 적합)

↑⍳3e5

1988894구식 APL 방언으로 바이트 (공백으로 구분 된 1에서 3e5까지의 숫자 목록)를 출력 합니다.

그리고 APL2 스타일 APL 방언에서 1바이트 (상기 목록의 첫 번째 숫자, 즉 1길이 1).

노트:

  • ⎕ML마이그레이션 수준을 의미 합니다 . Dyalog APL에서는 설정이 높을수록 ⎕ML더 많은 APL2 스타일 기능이 활성화됩니다. 기본값은 0입니다. (그리고 그것은 전역 변수입니다! 재미!)
  • 3e5Dyalog APL이 허용하는 최대 3 자 값입니다 . 4e5나에게을 주었다 LIMIT ERROR. 이 제한은 해석기에 따라 다를 수 있습니다. (GNU APL은 더 높은 값에 문제가 없었습니다.)

0

Bash 7 (14 바이트 프로그램 길이 + 출력 길이 차이 0-출력 고유 문자 차이 7)

@ Giles 답변과 관련이 있지만 다른 확장 기능과 다른 버전입니다. 편집 된 질문에 따라 채점 :

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로 바뀌어 0으로 캐스팅되므로 아무것도 출력하지 않습니다. PHP4에서는ip2long("") -1 반환하고 빈 문자열을 128MB og로 채 웁니다.a .

마스크는 기계에서 2 초 전에 돌아올 수 있도록 장착되어 있습니다. 2s로 만들 수 없다면 더 나은 하드웨어를 구입하십시오!

새로운 규칙으로 : 0 (40-40. 0에 가까워 질 수 없습니다.)

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

출력 :

In PHP4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
In PHP5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

새로운 점수 규칙을 사용하면 점수는 39입니다. 두 결과 모두 똑같이 길기 때문에 페널티가 없습니다. 그러나 유일한 문자 차이는 하나뿐입니다. a는 b와 같지 않으므로 점수에서 -1을 뺄 수 있습니다.
foobar

0

C89 / C99 주석 악용, 45 자, 0 점

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

c89 출력

QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} -45 자

c99 출력

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


이것은 실제로 다른 C 응답 과 정확히 같은 논리를 사용 합니다 .
user12205

나는 똑같은 언어와 똑같은 논리를 사용 하여이 질문에 대한 답변이 이미 있다는 사실을 고려할 때이 답변은 그리 흥미롭지 않습니다.
user12205

이 항목은 여러 수준에서 초기 '기타 C 답변'보다 우수합니다. 짧고 완벽하며 2 초 안에 완료되며 충돌하거나 중단되지 않습니다. 업데이트 된 버전까지는 공평 하게이 코드를 연결하는 주석을 남겨 두어야합니다.
Johnny Cage

규칙 변경 전에 다른 C 답변이 제출 되었기 때문에 귀하의 답변은 "초기"다른 C 답변보다 낫습니다.
user12205

어쩌면 업데이트 된 버전이 구현을 찢어 버릴 수 있습니다. 뿐만 아니라 그것은에서 같은 오프셋 및 스위치를 사용합니까 printf에를 putchar; 가장 나쁜 것은 r5의 경우 규칙을 잘못 읽고 실수로 새로운 점수와 오래된 점수를 결합한 것입니다. [r5, r6]에 대한 출력 오류가 있습니다. 다른 C 답변의 r3 에는 정확히 같은 오류가 있습니다. 타임 스탬프를 보면 다른 답변이 업데이트 될 때 여기에 게시 된 r5 라는 것을 알 수 있습니다. 이것은 중요하지 않습니다. 이것은 코드 골프 이기 때문에이 항목은 더 적은 문자, 기간으로 도전을 충족시킵니다.
Johnny Cage

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 기본 83 플러스 vs. 84 플러스, 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.