नोड्स और पॉइंटर्स के बारे में कैसे?
यह मानते हुए कि हमेशा 6 चेहरे होते हैं, और 1 नोड 1 चेहरे पर 1 वर्ग का प्रतिनिधित्व करता है:
r , g , b
r , g , b
r , g , b
| | |
r , g , b - r , g , b
r , g , b - r , g , b
r , g , b - r , g , b
नोड के पास प्रत्येक नोड के बगल में एक पॉइंटर होता है। एक सर्कल रोटेशन केवल पॉइंटर (संख्याओं की संख्या / चेहरे की संख्या) -1 नोड्स पर माइग्रेट करता है, इस मामले में 2. चूंकि सभी घुमाव सर्कल घुमाव हैं, आप सिर्फ एक rotate
फ़ंक्शन का निर्माण करते हैं। यह पुनरावर्ती है, प्रत्येक नोड को एक स्थान पर ले जाता है, और यह जाँचता है कि क्या यह उन्हें पर्याप्त स्थानांतरित कर दिया है, क्योंकि यह नोड्स की संख्या एकत्र करेगा, और हमेशा चार चेहरे होते हैं। यदि नहीं, तो बढ़ाए गए मान की संख्या बढ़ाएं और फिर से कॉल घुमाएं।
यह मत भूलो कि यह दोगुना जुड़ा हुआ है, इसलिए नए इंगित किए गए नोड को भी अपडेट करें। वहाँ हमेशा ऊँचाई होगी * चौड़ाई के नोड्स को स्थानांतरित किया गया, एक पॉइंटर प्रति नोड के साथ अद्यतन किया गया, इसलिए वहाँ ऊंचाई * चौड़ाई * 2 पॉइंटर्स अपडेट किए जाने चाहिए।
चूंकि सभी नोड्स एक-दूसरे की ओर इशारा करते हैं, बस सर्कल पर घूमते हुए प्रत्येक नोड को अपडेट करें जैसे ही आप इसे आते हैं।
यह किसी भी आकार के क्यूब के लिए काम करना चाहिए, बिना किनारे के मामलों या जटिल तर्क के बिना। यह सिर्फ पॉइंटर वॉक / अपडेट है।