เป้าหมายของคุณ : เพื่อเขียนโค้ดที่จะส่งผลให้เกิดผลลัพธ์แบบคลาสสิกของ "Hello, world!" ถูกพิมพ์ไปยัง STDOUT หรือเทียบเท่า
กฎ : รหัสจะต้องอยู่ในการพิมพ์ ASCII ทั้งหมด รหัสทั้งหมดจะต้องใช้งานได้ - การลบอักขระการนับใด ๆ จะต้องเปลี่ยนผลลัพธ์หรือทำให้รหัสไม่ทำงาน ตัวแปรทั้งหมดจะต้องใช้หลังจากการมอบหมาย ตัวอักษรและสตริงตัวอักษรจะต้องมีความจำเป็นต่อเอาท์พุท - นั่นคือการแทนที่ตัวอักษรตัวอักษรใด ๆ หรือตัวละครใด ๆ ภายในสตริงตัวอักษรที่มีตัวละครอื่นจะต้องสามารถเปลี่ยนผล (และไม่ผ่านผลกระทบของลำดับหนี - หรือเทียบเท่า)
(หมายเหตุ: แก้ไขกฎขั้นสุดท้ายแล้ว)
การให้คะแนน : นี่คือจุดที่น่าสนใจ คะแนนสูงสุดชนะตามจำนวนอักขระตามกฎของการโยนโบว์ลิ่งทั่วไป แต่การใช้อักขระซ้ำ ๆ จะส่งผลให้มีการหักคะแนน โดยเฉพาะ ...
- การใช้ตัวอักษรและตัวเลขซ้ำ ๆ (az, AZ, 0-9) จะส่งผลให้มีการหัก 3 คะแนนต่อการทำซ้ำ (การใช้ครั้งแรกไม่ส่งผลให้มีการหัก)
- การใช้เครื่องหมายวรรคตอนพื้นฐานซ้ำ ๆ ([!? .-, ": ';]) - รวมถึงวงเล็บ - จะส่งผลให้มีการหัก 2 คะแนนต่อการทำซ้ำ
- การใช้อักขระ ASCII อื่น ๆ ซ้ำ ๆ {`~ @ # $% ^ & * _ + = | \ /> <} - รวมถึงเครื่องหมายวงเล็บปีกกา - จะส่งผลให้มีการหัก 4 คะแนนต่อการทำซ้ำ
- การใช้ช่องว่างแท็บและการขึ้นบรรทัดใหม่ซ้ำ ๆ จะส่งผลให้ลด 1 คะแนนต่อการทำซ้ำ นั่นคือการใช้เว้นวรรคแท็บหรือการขึ้นบรรทัดใหม่ครั้งแรกเท่านั้นที่จะนับรวมยอดของคุณ
หมายเหตุ: ความคิดเห็นจะไม่นับรวมทั้งหมดแม้ว่าอักขระที่ทำเครื่องหมายที่จุดเริ่มต้น / สิ้นสุดของความคิดเห็นจะเป็นเช่นนั้น ตัวอย่างเช่นใน C / C ++ ถ้าคุณมี/* This is a comment */
มันจะนับสองสแลชและเครื่องหมายดอกจันสองอัน แต่จะไม่มีอะไรคั่นระหว่างพวกเขา
ตัวอย่างบางส่วน(หมายเหตุ: ใช้ Julia เป็นภาษาตัวอย่าง) ...
print("Hello, world!");
อักขระที่มองเห็นได้ทั้งหมด: 22 มี
ช่องว่าง: +1
ตัวอักษรและตัวเลขซ้ำ: -12 สำหรับ llor
เครื่องหมายวรรคตอนซ้ำแล้วซ้ำอีก: -2 สำหรับ "
คะแนนสุดท้าย: 22 + 1-12-2 = 9
print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII
อักขระทั้งหมด: 43 (ไม่นับอักขระใด ๆ หลังจาก # ซึ่งเป็นอักขระความคิดเห็น) มี
ช่องว่าง: +1
ตัวอักษรและตัวเลขซ้ำ: -18 สำหรับ rr1008
เครื่องหมายวรรคตอนซ้ำแล้วซ้ำอีก: -24 สำหรับ () "" "" ",,,
สุดท้าย คะแนน: 43 + 1-24-18 = 2
xy=STDOUT
m="Hello, world!"
print(xy,m);
อักขระที่มองเห็นได้ทั้งหมด: 37
ประกอบด้วยบรรทัดใหม่: +1 มี
ช่องว่าง: +1
ตัวอักษรและตัวเลขซ้ำ: -18 สำหรับ xyllor
เครื่องหมายวรรคตอนซ้ำแล้วซ้ำอีก: -4 สำหรับ ", ทำ
ซ้ำ ASCII อื่น ๆ : -4 สำหรับ =
คะแนนสุดท้าย: 37 + 1 + 1-18-4 -4 = 13
โค้ดสองสามชิ้นที่ไม่ถูกต้อง ...
x=2;print("Hello,world!")
ปัญหา: x
ได้รับมอบหมาย แต่ไม่ได้ใช้
print("Hello,"*" world!")
ปัญหา: *
ไม่จำเป็นผลลัพธ์จะเหมือนกันหากไม่มี
k=1
if k>0
print("Hello, world!")
else
print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end
ปัญหา: print
คำสั่งที่สองจะไม่ทำงาน นอกจากนี้การลบอักขระในเครื่องหมายคำพูดในprint
คำสั่งที่สองจะไม่เปลี่ยนเอาต์พุต
x="Hello, world!";
print(x)
ปัญหา: การลบบรรทัดใหม่จะไม่เปลี่ยนผลลัพธ์หรือทำให้เกิดข้อผิดพลาด (ใน Julia เซมิโคลอนจำเป็นเฉพาะถ้ามีหลายคำสั่งอยู่ในบรรทัดเดียวกันมิฉะนั้นเพียงระงับค่าที่ส่งคืน)
print("Hellos\b, world!")
ปัญหา: ตัวละครที่ไม่ได้ส่งผลกระทบต่อผลตามที่ได้รับลบโดยs
\b
สิ่งนี้ยอมรับได้ถ้าทำผ่านรหัส ( "Hello",char(100),"\b, world!"
) แต่ไม่สามารถทำได้ผ่านตัวอักษรสตริงหรือตัวอักษรตัวอักษร
คะแนนเครื่องคิดเลขที่สะดวก - http://jsfiddle.net/4t7qG/2/ - ขอบคุณ Doorknob