उच्च स्तर के स्टीमपंक उपन्यास द डिफरेंस इंजन में , सिनेमा घरों के समतुल्य टाइलों द्वारा प्रदर्शित एक पिक्सेलेटेड मूविंग इमेज दी जाती है जिसे यंत्रवत् रूप से फ़्लिप किया जा सकता है। इन टाइलों की गति को ऑर्केस्ट्रेट करने के लिए नियंत्रण इंजन एक बड़ी शोर मशीन थी जिसे छिद्रित कार्ड के डेक द्वारा नियंत्रित किया जाता था।
आपका कार्य इस तरह के एक इंजन का अनुकरण करना और एक इनपुट फ़ाइल द्वारा निर्दिष्ट के रूप में एक पिक्सेलयुक्त एनीमेशन प्रदर्शित करना है। इनपुट में एक निश्चित-चौड़ाई वाले प्रारूप में लाइनें शामिल हैं, लेकिन आप यह मान सकते हैं कि लाइन-एंड इंडिकेशन के लिए जो भी सुविधाजनक है। प्रारूप है:
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 अनुक्रम) से कम के रूप में व्याख्या की जानी चाहिए।
एक एकल स्टेटमेंट लाइन केवल एक एकल समन्वय को प्रभावित कर सकती है, लेकिन एक्स मानों की एक आकस्मिक सीमा निर्दिष्ट कर सकती है। अंतिम x मान रिक्त छोड़ा जा सकता है या एकल पिक्सेल को प्रभावित करने के लिए प्रारंभिक मूल्य के समान हो सकता है।
ओपकोड एक हेक्साडेसिमल अंक है जो यूनिवर्सल बाइनरी फंक्शन कोड को निर्दिष्ट करता है जो कि एक रूस्टरटॉप के रूप में उपयोग किया जाता है। तर्क 0 या 1 है। किया गया रैस्टर ऑपरेशन है
pixel = pixel OP argument infix expression
--or--
OP(pixel, argument) function call expression
तो पिक्सेल का मूल मान UBF तालिका में X के रूप में प्रवेश करता है, और विवरण से तर्क मान Y के रूप में प्रवेश करता है। इस फ़ंक्शन का परिणाम पिक्सेल का नया मूल्य है। और यह ऑपरेशन प्रत्येक x, y युग्म से xx, YY से XX, YY कथन में निर्दिष्ट किया गया है। Xx और XX द्वारा निर्दिष्ट सीमा में दोनों अंत बिंदु शामिल हैं। इसलिए
0000 0 010F1
पंक्ति 0 पर पिक्सल 0,1,2,3,4,5,6,7,8,9,10 सेट करना चाहिए।
आउटपुट आयाम ( m x n ) न्यूनतम 20 x 20 होना चाहिए, लेकिन यदि वांछित हो तो बड़ा हो सकता है। लेकिन अनाज दिखाना चाहिए, आप जानते हैं? यह पिक्सेलेटेड माना जाता है । दोनों ग्राफिकल और ASCII- कला आउटपुट स्वीकार्य हैं।
उदाहरण के लिए, हम एक चित्र की आकृति बनाना चाहते थे:
# #
###
##
####
#
#### ####
# #
###
# #
# #
अगर हम उसे 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) यदि इंजन क्लिकिटी-क्लैक शोर करता है।
x
समन्वय हमेशा समावेशी होता है?