52 48 बाइट्स
./@$0<$
21\./01
..>..!\
@
.<..<\
20//\11
@01$00@
इसे ऑनलाइन आज़माएं!
परीक्षण चालक
व्याख्या
क्लेन में आईपी शीर्ष बाएं कोने में दाईं ओर शुरू होता है। पहला कदम जो मैं चाहता था कि मेरा कार्यक्रम पहला और तीसरा बिट निर्धारित करने के लिए आईपी को कार्यक्रम के शीर्ष पर भेजना था। IP टोपोलॉजी के आधार पर कार्यक्रम को इस प्रकार प्रस्तुत करेगा:
^
I|P
./.....
201, 211 -->.......<-- 100, 110
.......
.......
.......
200, 210 -->.......<-- 101, 111
.......
^ ^
| |
000 001
010 011
मैंने फैसला किया कि मेरा कार्यक्रम दूसरे बिट से पहले टोपोलॉजी के तीसरे बिट को रिकॉर्ड करेगा लेकिन $
अंत से पहले उन्हें (उपयोग करके ) स्वैप करेगा । उस अंत तक मैंने ऊपर वर्णित प्रविष्टि के आईपी बिंदुओं पर प्रत्येक टोपोलॉजी के पहले और तीसरे बिट्स को पुश करने के लिए कोड जोड़ा।
./.....
21...01
.......
.......
.......
20...11
.0...0.
आगे मैंने टोपोलॉजी पर 1
या 2
उनके पहले बिट के रूप में ध्यान केंद्रित किया । मैंने उन्हें फिर से जोड़ने और उत्तर की ओर से जुड़े न होने के कारण उन्हें वापस भेजने का फैसला किया ताकि मैं उनकी दूसरी बिट का निर्धारण कर सकूं।
./.....
21\./01
..>....--> 200, 201, 210, 211
.......
100, 101, 110, 111 <--....<..
20/.\11
.0...0.
^ ^
| |
/ \
110 100
111 101
210 200
211 201
आसानी से इस टोपोलॉजी को उनके दूसरे बिट द्वारा फिर से संगठित किया गया ताकि मैं उसे ढेर कर सकूं।
./.....
21\./01
..>....
.......
....<..
20/.\11
.01.00.
उसके बाद मुझे बस दूसरे और तीसरे बिट को स्वैप करने की आवश्यकता थी और कार्यक्रम को समाप्त करना होगा।
./.$...
21\./01
..>....
@......
....<..
20//\11
.01$00.
अब जबकि टोपोलॉजी के साथ 1
या 2
उनके पहले बिट ने काम किया था, मैं 0
सही आउटपुट देने के साथ टोपोलॉजी बनाने पर ध्यान केंद्रित कर सकता था । पहला चरण उन्हें पुनर्संयोजित कर रहा था ताकि उन्हें उनके दूसरे बिट के आधार पर दो समूहों में अलग किया जा सके।
./.$...
21\./01
..>....<-- 010, 011
@......
000, 001, 010, 011 <--.<..<<.<-- 000, 001
20//\11
.01$00.
मैंने पहली बार उन टोपोलॉजीज़ पर ध्यान केंद्रित किया जो 1
उनके दूसरे बिट के रूप में हैं। इन लोगों ने एक चुनौती पेश की क्योंकि उनके लिए आईपी पहले से ही सबसे 2
पहले के रूप में टोपोलॉजी द्वारा उपयोग की जाने वाली एक लाइन पर थी । चूंकि यह उस लाइन पर एक से अधिक निर्देशों को फिट करने के लिए मुश्किल होगा (अनुदेश का उपयोग करके एक एकल निर्देश को छलांग लगाया जा सकता है !
) और मैं संपूर्ण रूप से अंतरिक्ष पर कम चल रहा था, मैंने उस लाइन से आईपी को पुनर्निर्देशित करने और एक मौजूदा 1
निर्देश का पुन: उपयोग करने का निर्णय लिया दूसरा सा धक्का देने के लिए।
./.$...
21\./01
..>..!\
@......
.<..<<.
20//\11
.01$00.
अब उन सभी के लिए टोपोलॉजी के लिए छोड़ दिया गया था 1
क्योंकि उनके दूसरे बिट को दूसरे और तीसरे बिट के आदेश को ठीक करना और समाप्त करना था।
^
|
./.$..$
21\./01
..>..!\
@......
.<..<<.
20//\11
@01$00@
^ ^
| |
011 010
अंत 0
में उनकी दूसरी बिट के रूप में टोपोलॉजी बनी रही । कार्यक्रम में ज्यादा जगह नहीं बची थी, जिसमें सबसे बड़ी अप्रयुक्त जगह शीर्ष रेखा पर थी इसलिए यह वहां था कि मैंने टोपोलॉजी के लिए आईपी 0
को उनके दूसरे बिट के रूप में पुनर्निर्देशित किया ।
./.$.<$
21\./01
..>..!\
@......
.<..<\.
20//\11
@01$00@
मुझे अभी भी 0
दूसरे बिट के लिए धक्का देने और दूसरे और तीसरे बिट के क्रम को ठीक करने के साथ-साथ कार्यक्रम को समाप्त करने की आवश्यकता थी। सौभाग्य से, मैं एक मौजूदा $
निर्देश का पुन: उपयोग करने में सक्षम था ताकि शेष स्थानों में निर्देश 0
और @
निर्देश फिट हो सकें।
./@$0<$
21\./01
..>..!\
@......
.<..<\.
20//\11
@01$00@
अंत में अंतिम कार्यक्रम प्राप्त करने के लिए लाइनों के सिरों से नोड्स छीन लिए जा सकते हैं।