एक संतुलित पड़ोस का पता लगाएं


10

आपका कार्य एक लेना होगा और एक लेवेंशिन दूरी का प्रतिनिधित्व करने वाला पूर्णांक (वर्णों को सम्मिलित करने, हटाने या एक स्ट्रिंग को दूसरे में बदलने के लिए बदलना होगा) और आपको उस दूरी के साथ संतुलित तारों की संख्या का पता लगाना होगा मूल स्ट्रिंग से (यानी कि स्ट्रिंग के पड़ोस)।

शर्तों

  • संतुलित तारों में केवल वर्ण शामिल होंगे ()<>[]{}

  • आपको केवल सकारात्मक दूरियों के लिए पड़ोस खोजने के लिए कहा जाएगा

  • इनपुट और आउटपुट लचीला है। जब तक आप सभी उचित डेटा लेते हैं और किसी भी खामी का उल्लंघन किए बिना सही उत्तर का उत्पादन करते हैं, मैं आपके उत्तर से खुश हूं।

  • यदि आप चुनते हैं तो आप अपने सभी पूर्णांक इनपुट को 2 से विभाजित कर सकते हैं।

  • यह इसलिए उद्देश्य आपके उत्तर में बाइट्स की संख्या को कम करना है

यह इस सीएमसी और इस जवाब से प्रेरित था

परीक्षण के मामलों

   Case   | Distance | Size of Neighborhood
--------------------------------------------
    ()    |    2     |         18
   ({})   |    2     |         33
   (())   |    2     |         32
    <>    |    4     |        186
   [][]   |    4     |        688
  <(){}>  |    4     |        1379
    {}    |    6     |        2270
  []{}[]  |    6     |        41097

यहाँ कुछ छोटे उदाहरण दिए गए हैं जिनमें वास्तविक पड़ोस शामिल हैं:

(), 2 :
{'', '<>', '()[]', '()()', '(())', '([])', '()<>', '{}', '{()}', '<>()', '(){}', '{}()', '<()>', '(<>)', '[()]', '[]()', '({})', '[]'}

({}), 2 :
{'([]{})', '()', '{}', '<({})>', '({<>})', '<{}>', '({()})', '(<>{})', '({}<>)', '({[]})', '(({}))', '({{}})', '({}[])', '{({})}', '({})()', '{}({})', '(())', '()({})', '([])', '<>({})', '({}{})', '({}){}', '({})<>', '(<{}>)', '({})[]', '((){})', '[{}]', '{{}}', '[]({})', '(<>)', '({}())', '([{}])', '[({})]'}

(()), 2 :
{'(())[]', '<>(())', '()', '{}(())', '{()}', '({()})', '{(())}', '(([]))', '(({}))', '(()[])', '(())<>', '((()))', '([])', '((<>))', '()(())', '(<()>)', '([()])', '[(())]', '(()){}', '(())()', '(()())', '(<>())', '(()<>)', '((){})', '<(())>', '<()>', '([]())', '(<>)', '({}())', '[()]', '({})', '[](())'}

<>, 4 :
{'<><<>>', '(<>)<>', '[<>][]', '<<><>>', '(){<>}', '(<>)()', '[<()>]', '<({})>', '<>()<>', '<[<>]>', '[][]<>', '<>[]<>', '<><><>', '[]<{}>', '[]<<>>', '[]<><>', '{<><>}', '[{<>}]', '<(<>)>', '(())<>', '{}<>{}', '()(<>)', '{()<>}', '(())', '{<>{}}', '(<><>)', '([])<>', '[]<[]>', '<{}<>>', '<><()>', '{()}<>', '{{}}<>', '{<>()}', '<<>>()', '{<<>>}', '<()>()', '<[]>()', '<>[<>]', '(<>())', '{}<>()', '(()<>)', '[{}]', '{{}}', '[]()', '[(<>)]', '<{}[]>', '<<>>[]', '{}<()>', '<>', '[()]<>', '<()><>', '[[]]<>', '[{}]<>', '[]<>[]', '()[<>]', '[]<>()', '{<>}{}', '{<[]>}', '<>(<>)', '(<>)[]', '<{}>()', '{}<><>', '{<>}()', '{[]}', '{[]}<>', '<<<>>>', '[]<()>', '<<[]>>', '<<{}>>', '[[]]', '()()<>', '[]{<>}', '<><[]>', '[[]<>]', '<{}()>', '<{<>}>', '<[]{}>', '{}<{}>', '<{}>[]', '()<<>>', '(<()>)', '[]{}', '{{}<>}', '{}()', '()<>[]', '<{}><>', '{[<>]}', '<><{}>', '<(())>', '<><>{}', '[()]', '<<>>{}', '{}{}<>', '[<<>>]', '<[][]>', '(<<>>)', '<[]><>', '[<>]<>', '[<>[]]', '[{}<>]', '{()}', '{<>[]}', '[]{}<>', '{(<>)}', '(<[]>)', '()[]<>', '<>{<>}', '{[]<>}', '(<>{})', '({}<>)', '[<><>]', '<><>()', '{}[<>]', '<{[]}>', '<<()>>', '<<>{}>', '([<>])', '<[]()>', '()()', '([])', '[[<>]]', '((<>))', '[](<>)', '(){}<>', '[()<>]', '<([])>', '<()()>', '[][]', '<<>[]>', '[<[]>]', '({})<>', '<{{}}>', '<[{}]>', '<{}{}>', '{}(<>)', '<<>><>', '[<>()]', '[][<>]', '({})', '{}[]<>', '{}<[]>', '<[()]>', '()[]', '<()>[]', '{{<>}}', '(<>){}', '{}{}', '({<>})', '{<()>}', '{}{<>}', '[]()<>', '<[]>[]', '(<>[])', '<[]>{}', '{}()<>', '()<[]>', '()<{}>', '{}<<>>', '<{}>{}', '{}[]', '()<>{}', '<()<>>', '[<>{}]', '{<>}[]', '<<>()>', '<><>[]', '{<{}>}', '<()[]>', '()<><>', '[<>]()', '()<>()', '{}<>[]', '<{()}>', '(<{}>)', '(){}', '()<()>', '<(){}>', '{<>}<>', '<[[]]>', '[]<>{}', '([]<>)', '<[]<>>', '[<>]{}', '<()>{}', '<>{}<>', '[<{}>]'}

2
एक ब्रेन-फ्लैक ब्रूट-फोरसर बनाने की कोशिश कर रहा है? : D
mbomb007

@ mbomb007 मैंने आपकी सभी सलाह को ध्यान में रखा है। सहायता के लिए धन्यवाद!
तदर्थ गार्फ हंटर


जवाबों:


3

गणितज्ञ, 187 173 बाइट्स

Length@Union@Select[""<>#&/@(Tuples[Characters@" ()[]<>{}",StringLength@#+#2]/." "->""),sFixedPoint[StringReplace["()"|"[]"|"{}"|"<>":>""],s]==""&&EditDistance[s,#]==#2]&

जानवर बल शुद्ध कार्य। #पहला तर्क (स्ट्रिंग शुरू) का #2प्रतिनिधित्व करता है और दूसरा तर्क (दूरी) का प्रतिनिधित्व करता है।

Characters@" ()[]<>{}"संभावित पात्रों की सूची (सहित " ")

Tuples[Characters@" ()[]<>{}",StringLength@#+#2] उन पात्रों के सभी tuples की सूची है जिनके पास मूल स्ट्रिंग की लंबाई और दूरी के साथ लंबाई है।

Tuples[Characters@" ()[]<>{}",StringLength@#+#2]/." "->""" "रिक्त स्ट्रिंग के साथ सभी वर्णों को बदलता है ।

""<>#&/@(...) उन सभी वर्ण सूचियों को तार में जोड़ता है।

आगे हम Selectसभी ऐसे तार हैं जो संतुलित हैं और जो EditDistanceनिम्नलिखित फ़ंक्शन के साथ उपयुक्त हैं :

s                                                                                                 String s
                                                                                                 maps to
  FixedPoint[StringReplace["()"|"[]"|"{}"|"<>":>""],s]                                              the fixed point of cancelling out pairs of brackets
                                                      ==                                             equals
                                                        ""                                          the empty string
                                                          &&                                        and
                                                            EditDistance[s,#]==#2                   the distance from s to # is #2

अगला हम Unionडुप्लिकेट को हटाने और लेने के लिए उपयोग करते हैं Length

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.