ใช้ได้กับทุกเพศทุกวัย


24

โดยได้รับแรงบันดาลใจจากคำถามนี้ดังนั้น SOงานของคุณคือสร้างโปรแกรมที่ถูกต้องในภาษาที่คุณเลือก (อย่างน้อย) สองเวอร์ชันหลักที่สร้างผลลัพธ์ที่แตกต่างกัน

กฎระเบียบ

  • ภาษาใดก็ตามที่มีมากกว่าหนึ่งเวอร์ชันหลักสามารถใช้ได้
    • สำหรับวัตถุประสงค์ของการท้าทายนี้ฉันขอแนะนำ "รุ่นหลัก" ซึ่งเป็นที่ที่หมายเลขแรกในหมายเลขเวอร์ชันเปลี่ยนแปลง
      • PHP 4 และ PHP 5 แตกต่างกัน PHP 5.3 และ PHP 5.4 ไม่แตกต่างกัน
    • อย่างไรก็ตามเนื่องจากฉันไม่ทราบรูปแบบการกำหนดเวอร์ชันสำหรับทุกภาษาถ้าคุณสามารถโต้แย้งกรณีของคุณได้ดีพอฉันแน่ใจว่าชุมชนจะตัดสินว่าคุณยุติธรรมในการพิจารณา "รุ่นหลัก" ด้วยตัวเองหรือไม่
  • รหัสจะต้องรวบรวมและเรียกใช้ด้วยธงเดียวกันและการป้อนข้อมูลในแต่ละครั้ง
    • ยกเว้นการเปลี่ยนรุ่นของภาษาหากเป็นประเด็นที่เกี่ยวข้อง
  • ข้อผิดพลาดจะไม่ถูกนับเป็นเอาต์พุตและคำตอบที่ทำให้เกิดข้อผิดพลาดจะถูกตัดสิทธิ์ (แทนที่จะแสดงข้อผิดพลาดออกไป)
  • โปรแกรมไม่ควรรับอินพุตใด ๆ นอกจากที่จำเป็นเพื่อให้ทำงานได้
  • สำหรับแต่ละเวอร์ชันที่กำหนดเอาท์พุทควรเหมือนกันเสมอ
  • ความตั้งใจคือการเปลี่ยนแปลงควรเป็นผลมาจากการเปลี่ยนแปลงใน spec ภาษามากกว่า spec VM หรือ metadata สิ่งแวดล้อม

เกณฑ์การให้คะแนน

  • ให้คะแนนประเภทเพื่อความยาวดังนั้น+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 คือวันเกิดครบรอบ 20 ปีของ Ruby) จำนวนที่สำคัญคือสองจำนวน ดังนั้น Ruby 1.8-> 1.9 จะข้ามรุ่นใหญ่
Jörg W Mittag

1
ฉันคิดว่าการให้คะแนนใหม่นั้นแตกต่างจากของจริงมากเกินไปมันเป็นคำถามใหม่จริง ๆ
Tal

ฉันจะบอกว่าตัวอย่าง PHP นั้นมีการพิสูจน์ได้ 5.4 มีคุณสมบัติพื้นฐานบางอย่างที่จะแยกใน 5.3 (ลักษณะ, [] อาร์เรย์, การลงทะเบียนอาร์เรย์) มันจะเป็น PHP6 แต่จากนั้นตัดสินใจที่จะบันทึก 6 ลงไปในสิ่งที่ต่างไปจากเดิมอย่างสิ้นเชิงในรูปแบบยูนิโค้ดโดยค่าเริ่มต้น IIRC
Einacio

2
ความแตกต่างของตัวละครที่เป็นเอกลักษณ์คืออะไร? ถ้าผมเอาท์พุทzzzzและaaaaไม่ว่าให้ฉัน-4? นั่นคือสิ่งที่ฉันต้องการ
Justin

1
ดังนั้นสมมติว่าโปรแกรมสามารถตรวจพบว่าเวอร์ชั่นใดทำงานอยู่ผู้ชนะคือใครที่สามารถส่งออกอักขระมากที่สุดภายในสองวินาที ฉันคิดว่าคำถามนี้จะดีกว่าในการประกวดความนิยมเพื่อกระตุ้นให้คนค้นหาข้อบกพร่องทางภาษาที่น่าสนใจและละเอียดอ่อน
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
ผมไม่แน่ใจว่าอย่างใดอย่างหนึ่งไม่ว่าจะเป็นกับกฎ แต่ผมชอบมัน :)
Tal

9
ตามที่ "กฎระเบียบที่ดีกว่า" Scores closest to zero winดังนั้นนี้เป็นจริงมากไกลจากศูนย์
user80551

1
การจัดทำดัชนีอาร์เรย์ของพอยน์เตอร์ของฟังก์ชั่นโดยการหารหรือการเพิ่มขึ้นอยู่กับคำจำกัดความของมาตรฐานความคิดเห็น ...
ทำลาย

16

Python 10 คะแนนน้อยกว่าคำตอบที่ดีที่สุดถัดไป

print(range(100))

ใน Python 2 สิ่งนี้จะพิมพ์รายการจำนวนเต็มทั้งหมดตั้งแต่ 0 ถึง 99

ใน Python 3 rangeเป็นตัวกำเนิดและมันจะพิมพ์เฉพาะ "range (0,100)"

เมื่อเห็นว่าฉันไม่เคย จำกัด ขนาดของตัวเลขใน Python ฉันสามารถแทนที่ 100 ด้วยจำนวนที่มากขึ้น (เช่น 2 ** 1,000) และจบลงด้วยความแตกต่างที่ไม่มีที่สิ้นสุดในผลลัพธ์

แก้ไขเพื่อสะท้อนความจริงที่ว่าในขณะที่ฉันได้รับคะแนนที่ต่ำมากสำหรับการใช้งานจริงฉันไม่สามารถไปถึงอนันต์ที่แท้จริงได้ด้วยโปรแกรมที่สิ้นสุดภายใน 2 วินาที

สำหรับระบบการให้คะแนน tie-breaker ที่อัปเดตฉันจะส่ง:

print(range(4))

เอาท์พุท:

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

Python 3: range(0, 4)

พิมพ์ครั้งแรกมี 5 ตัวอักษรที่ไม่ซ้ำกัน ( [123]) พิมพ์ครั้งที่สองมี 8 ตัวอักษรที่ไม่ซ้ำกัน ( range(4)) ความแตกต่างของความยาวของการส่งออกคือ 1 รหัสที่มี 15 ตัวอักษรผลที่สั้นที่สุดคือ 11 ตัวอักษร ... กฎเหล่านี้ค่อนข้างสับสน ฉันคิดว่าสิ่งนี้ทำให้ฉันได้คะแนนสุดท้าย 15 + 1-min (11,5 + 8) = 5


อย่างไรก็ตาม "โปรแกรมของคุณควรยุติ" แม้ในเครื่องที่เร็วมาก (อย่าง จำกัด ) หมายเลข "ที่ใหญ่กว่า" (จำกัด ) ของคุณยังคงอยู่ใกล้-∞ดังนั้นฉันจึงโต้แย้งคะแนนของคุณ (ให้หรือรับ;])
James Webster

@JamesWebster ขอขอบคุณที่แจ้งนี้ความผิดพลาดทางเทคนิคที่น่ากลัวถึงความสนใจของฉันฉันได้แก้ไขคำตอบของฉันตาม;)
Tal

คำตอบที่คล้ายกันอื่น ๆ จะมาแน่นอน ฉันเดาว่าการให้คะแนนสำหรับคำตอบเหล่านี้ควรคำนวณจากความรวดเร็วของการตอบคำถาม
Vereos

@Vereos ฉันหวังว่าหากคำตอบอื่น ๆ ของการเรียงลำดับนี้ปรากฏขึ้นคำถามจะได้รับการแก้ไขพร้อมรายละเอียดการให้คะแนนเพิ่มเติม
Tal

1
@ ทัลฉันคิดว่าทุกคนที่อ่านกฎการให้คะแนนจะคิดวิธีแก้ปัญหาที่สามารถให้คะแนนลบได้ถูก จำกัด ด้วยภาษาหรือฮาร์ดแวร์ก่อนที่จะอ่านคำตอบของปัญหาใด ๆ ;) การให้คะแนนนั้นเสียโดยการออกแบบ ...
foobar

13

Python - 0 คะแนน

ไม่ทราบว่าวิธีการนี้ทำงาน: P เพียงแค่สะดุดในขณะที่ลองใช้รหัสแบบสุ่ม

int

ใน Python 3 มัน<class 'int'>และบน Python 2 มันคือ<type 'int'>(โดยใช้คอนโซลกลาง)
"ดีกว่า" คะแนน: 3 (ความยาว) + 1 (char diff.) - 4 (ตัวอักษรที่ไม่ซ้ำกัน)

หลามเก่ากว่า 1 - 7 คะแนน

print()

ขอขอบคุณ@grcสำหรับรุ่นนี้และช่วยฉันลบจุดสี่จุด!

ในหลาม 2 คำสั่งนี้ถูกตีความว่าเป็นprint ()ที่พิมพ์ ()tuple
ใน Python 3 printคือฟังก์ชั่นและผลลัพธ์ในการพิมพ์
คะแนน "ดีกว่า": 7 (ความยาว) + 2 (อักขระที่แตกต่าง) - 2 (อักขระพิเศษ)

Python รุ่นเก่า 2 - 13 คะแนน:

print(1,2)

คะแนน "ดีกว่า": 12 (ความยาว) + 2 (อักขระที่แตกต่างกัน o / p) - 1 (ตัวอักษรที่ไม่ซ้ำกัน o / p)

ฉันรู้ว่านี่จะไม่ชนะ แต่ก็ยังให้คำตอบเพราะนี่คือ Python ลองแรกของฉัน :)


print()ผมคิดว่านี่อาจจะลงไป
grc

@grc ขอบคุณมากสำหรับคำแนะนำ! เมื่อมองย้อนกลับไปที่ผู้แปลของฉันฉันเห็นว่าฉันได้ลองแล้ว แต่มันหายไปในเอกสารฉันจึงลบมันเพื่อลองdict.itertools(): P
Gaurang Tandon

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 กล่าวว่าไม่สามารถเป็นได้ทั้งintและและเพื่อผลิตint? 2ในการอนุมานวิธี C # 3 บอกว่า "การประนีประนอมที่ดีที่สุดระหว่างintและint?คือint?" ดังนั้นจึงเลือกM<int?>และสร้าง 1


9
> ฉันยังเปลี่ยนคุณหมายความว่าคุณเปลี่ยนแปลง ... โอ้ OH
บ๊อบ

9

Ruby, 4 ตัวอักษร + ความยาวถ่าน 0 ความแตกต่าง - 3 ค่าถ่านพิเศษ = คะแนน 1

p ?d

เมื่อวันที่ทับทิม 1.9 "d"ก็จะพิมพ์ เมื่อวันที่ 1.8 100จะพิมพ์

คำอธิบาย: ?dอยู่"d"ใน 1.9 และ100(รหัส ASCII สำหรับ d) ใน 1.8 เทียบเท่ากับp x เป็นทั้งการทำซ้ำสตริงและการคูณputs x.inspect*


รุ่น "ปรับให้เหมาะสม" สำหรับการให้คะแนนแบบเก่า:

Ruby, 8 ตัวอักษร - 999999989 ความแตกต่างของตัวอักษร = คะแนน -999999981

p ?!*1e9

พิมพ์33000000000.0สำหรับ 1.8 และ"!!!!!!... !!!"สำหรับ 1.9 ( ?!อยู่33ใน 1.8 และ"!"1.9 และ*เป็นทั้งการทำซ้ำสตริงและการคูณ)

คุณสามารถไปได้ไกลเท่าที่คุณต้องการด้วยการคูณมันขึ้นอยู่กับว่าคอมพิวเตอร์ของคุณเร็วแค่ไหน


คุณช่วยอธิบายได้ว่าเกิดอะไรขึ้นในบรรทัดที่สองนั้น?
Tal

@Tal Okay, แก้ไข
Doorknob

8

Bash - -∞ (สูงสุดถึงขีด จำกัด ในทางปฏิบัติ)

ได้อย่างมีประสิทธิภาพหน่วยความจำมาก แต่คุณมี เช่นด้วยประมาณ 10GB:

echo {0..999999999}

ทุบตี 2: {0..999999999}ไม่สนับสนุนช่วงในการขยายตัวรั้งเพื่อพิมพ์

Bash 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 #

รหัสต่อไปนี้จะสร้างผลลัพธ์ที่แตกต่างกันสำหรับ 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>);
  }
}

จะผลิตfalseใน C # 2 และ 3 และtrueใน C # 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 อักขระเท่ากัน แต่อักขระที่มีเหมือนกันเท่านั้นคืออักขระบรรทัดใหม่ที่ต่อท้ายด้วยฟังก์ชัน put

สำหรับ C ++ 98 u8ในu8"\x7E"[0]จะยังคงถูกแทนที่ "\x0B"แต่ตอนนี้กับ "\x0B""\x7E"[0]ดังนั้นค่าที่เกิดหลังจากการประมวลผลเบื้องต้นจะ สองสตริงจะถูกต่อกัน"\x0B\x7E"และตัวดำเนินการตัวห้อยจะเข้าถึงองค์ประกอบแรกในกรณีนี้อักขระที่มีค่า 11 ในการเข้ารหัสอักขระ นอกจากนี้ค่าของiจะถูกเพิ่มซึ่งอย่างตั้งใจคือ 114 ดังนั้นตัวละครที่มีค่า 125 จะถูกเขียนไปยังอาร์เรย์ที่เกิด ในฐานะที่เป็นiไปเป็นศูนย์ค่าทั้งหมดจาก 125 ถึง 11 จะถูกเขียนไปยังอาร์เรย์และputsจะพิมพ์ตัวละครทั้งหมดที่มีค่าจาก 11 ถึง 125 รวมถึงบรรทัดใหม่ต่อท้าย

ใน C ++ 11 u8"\x7E"[0]จะถูกตีความเป็นสตริง UTF-8 ซึ่งประกอบด้วยอักขระตัวเดียวที่มีค่าเลขฐานสิบหก 7E ตัวดำเนินการตัวห้อยจะเข้าถึงตัวละครนี้และเพิ่มค่าของiมันเข้าไปทำให้เกิดค่าทศนิยม 241 ระหว่างการวนซ้ำครั้งแรก ในขณะที่iไปที่ศูนย์ค่าทั้งหมดลงมาที่ 126 จะถูกเขียนไปยังอาร์เรย์และputsจะพิมพ์ตัวละครที่มีค่าจาก 126 ถึง 241 รวมทั้งบรรทัดใหม่ต่อท้าย

ขึ้นอยู่กับชุดอักขระที่ใช้ซึ่งจะให้ผลลัพธ์ที่แตกต่างเนื่องจากชุดอักขระส่วนใหญ่มีอักขระ 128 ตัวแรกเท่านั้น

สำหรับ ISO-8859-2 ผลลัพธ์จะเป็นดังนี้:

C ++ 98: เอาต์พุตสำหรับ C ++ 98

C ++ 11: เอาต์พุตสำหรับ 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"จะทำให้เกิด preprocessor เพื่อแทนที่ด้วยu8""[0] "f"""[0]สิ่งนี้จะส่งผลให้ใน"f"[0]ที่สุดก็กลายเป็นตัวละครเดียว'f'ซึ่งถูกเขียนไปยังอาร์เรย์

puts(c)จะพิมพ์อาร์เรย์ที่เกิดขึ้นประกอบด้วย 'f'i-1

ใน C ++ 11 u8""[0]จะทำให้สตริงว่างถูกตีความเป็นสตริง UTF-8 ดังนั้นจึงไม่มีการต่อสตริงเข้าด้วยกัน เนื่องจากนี่คือ C-string ตัวดำเนินการตัวห้อยจะเข้าถึงการยกเลิก null-byte และเขียนลงในอาร์เรย์

ในท้ายที่สุดputs(c)จะพิมพ์อาเรย์ที่เกิดขึ้นซึ่งประกอบด้วยเพียง null-bytes แต่เมื่อputsหยุดอ่านอินพุตทันทีที่พบ null-byte มันจะพิมพ์บรรทัดใหม่เท่านั้นและไม่มีอะไรเพิ่มเติม


ฉันได้รับคะแนนของคุณเป็น 1 ทั้ง c ++ 89 และ c ++ 11 เอาต์พุต a ?(บน (Mac ของฉัน) ระบบอย่างน้อย)
James Webster

แม้ว่าฉันจะนับเพียง 115 ตัวอักษรในการแก้ปัญหา
James Webster

@ James Webster จริง wc -c โกหกฉัน;) ฉันจะเพิ่มบรรทัดใหม่ต่อท้ายโซลูชันของฉัน;) ... หรือเพียงแค่ปรับมัน
foobar

@James Webster ฉันเดาว่าคุณกำลังใช้การเข้ารหัส UTF-8 ในเครื่องของคุณ เนื่องจากบิตที่สำคัญที่สุดในไบต์ถูกสงวนไว้ใน UTF-8 มันไม่สามารถแมปอักขระที่โปรแกรมส่งออกในช่วง 128 ถึง 232 ดังนั้นคุณควรดูสูงถึง 104 '?' หรือน้อยกว่าด้วยถังขยะไบนารีในระหว่าง ด้วยการเข้ารหัส WINDOWS-1256 เทอร์มินัลของคุณจะแสดงสิ่งนี้สำหรับเวอร์ชั่น C ++ 11: tuvwxyz {|} ~ €پپƒ„ ƒ†ٹٹٹٹٹ“ > œں, ¢£¤¥|§¨©ھ«¬®¯°±²³'μ¶·¹;»¼½¾ہءآأؤإئابةتثجحخدذرزسشصض×طظعغفقكàلâمنهو?
foobar

สำหรับรุ่น C ++ 98 เป็นไปได้ว่าเทอร์มินัลของคุณแสดง '?' สำหรับค่าที่ต่ำกว่า 32 ซึ่งเป็นอักขระควบคุม ตัวอย่างเทอร์มินัลของฉันแทนที่ส่วนใหญ่ด้วยสแควร์และค่าเลขฐานสิบหกของพวกเขาพิมพ์ลงไป ยกเว้นบรรทัดใหม่และอักขระแท็บเป็นตัวอย่าง แต่ตอนนี้ฉันพูดถึงตัวเองแล้ว c ++ 98 รุ่นมีบรรทัดใหม่สองครั้ง แต่ที่ง่ายต่อการแก้ไข;)
foobar

2

CSS2 กับ CSS3 48 คะแนน

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

แสดงผลเป็นABCDEFGHIJKLMNOPQRSTUVWXYZ(ตัวพิมพ์เล็ก) บนเบราว์เซอร์ CSS3

แสดงผลเหมือนabcdefghijklmnopqrstuvwxyzเบราว์เซอร์ที่ไม่ใช่ CSS3

74 ตัวอักษร - 26 ตัวอักษรที่แตกต่างกัน = 48


แต่นี่เป็นข้อผิดพลาดใน CSS2 ฉันคิดว่าข้อผิดพลาดจะไม่ถูกนับ
นาย Lister

@MrLister AFAIK แบบอักษรคุณลักษณะการตั้งค่าได้รับการแนะนำใน CSS3 dev.w3.org/csswg/css-fonts/#propdef-font-feature-settings
Toni Toni Chopper

1

Perl, 24 ตัวอักษร - (9 * (10 ^ 9)) - 1 ข้อแตกต่างของถ่าน = คะแนน - ((9 * (10 ^ 9)) - 1) +24

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

พิมพ์ 9e9-times aสำหรับทุกรุ่นที่ต่ำกว่า 5 พิมพ์aสำหรับทุกรุ่นที่สูงกว่า 5 คุณสามารถทำให้คะแนนต่ำอย่างไม่มีที่ติเพียงแค่เพิ่มas ไปยังเอาต์พุตที่สอง


2
ในคำถาม: "ความตั้งใจคือการเปลี่ยนแปลงควรเป็นผลมาจากการเปลี่ยนแปลงข้อมูลจำเพาะภาษามากกว่าข้อมูลจำเพาะ VM หรือข้อมูลเมตาด้านสิ่งแวดล้อม"
Doorknob

ฉันไม่ได้ใช้ข้อมูลจำเพาะ VM หรือข้อมูลด้านสิ่งแวดล้อม เพียงแค่รุ่นที่ติดตั้ง
Vince

1

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

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

ใน Befunge 93 นี้จะส่งออกได้ 3 คันตามด้วย<vตามด้วย 76 ช่องว่างตามด้วย<vแล้ว 76 พื้นที่แล้ว<vแล้ว 76 เว้นวรรคแล้ว<vตามด้วย 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, การให้คะแนน "Better", -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

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 พันล้านตัวอักษรในสองวินาที / สำหรับการให้คะแนนใหม่ให้แทนที่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);
}

มันพิมพ์zs สำหรับ Java 6 และ JDKs ก่อนหน้านี้และas สำหรับรุ่นล่าสุด


1

JavaScript (ES3 กับ ES5) - 9 คะแนน

ความยาว10 +ความยาวแตกต่าง0 -ผลต่าง1

[].map?1:0

เอาต์พุต1สำหรับเบราว์เซอร์รุ่นใหม่ที่รองรับ Array.prototype.map แสดงผล0บนเบราว์เซอร์รุ่นเก่า ฉันทดสอบสิ่งนี้ด้วย IE8

ด้วยกฎเดิม: 0 คะแนน

ความยาว26 - ส่วนต่างยาว26

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

ผลผลิต00000000000000000000000000บนเบราว์เซอร์ที่ทันสมัย และสตริงว่างเปล่าที่เก่า


IE8 รองรับ ES4 หรือไม่
Bergi

ฉันค่อนข้างประหลาดใจว่าพวกเขาใช้มาตรฐานที่ไม่มีอยู่จริงหรือไม่
Bergi

อ๊ะ! แก้ไขแล้ว :)
ขีดล่าง

1

Python - 0

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

Python 2 พิมพ์ Quine ในขณะที่ Python 3 ไม่ได้พิมพ์อะไรเลย

แก้ไข: อัปเดตแก้ไขแล้ว


คอมพิวเตอร์ของคุณสามารถพิมพ์ได้ ~ 9 พันล้านหลักใน 2 วินาทีหรือไม่
James Webster

@JamesWebster จริง ๆ แล้วนี่คือค่าส่งคืนของฟังก์ชัน - ดังนั้นจึงจำเป็นต้องมีอยู่ในหน่วยความจำเพื่อให้โปรแกรมเสร็จสิ้นเท่านั้น มันต้องมี / lot / of RAM แต่มันจะเสร็จสิ้นภายใน 2 วินาทีบนคอมพิวเตอร์ที่ได้รับการระบุมาอย่างดี
cjfaure

0

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

ใน APL แบบเก่า (เช่น Dyalog if ⎕ML=0*) หมายถึงมิกซ์ซึ่งบนเวกเตอร์ 1 มิติไม่ได้ทำอะไรเลย ใน APL2 แบบ APL เช่น GNU APL (หรือ Dyalog หาก⎕ML=3) หมายถึงอันดับแรกซึ่งใช้รายการแรกของเวกเตอร์

ดังนั้นต่อไปนี้5ไบต์ (charset APL ไม่พอดีในไบต์)

↑⍳3e5

จะส่งออก1988894ไบต์ (รายการที่คั่นด้วยช่องว่างของตัวเลขจาก 1 ถึง 3e5) ในภาษา APL แบบเก่า

และ1ไบต์ (เพียงหมายเลขแรกในรายการที่กล่าวซึ่งเป็น1ความยาว1) ในภาษา APL2 แบบ APL

หมายเหตุ:

  • ⎕MLหมายถึงระดับการโยกย้าย ใน Dyalog APL ยิ่งคุณตั้งค่า⎕MLคุณลักษณะของ APL2 มากขึ้นเท่านั้น 0มันเริ่มต้นที่ (และมันเป็นตัวแปรระดับโลก! สนุก!)
  • 3e5เป็นมูลค่า 3 ตัวสูงสุด Dyalog APL จะยอมรับกับ ให้ฉัน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 ที่มีอาร์กิวเมนต์ไม่ถูกต้องจะกลายเป็นเท็จซึ่งจะมีค่าเป็นศูนย์ ใน PHP4 มันip2long("")กลับ -1 และเราแผ่นสตริงที่ว่างเปล่ากับ 128MB aและ

หน้ากากนั้นได้รับการติดตั้งเพื่อให้มันกลับมานานก่อนที่ 2 วินาทีในเครื่องของฉัน หากคุณไม่สามารถทำได้ใน 2 วินาทีซื้อฮาร์ดแวร์ที่ดีกว่า!

ด้วยกฎใหม่: 0 (40 - 40 คุณไม่สามารถเข้าใกล้ศูนย์ได้มาก)

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 อื่น ๆ ' เริ่มต้นในหลายระดับ มันสั้นกว่าคะแนนสมบูรณ์แบบเสร็จสมบูรณ์ภายในไม่กี่วินาทีและไม่ผิดพลาดหรือยกเลิก เท่าที่เป็นรุ่นที่ปรับปรุง ... ในความเป็นธรรมคุณควรแสดงความคิดเห็นเชื่อมโยงรหัสนี้
จอห์นนี่เคจ

คำตอบของคุณดีกว่าคำตอบ C อื่น ๆ "เริ่มต้น" เนื่องจากคำตอบ C อื่น ๆ นั้นถูกส่งก่อนการเปลี่ยนแปลงกฎ
user12205

อาจเป็นเช่นนั้น แต่รุ่นที่อัปเดตแล้ว ไม่เพียง แต่จะใช้การชดเชยเหมือนกันและเปลี่ยนจากprintfการputchar; การสาปแช่งส่วนใหญ่คือสำหรับr5ฉันอ่านผิดกฎและรวมคะแนนเก่าและใหม่เข้าด้วยกันโดยไม่ตั้งใจ เอาต์พุตสำหรับ[r5, r6]เป็นข้อผิดพลาด r3ในคำตอบ C อื่น ๆ มีข้อผิดพลาดเดียวกันแน่นอน หากคุณดูการประทับเวลาคุณจะเห็นว่าเป็นr5ที่โพสต์ที่นี่เมื่อคำตอบอื่น ๆ อัปเดต ไม่สำคัญเพราะนี่คือโค้ดกอล์ฟและรายการนี้ตอบสนองความท้าทายด้วยจำนวนตัวอักษรน้อยลงระยะเวลา
จอห์นนี่เคจ

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 vs. 84 Plus, คะแนน 5-1 = 4

length("setTime(

เอาต์พุต2บน TI-83 Plus ซึ่งมีการแยกวิเคราะห์โปรแกรมเดียวกันเป็นสิ่งที่ดูเหมือนว่าlength("?►DMSเนื่องจากsetTime(คำสั่งยังไม่ได้รับการแนะนำ ดังนั้นสตริงจึงมีโทเค็น 1 ไบต์สองอันความยาวของมันคือ 2

เอาต์พุต1บน TI-84 Plus เนื่องจากสตริงที่มีโทเค็น 2 ไบต์มีความยาว 1


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.