จัดฉาก:
มันเป็นช่วงบ่ายโดยเฉลี่ยในขณะที่คุณผ่อนคลายหลังจากเหน็ดเหนื่อยมาทั้งวันด้วยการมีส่วนร่วมในงานอดิเรกที่คุณโปรดปราน: ตอบคำถามที่น่าดึงดูดใจใน PPCG มันไม่ได้เป็นวันที่ดีสำหรับคุณ โปรแกรมเมอร์ Pyth ที่ถูกสาปนั้นจะได้รับคำตอบที่ดีที่สุดและมันก็ทำให้คุณรู้สึกแย่ ทันใดนั้นคุณสังเกตเห็นว่ามีการโพสต์คำถามใหม่! คุณตัดสินใจ ไม่ใช่ CJammers ในเวลานี้ คายคุณเริ่มพิมพ์ให้กำเนิดตัวละคร; ทารกในครรภ์ของวง BrainFuck อันรุ่งโรจน์ที่ผลิตภัณฑ์สุดท้ายของคุณจะเป็น คุณพิมพ์และพิมพ์ ได้เร็วขึ้น! เร็วขึ้น! คุณมุ่งเน้นมากจนคุณไม่สังเกตว่าไฟบนหน้าจอเริ่มกะพริบและดับ ทันใดนั้นมอนิเตอร์ก็ส่องเป็นสีเขียวซึ่งเป็นสัญลักษณ์ของมนุษย์ต่างดาวที่ปรากฏบนเดสก์ท็อป ใช้ทักษะไร้ที่ติของคุณคุณcat ~/Desktop/aliensymbol
และนำเสนอด้วยตัวเลขจำนวนหนึ่งข้อความ! การเป็นโปรแกรมเมอร์ PPCG ที่ฉลาดหลักแหลมที่คุณเป็นคุณสังเกตเห็นว่ามันดูเหมือน ASCII ไม่ว่าสำหรับคุณคุณprint(chr(i) for i in file)
และถอดรหัสข้อความ ความคิดแรกของคุณ: "ฉันต้องการแบ่งปันสิ่งนี้กับชุมชน!"
...
ใครจะไปคิดบ้าง ว่าคนแรกที่ติดต่อกับมนุษย์ต่างดาวจะเป็นโปรแกรมเมอร์ที่อ่อนน้อมถ่อมตนของ PPCG ทำไมต้องเป็นเรา อาจเป็นเพราะเราเป็นตัวอย่างที่ดีเลิศของความฉลาดของมนุษย์ หรืออาจเป็นเพราะ BrainFuck นั้นใกล้เคียงกับภาษามนุษย์ต่างดาว อย่างไรก็ตามมนุษย์ต่างดาว - ซึ่งเป็นสิ่งมีชีวิตที่ชาญฉลาดนั้นต้องการที่จะทดสอบว่าพวกเขาควรจะจำแนกเผ่าพันธุ์มนุษย์ว่าเป็นคนฉลาดหรือไม่ เพื่อเป็นการทดสอบความสามารถทางจิตของมนุษย์ต่างดาวเราได้ขอให้เราส่งโปรแกรมคอมพิวเตอร์สองสามรายการเพื่อแสดงให้เห็นว่าเราได้รับการอบรมทางด้านเทคโนโลยี ปัญหาคือภาษามนุษย์เดียวที่พวกเขาเข้าใจคือ ASCII เชิงตัวเลข!
ช่วยมนุษย์แสดงสิ่งมีชีวิตเหล่านั้นที่อัลฟาทางปัญญาที่แท้จริงคือ เราจำเป็นต้องส่งสคริปต์ที่จะแปลงซอร์สโค้ดแบบข้อความของเราให้เป็นเวอร์ชัน ASCII ที่เป็นตัวเลข น่าเสียดายเนื่องจากเทคโนโลยีที่ด้อยพัฒนาของเรา (ขอบคุณโอบามา) เราต้องส่งโปรแกรมแปลให้น้อยที่สุดเท่าที่จะทำได้ สิ่งที่ดีที่พวกเขาเลือกที่จะติดต่อ PPCG!
ความท้าทาย:
สมมติฐานของความท้าทายนี้ง่ายมาก: คุณต้องเขียนโปรแกรมที่จะใช้ซอร์สโค้ดของโปรแกรมใด ๆ (หรือไฟล์ข้อความทั่วไปสำหรับเรื่องนั้น) และส่งออกเวอร์ชันที่คั่นด้วยช่องว่างด้วยการแปล ASCII ด้านล่างแต่ละบรรทัด นั่นคือเมื่อได้รับอินพุตของไฟล์ข้อความคุณจะต้องส่งออกแต่ละบรรทัดของไฟล์นั้นตามด้วยบรรทัดที่มีการแทน ASCII ของตัวละครแต่ละตัวในบรรทัดด้านบน (โดยที่แต่ละหมายเลขเรียงด้วยอักขระที่แทน)
ตัวอย่างนี้จะชี้แจงอย่างมาก การใช้ซอร์สโค้ดของ infamous hello world
เป็นอินพุต:
#include <stdio.h>
int main() {
printf("hello, world\n");
return 0;
}
โปรแกรมของคุณควรส่งออก:
# i n c l u d e < s t d i o . h >
35 105 110 99 108 117 100 101 32 60 115 116 100 105 111 46 104 62 10
10
i n t m a i n ( ) {
105 110 116 32 109 97 105 110 40 41 32 123 10
p r i n t f ( " h e l l o , w o r l d \ n " ) ;
32 32 32 32 112 114 105 110 116 102 40 34 104 101 108 108 111 44 32 119 111 114 108 100 92 110 34 41 59 10
r e t u r n 0 ;
32 32 32 32 114 101 116 117 114 110 32 48 59 10
}
125 10
รายละเอียดการใช้งาน:
คุณอาจเลือกที่จะรับอินพุตในรูปแบบใดก็ได้ที่คุณต้องการ (เปิดไฟล์, ไพพ์บรรทัดคำสั่ง, พารามิเตอร์ฟังก์ชั่น ฯลฯ ) และคุณควรส่งออกไปยัง stdout หรือส่งคืนเอาต์พุตจากฟังก์ชั่น
สิ่งที่ควรทราบ
- อักขระแต่ละตัวในผลลัพธ์ถูกคั่นด้วย '\ t' เพื่ออนุญาตให้มีช่องว่าง 3 หลักในบรรทัดด้านล่างเพื่อจัดเรียง (เราจะถือว่าแท็บของคุณถูกตั้งค่าเป็น 4 ช่องว่างหรือมากกว่า)
- บรรทัดใหม่จะปรากฏขึ้นบนบรรทัดที่กดแป้นส่งคืน (สังเกต 10 ในตัวอย่าง)
- ข้อกำหนดการพิมพ์ '\ t' และ '\ n' นั้นเข้มงวดเกินไป โดยทั่วไปแล้วผลลัพธ์ของคุณจะต้องถูกใจตา (ต้องแสดงเอเลี่ยนที่เรามีความสวยงามเช่นกัน) และถ้าคุณสามารถงอสองจุดก่อนหน้านี้ในขณะที่รักษาความสมบูรณ์ของภาพคุณจะได้รับการอภัย
- คุณสามารถเลือกได้ว่าจะมีการขึ้นบรรทัดใหม่หรือไม่ในตอนท้ายของบรรทัดสุดท้าย
เกณฑ์การให้คะแนน
นี่คือรหัส - กอล์ฟเพื่อให้โปรแกรมสั้นที่สุดชนะ หมายเหตุแม้ว่าโปรแกรมของคุณจะไม่สั้นที่สุด แต่ใช้เคล็ดลับที่ประณีตจริงๆเมื่อเทียบกับภาษาที่คุณใช้ +1 ของคุณ!
โชคดี. การจัดอันดับความฉลาดทางอวกาศของมนุษยชาติวางอยู่บนไหล่ของคุณ
หมายเหตุ: โปรดยกโทษให้หลุมของพล็อต ฉันไม่ใช่นักเขียน : D