डोमिनोज के एक सेटअप को देखते हुए आपका काम यह पता लगाना है कि कौन से डोमिनोज गिरते हैं और कौन से नहीं।
इनपुट
एक डोमिनोज़ सेटअप का एक आयताकार ASCII प्रतिनिधित्व लें। निम्न वर्ण ASCII ग्रिड के लिए उपयोग किए जाते हैं:
(space): खाली सेल
|
,-
,/
,\
: डोमिनो
डोमिनोज़ 8 दिशाओं में गिर सकते हैं, जिन्हें निम्नलिखित अक्षरों (WASD झुकाव के समान) द्वारा दर्शाया गया है:
Q W E
A D
Z X C
एक या अधिक डोमिनोज़ को इन अक्षरों में से एक से बदल दिया जाएगा ताकि यह इंगित किया जा सके कि प्रारंभ में डोमिनोज़ को धक्का दिया गया है। यहाँ एक उदाहरण है:
D||||/
- /
- -
- -
/|||||
मैं नहीं चाहता कि यह चुनौती इनपुट पार्सिंग में एक अभ्यास में बदल जाए ताकि निम्नलिखित इनपुट रूपों में से किसी की अनुमति हो:
- ग्रिड के साथ एक स्ट्रिंग (वैकल्पिक रूप से इसके आयामों से पहले यदि वह मदद करता है)
- प्रत्येक पंक्ति के लिए एक स्ट्रिंग के साथ एक सरणी / सूची / ट्यूपल (वैकल्पिक रूप से चौड़ाई और ऊंचाई पूर्णांक के साथ)
- ए (नेस्टेड) सरणी / सूची / प्रत्येक ग्रिड सेल के लिए एक स्ट्रिंग / चरित्र के साथ ट्यूपल (वैकल्पिक रूप से चौड़ाई और ऊंचाई चर के साथ)
आप एसटीडीआईएन से पढ़ सकते हैं या फ़ंक्शन तर्क ले सकते हैं या यहां तक कि इनपुट को एक चर में संग्रहीत करने की अपेक्षा कर सकते हैं।
उत्पादन
STDOUT या रिटर्न में लिखें (या एक चर में सहेजें) परिणामस्वरूप इनपुट किसी भी मान्य इनपुट प्रारूप में, यह दर्शाता है कि कौन से डोमिनोज गिर गए हैं और कौन सा नहीं है। यही है, प्रत्येक गिरे हुए डोमिनोज़ को प्रतिस्थापित करें #
और प्रत्येक खड़े डोमिनोज़ को छोड़ दें जैसा कि इनपुट में था।
नियम
बेशक, डोमिनोज़ सेटअप के माध्यम से अपने पतन का प्रचार करते हैं। जैसा कि दौड़ की स्थिति हो सकती है, हम मानते हैं कि निश्चित समय कदम हैं और गिरने से प्रति चरण एक ग्रिड सेल का प्रसार होता है।
डोमिनोज़ आम तौर पर जिस तरह से आप उनसे सहजता से उम्मीद करते हैं वह गिर जाता है, लेकिन सामान्य ज्ञान का एक कठोर विनिर्देश काफी लंबा हो जाता है। इसके लिए क्षमा करें, मुझे आशा है कि उदाहरण मदद करेंगे। यहां सभी अद्वितीय दो-टाइल संयोजन (घुमाव और प्रतिबिंब तक) के साथ एक जिस्ट है । कठोर नियमों के लिए आगे पढ़ें।
प्रत्येक डोमिनो केवल दो दिशाओं में गिर सकता है:
W Q E
A | D - / \
X C Z
जब भी कोई डोमिनोज गिरता है तो यह गिरावट की दिशा में सेल को प्रभावित करता है। यदि उस सेल में एक डोमिनोज़ होता है जो एक ही दिशा में या एक दिशा में गिर सकता है जो 45 डिग्री से भिन्न होता है, तो वह डोमिनोज़ अगली बार के कदम में ऐसा करता है।
उदाहरण:
D| -> DD (falls in same direction)
D/ -> DC (falls at 45 degrees)
C -> C (falls at 45 degrees)
- X
जब भी एक तिरछे उन्मुख डोमिनोज़ ( /
या\
) गिरता है, तो यह उन दो कोशिकाओं को भी प्रभावित करता है जो इसके पतन की दिशा में अपने सेल और सेल दोनों को छूते हैं। यदि इन कोशिकाओं में एक डोमिनोज़ होता है, जो मूल डोमिनोज़ के समान दिशा में गिर सकता है, या उससे दूर अक्ष-संरेखित दिशा में, तो यह है कि डोमिनोज़ अगली बार कदम में ऐसा करता है।
उदाहरण:
C/ -> CC (the cell in the direction of the fall is the one below
the /, so it falls in the same direction)
C| -> CD (falls in the axis-aligned direction away from the C)
C- -> C- (the direction away from the Q is W,
or but neither - nor \ can fall to W)
C\ -> C\
अपवाद : यदि एक डोमिनो को एक ही समय में दोनों वैध दिशाओं में धकेल दिया जाता है (यानी यदि उपरोक्त नियमों में से कोई भी संघर्ष में है), तो यह गिरता नहीं है।
उदाहरण:
D|A -> D|A (central domino in pushed in both directions)
Z Z (although it's pushed in one direction by two dominoes
D\A -> D\A and in the other by only one, it doesn't fall)
X X (the domino is being pushed from two opposing sides
D-A -> DXA D and A, but neither is valid for that domino. Hence,
there is no conflict and the X can push the domino over)
Z Z (pushed in the same direction by two dominoes, so falls)
\A -> ZA
Z Z Z (once the conflict arises, the affected
\ -> Z -> Z domino is locked in its position and can't
D|A D|A D|A be pushed over by future dominoes)
उदाहरण
8 5
D||||/ ######
- / - #
- - --> - #
- - - #
/||||| /|||||
===============================================
17 9
E|/|||/ #######
- - # #
- - # #
- - # #
/|||/|||||||||/ --> ###############
/ - # #
/ - # -
/ - # #
/|||||\ #######
===============================================
19 8
\|/ ###
- - # #
D||||/|\ /|||/ ######## #####
/ - # #
- \- --> - \#
\- \ - #- \ #
D||||\ / \ / ###### / \ #
|\ ||||| |\ #####
==============================================
11 11
-\\\/|\|\-| -\##/|###-|
-|\\||\-|\- -|#####-|\-
|\//\//|-/- |#//\//|#/-
\|//|-|\-\| #####-|##\|
---||/-\//| #-######//|
///|||\---- --> #/#####----
-|/---|-|-\ #|##--|-|-\
--|--\/|/// ####-\/|///
/|//--|//-| ####--|//-|
|/\-|||-/-\ |/\####-/-\
E||\-|\---/ ####-|\---/
मुझे पता है कि अगर आपको लगता है कि मैंने गलती की है (विशेषकर पिछले एक के साथ)।
E
(ऐसा नहीं है कि इससे कोई फर्क पड़ता है ...)। ऐसा लगता है कि आप नंगे न्यूनतम करने के लिए इंडेंटेशन की गहराई को कम करके पात्रों का एक गुच्छा बचा सकते हैं।