ในนวนิยายเรื่อง Steampunk The Difference Engineที่มีการประเมินค่าต่ำอย่างสูงเทียบเท่ากับโรงภาพยนตร์ที่ส่งมอบภาพเคลื่อนไหวแบบพิกเซลที่แสดงด้วยกระเบื้องซึ่งสามารถพลิกกลไกได้ เครื่องมือในการควบคุมการเคลื่อนไหวของกระเบื้องเหล่านี้เป็นเครื่องที่มีเสียงดังขนาดใหญ่ที่ควบคุมโดยสำรับไพ่ที่ถูกต่อย
งานของคุณคือเลียนแบบเครื่องยนต์และแสดงภาพเคลื่อนไหวแบบพิกเซลตามที่ระบุโดยไฟล์อินพุต อินพุตประกอบด้วยบรรทัดในรูปแบบความกว้างคงที่ แต่คุณอาจคิดว่าอะไรก็ตามที่สะดวกสำหรับการบ่งชี้บรรทัดสิ้นสุด รูปแบบคือ:
SSSSYYxxXXOA
SSSS: 4 digit sequence no. may be padded by blanks or all blank
YY: the y coordinate affected by this line (descending, top is 0, bottom is m-1)
xx: the starting x coordinate
XX: the ending x coordinate
O: hexadecimal opcode
A: argument (0 or 1)
อินพุตถูกจัดลำดับไว้อย่างชัดเจน (ถ้าคุณวางไพ่ลงบนพื้นคุณจะขอบคุณฉันสำหรับส่วนนี้) นั่นหมายความว่าโปรแกรมจะต้องทำการเรียงลำดับที่มั่นคงของบรรทัดอินพุตโดยใช้ฟิลด์ลำดับเป็นคีย์การเรียง เส้นที่มีหมายเลขลำดับเดียวกันต้องรักษาการเรียงลำดับแบบสัมพัทธ์ดั้งเดิม (ควรทำงานกับการเรียงลำดับที่ไม่เสถียรหากคุณต่อท้ายหมายเลขบรรทัดจริงกับคีย์) ฟิลด์ลำดับที่ว่างควรถูกตีความว่าต่ำกว่าหมายเลขใด ๆ (ลำดับ ascii collation)
บรรทัดคำสั่งเดียวสามารถส่งผลกระทบต่อพิกัด y เดียว แต่อาจระบุช่วงค่า x ที่ต่อเนื่องกัน ค่า x สิ้นสุดอาจเว้นว่างไว้หรืออาจเหมือนกับค่าเริ่มต้นเพื่อส่งผลกระทบต่อพิกเซลเดียว
opcode เป็นเลขฐานสิบหกซึ่งระบุรหัสฟังก์ชันไบนารีสากลซึ่งใช้เป็น rasterop อาร์กิวเมนต์เป็น 0 หรือ 1 การดำเนินการแรสเตอร์ที่ดำเนินการคือ
pixel = pixel OP argument infix expression
--or--
OP(pixel, argument) function call expression
ดังนั้นค่าดั้งเดิมของพิกเซลจะเข้าสู่ X ในตาราง UBF และค่าอาร์กิวเมนต์จากคำสั่งจะถูกป้อนเป็น Y ผลลัพธ์ของฟังก์ชันนี้คือค่าใหม่ของพิกเซล และการดำเนินการนี้จะดำเนินการกับแต่ละคู่ x, y จาก xx, YY ถึง XX, YY ที่ระบุไว้ในคำสั่ง ช่วงที่ระบุโดย xx และ XX มีทั้งจุดสิ้นสุด ดังนั้น
0000 0 010F1
ควรตั้งค่าพิกเซล 0,1,2,3,4,5,6,7,8,9,10 ในแถว 0
ขนาดเอาต์พุต ( m x n ) ควรเป็นอย่างน้อย 20 x 20 แต่อาจใหญ่กว่านี้หากต้องการ แต่เมล็ดควรจะแสดงคุณรู้หรือไม่? มันควรจะเป็นตัวหนังสือ ทั้งเอาต์พุตกราฟิกและ ASCII เป็นที่ยอมรับ
ตัวอย่างเช่นเราต้องการสร้างภาพของตัวหนังสือตัวหนังสือ:
# #
###
##
####
#
#### ####
# #
###
# #
# #
หากเราวาดเขาด้วย op-flipping opent เช่น XOR มันสามารถวาดและลบได้โดยไม่คำนึงว่าหน้าจอจะเป็นสีดำหรือสีขาว
00020261
0 6 661
1 3 561
2 3 461
3 3 661
4 4 461
5 0 361
5 5 861
6 3 361
6 5 561
8 3 561
9 3 361
9 5 561
10 3 361
10 5 561
การทำซ้ำลำดับนี้จะทำให้ตัวเลขปรากฏและหายไป
ภาพเคลื่อนไหวที่มีขนาดใหญ่ขึ้นสามารถจัดเรียงตามลำดับได้โดยระบุ "ช็อต" ที่แตกต่างกันในฟิลด์ลำดับ
100 016F0
101 016F0
102 016F0
103 016F0
104 016F0
105 016F0
106 016F0
107 016F0
108 016F0
109 016F0
110 016F0
111 016F0
112 016F0
113 016F0
114 016F0
115 016F0
200020261
2 0 6 661
2 1 3 561
2 2 3 461
2 3 3 661
2 4 4 461
2 5 0 361
2 5 5 861
2 6 3 361
2 6 5 561
2 8 3 561
2 9 3 361
2 9 5 561
210 3 361
210 5 561
00020261
0 6 661
1 3 561
2 3 461
3 3 661
4 4 461
5 0 361
5 5 861
6 3 361
6 5 561
8 3 561
9 3 361
9 5 561
10 3 361
10 5 561
300020261
3 0 6 661
3 1 3 561
3 2 3 461
3 3 3 661
3 4 4 461
3 5 0 361
3 5 5 861
3 6 3 361
3 6 5 561
3 8 3 561
3 9 3 361
3 9 5 561
310 3 361
310 5 561
00020261
0 6 661
1 3 561
2 3 461
3 3 661
4 4 461
5 0 361
5 5 861
6 3 361
6 5 561
8 3 561
9 3 361
9 5 561
10 3 361
10 5 561
การผลิต:
โปรแกรมนี้เป็นโปรแกรมการแข่งขันที่สั้นที่สุด (นับจำนวนไบต์) โบนัส (-50) หากเอ็นจิ้นทำให้เกิดเสียง clickity-clack
x
นั้นรวมอยู่ด้วยเสมอหรือไม่?