सार पुनर्लेखन चुनौती (लुटेरे)


9

यह कुछ हद तक है -पसंद चुनौती। यह डाकू का धागा है; पुलिस का धागा यहाँ है

लुटेरों

पुलिस सार पुनर्लेखन प्रणालियों को पोस्ट करेगी। आपका काम यह साबित करना है कि लक्ष्य स्ट्रिंग को या तो स्रोत स्ट्रिंग से या उनके पुनर्लेखन नियमों को लागू करके नहीं पहुँचा जा सकता है। (आप ऐसा कर सकते हैं या तो फिर से लिखने के नियमों का एक क्रम पोस्ट करें जो स्रोत स्ट्रिंग से शुरू होता है और लक्ष्य के साथ समाप्त होता है, या गणितीय रूप से साबित होता है कि यह करता है, या मौजूद नहीं है।)

देखें पुलिस 'धागा विवरण और परिभाषा के लिए।


Do'h! मैंने गलत सवाल पर ध्यान दिया, इसका मतलब पुलिस की चुनौती पर था। तो किसी को एक यादृच्छिक इनाम मिलेगा।
नथानिएल

कोई चिंता नहीं, मैंने इनाम वापस कर दिया है।
जेम्स

@DJMcMayhem: हुह ... इसीलिए एसई एपीआई इस प्रश्न को विशेष रुप से सूचीबद्ध कर रहा है, लेकिन बिना किसी राशि या समापन तिथि के। : ओ अच्छी तरह से, मेरे उपयोगकर्ता स्क्रिप्ट के लिए कुछ इनपुट सत्यापन जोड़ने का समय।
इल्मरी करोनें

जवाबों:


16

jimmy23013

चलो इस एक के लिए पीछे की ओर काम करते हैं। हम पहले अंकों को उनके बाइनरी अभ्यावेदन में बदलते हैं। हम से जाना VW626206555675126212043640270477001760465526277571600601करने के लिए VW++__+_++__+____++_+_++_++_+++_++++_+__+_+_++__+___+_+____+___++++_+______+_+++___+__++++++________++++++____+__++_+_++_+_+_++__+_+++++++_++++__+++_______++______+। अगला, हम तब तक उलटा लागू करते रहते हैं DCW:W+और DW:W_जब तक हम सभी प्रतीकों को साफ नहीं कर देते। हमारा परिणाम अब है VDCDCDDDCDDCDCDDDCDDDDDCDCDDCDDCDCDDCDCDDCDCDCDDCDCDCDCDDCDDDCDDCDDCDCDDDCDDDDCDDCDDDDDCDDDDCDCDCDCDDCDDDDDDDCDDCDCDCDDDDCDDDCDCDCDCDCDCDDDDDDDDDCDCDCDCDCDCDDDDDCDDDCDCDDCDDCDCDDCDDCDDCDCDDDCDDCDCDCDCDCDCDCDDCDCDCDCDDDCDCDCDDDDDDDDCDCDDDDDDDCW। अब हम इस स्ट्रिंग मैच को बनाना चाहते हैं VD+C+W; अर्थात्, हम सभी को Ds के बाईं ओर ले जाना चाहते हैं C। यह उलटा करके किया जा सकता है DCC:CD। हम निम्नलिखित एल्गोरिथ्म को दोहराकर ऐसा करते हैं:

  1. पहले खोजें जो Dकि Cs के ब्लॉक के दाईं ओर है ।
  2. Dउस ब्लॉक के बाईं ओर ले जाएँ ।
  3. Cएस की संख्या को दोगुना करें ।

कुछ गणित के माध्यम से, हम यह निर्धारित कर सकते हैं कि हम 123 Ds और 4638704741628490690670592103344196019722536654143873 Cs के साथ समाप्त हो जाएंगे (आप इस बारे में सही थे कि एसई में फिटिंग नहीं है ... मुझे संदेह है कि यह फिट होगा यदि पृथ्वी में परमाणुओं के सभी राज्यों के रूप में संग्रहीत किया जाता है। संयुक्त: पी)।

यदि हम उल्टा आवेदन करते रहते हैं, तो हम अभी V:VDके सभी से छुटकारा पा सकते Dहैं, इसलिए हम प्राप्त करते हैं VCCC.......CCCW। हम Vपीठ को में परिवर्तित करते हैं YZ। अब हमारे पास है YZCCC.......CCCW

हम सभी से छुटकारा पाने में सक्षम होना चाहते हैं Cऔर फॉर्म में हैं YAAA...AAABBB...BBBZW। सौभाग्य से, यह निम्नलिखित विधि द्वारा किया जा सकता है। सबसे पहले, हम YB:Yप्राप्त करने के लिए 587912508217580921743211 बार उलटा करते हैं YBBB.......BBBZCCC.......CCCW। फिर, हम चरणों के निम्नलिखित अनुक्रम को दोहराते हैं (जहां [?*]किसी भी संख्या का मतलब है ?, जरूरी नहीं कि शून्य से अधिक हो):

  1. उलटा- CZ:ZCप्राप्त करने के लिए 587912508217580921743211 बार आवेदन करेंY[A*]BBB.......BBBCCC.......CCCZCCC.......CCCW
  2. CB:BCप्राप्त करने के लिए कई बार उलटा-सीधा करेंY[A*]BCBCBC.......BCBCBCZCCC.......CCCW
  3. उलटा-सीधा AZ:Zऔर AB:BCAपाने के लिए कई बारY[A*]ABBB.......BBBZCCC.......CCCW

इंडक्शन के माध्यम से, हम देखते हैं कि हम BZसंयोजन को अंत तक छोड़ सकते हैं (पहले छोड़कर W) और फिर s की संख्या As की संख्या का 1/587912508217580921743211 है C, हमें 7892727658096618386747843 As से छोड़ कर । अब हमारे पास है YAAA.......AAABBB.......BBBZW। कन्वर्ट ZWएक वापस करने के लिए Uहै, तो उलटा-लागू U:BUकई बार केवल 2 रखने के लिए Bरों और फिर परिवर्तित BBUएक करने के लिए T, और आप अब YAAA.......AAAT। फिर, आप T:AAAAATप्राप्त करने के लिए कई बार उलटा-आवेदन कर सकते हैं YAAATक्योंकि s की संख्या A5 के कई से 3 बड़ी थी।

चुनौती के लिए धन्यवाद!


यह कहीं भी कहा गया है या क्या यह डिफ़ॉल्ट रूप से है कि उलटा आवेदन की अनुमति है?
वीजुन झोउ

2
@WeijunZhou मेरा मतलब है, को लागू करने अगर A:Bकरने के लिए ABCदेता है BBC, यह स्पष्ट है कि के व्युत्क्रम लागू करने A:Bके लिए BBCदे सकते हैं ABC। यह विशेष रूप से नहीं कहा गया है कि इसकी अनुमति है, लेकिन मैं आसानी से अपने कदमों को उल्टा कर सकता हूं और "पारंपरिक" समाधान कर सकता हूं, बस इतना है कि पीछे की ओर आईएमओ जाना आसान है।
हाइपरन्यूट्रिनो

मैं मतलब, उदाहरण के लिए, अगर वहाँ केवल एक ही नियम है A:Bऔर यह नहीं कहा जाता है कि उलटा लागू तो मुझे नहीं लगता कि आप से जा सकते हैं करते हैं अनुमति दी है BBCकरने के लिए ABC। यह विशिष्ट मामला अलग हो सकता है और दूसरी दिशा में जाने का कोई रास्ता है। मैं बाद में इसकी जांच करूंगा।
वीजुन झोउ

2
@ हाइपरनेटो ^ ^
झोउ

1
आपने इसे किस कारक के लिए प्रयोग किया है और इसमें कितना समय लगा?
user202729

9

boboquack

किसी दिए गए स्ट्रिंग के लिए, सभी अक्षरों (a = 0, b = 1, c = 2) को लें, उन्हें योग करें और modulo 3 लें। फिर कोई भी पुनर्लेखन नियम उस मान को नहीं बदलता है। स्रोत स्ट्रिंग का मान 1 है, और लक्ष्य का मान 2 है। इसलिए, नियमों का कोई संयोजन स्रोत स्ट्रिंग को लक्ष्य स्ट्रिंग में परिवर्तित नहीं करेगा।


9

feersum

यह एक सोकोबन पहेली है। प्रारंभिक स्थिति है:

          ___#
#___####_____#
#_#_#_##_#_!##
##______##_###
##__####_#_###
###__###__

समाप्ति की स्थिति यह है:

          ___#
#___####_____#
#_#_#_##_#_###
##____!__#_###
##__####_#_###
###__###__

इसे निम्नलिखित मुख्य अनुक्रम का उपयोग करके हल किया जा सकता है:

←← → ↓↓ ← ↑ ←←←←←← ↓↓ → ↑ ← ↑↑↑ ←← ↓ → ↑ → ↓↓ →→→→→→ ↓ → ↑↑ ↓↓ ← ↓ ← ↑ → ↑ ←←← ← ↑ ←← ↓ →→→→→ ↓ →→ ↑↑ → ↑↑ ← ↓ ←← ↓↓ → ↑ ← ↑ →→ ↑ →→ ↓ ← ↓ ←← ↓↓ → ↑ ←←←←←←← ↑ ↑ ←← ↓ →→ ↓ → ↓↓ ← ↑ ← ↑ → ↑↑ ←← ↓ → ↑ → ↓↓ ← ↓ → ↑ →→→→→→ ↓↓ ← ↑ → ↑ ←←←←←← →→→ →→→ ↑↑ ← ↓ → ↓ ← ↑↑ →→ ↑ →→ ↓ ← ↓ ← → ↑↑ ← ↓ ← ↓ ↑ →→ ↓ ← ↑ ←← ↓↓↓ →→ ↑↑ ↓↓ ←← ↑↑ → ↓ ↑↑ → ↑ →→ ↓ ← ↓ ← ↓ ←← ↑↑ →→ ↑ → ↓ ← ↓↓ ←←←←← ↑ ←← ↓ →→→→→ ←←←←← ↑↑ ←← ↓ →→ ↓↓ ← ↑ →→→→

यहां एक बैश प्रोग्राम है जो प्रमुख अनुक्रम को sed कमांडों में परिवर्तित करता है और उन्हें लागू करता है। सेड कमांड में केवल पुलिस के उत्तर में परिभाषित रीराइट नियमों का उपयोग करके कमांड को बदलना है, और स्ट्रिंग को संशोधित नहीं करने वाले लेबलिंग और ब्रांचिंग कमांड हैं। यह पुष्टि करता है कि आप केवल पुनर्लेखन नियमों का उपयोग करके लक्ष्य स्ट्रिंग प्राप्त कर सकते हैं।

s="___##___####_____##_#_#_##_#_!####______##_#####__####_#_######__###__"
input=

while
    printf '\n%80s\n' "$s"|fold -w14
    read -n 1
    [ "$REPLY" = $'\e' ]
do
    read -n 2
    case "$REPLY" in
    [A)
        s="$(sed '
s:!:wLW_:
        :a
s:L:<<<<<<<<<<<<<:
s:#w<:w#:
s:_w<:w_:
s:_<:<_:
s:#<:<#:
s:#wW:wLX!:
s:_W:W_:
s:#W:W#:
s:_wW:!:
s:_X:X_:
s:#X:X#:
s:_wX:#:
        ta' <<<"$s")";;
    [B)
        s="$(sed '
s:!:_VRv:
        :a
s:R:>>>>>>>>>>>>>:
s:>v#:#v:
s:>v_:_v:
s:>_:_>:
s:>#:#>:
s:Vv#:!URv:
s:U_:_U:
s:U#:#U:
s:Uv_:#:
s:V_:_V:
s:V#:#V:
s:Vv_:!:
        ta' <<<"$s")";;
    [C)
        s="$(sed '
s:!#_:_!#:
        te
s:!_:_!:
        :e' <<<"$s")";;
    [D)
        s="$(sed '
s:_#!:#!_:
        te
s:_!:!_:
        :e' <<<"$s")";;
    esac
    input="$input${REPLY:1}"
done

echo "$input"

इसे ऑनलाइन आज़माएं!

इसे ऑनलाइन ट्राई करें (निकाले गए कोड के साथ)!

ऊपर और नीचे के लिए, !:wLW_या इसके बाद !:_VRvएक बार के लिए लागू किया जाता है, और संबंधित नियमों को !फिर से प्रकट होने तक बार-बार लागू किया जाता है । सही के लिए, एक !#_:_!#और !_:_!लागू किया जाता है। बाएं के लिए, एक _#!:#!_और _!:!_लागू किया जाता है।

प्रत्येक चाल के बाद स्थिति के लिए लिंक में आउटपुट देखें।


6

XNOR

नियम १ x:xn नियम २ no:oon नियम ३ nr:r नियम ४ooooooooooo:

हम का उपयोग [X,Y]Y की एक रन से संकेत मिलता है Xरों

से शुरू xn[o,A]r,

  1. हमारे पास एक बार नियम 2 लागू करना x[o,2]n[o,A-1]r
  2. नियम 2 को एक बार लागू करने के बाद हमारे पास है x[o,4]n[o,A-2]r
  3. जब तक oएस बीच में लागू होता है nऔर r0 हो जाता है, हमारे पास है x[o,2*A]nr
  4. हमारे पास एक बार नियम 3 को लागू करना x[o,2*A]r
  5. हमारे पास एक बार नियम 1 लागू करना xn[o,2*A]r

इसलिए, हमारे पास से उत्पन्न करने के लिए एक एल्गोरिथ्म xn[o,A]rहै xn[o,2*A]r

से शुरू xnor = xn[o,1]r, 10 गुना एल्गोरिथ्म को दोहराते हुए - 10 वें लूप को छोड़कर हम चरण 4 पर रोकते हैं, होने x[o,1024]r

नियम 4 को लागू करते हुए, यह 1023 = 11 * 93 os को छोड़ देता है xor


2

VortexYT

Fअन्य वर्णों का निर्माण / उपयोग किए बिना s को समाप्त करने का कोई तरीका नहीं है ; इस प्रकार, हमें I:Fलक्ष्य तक पहुँचने के लिए अंतिम चरण के रूप में उपयोग करना चाहिए । कोई भी नियम Iअन्य अवांछित पात्रों के बिना एक भी नहीं देता है इस प्रकार आप लक्ष्य स्ट्रिंग को नहीं प्राप्त कर सकते हैं।

तुल्य, यदि आप स्रोत से पीछे की ओर मैप करने के लिए प्रयास करते हैं, आप केवल से प्राप्त कर सकते हैं Fकरने के लिए Iइससे पहले कि आप कोई और अधिक विकल्प हैं।


आउच, कि दर्द होता है। हालांकि एक और उपाय है ...
VortexYT

@VortexYT ओह वास्तव में, वहाँ है? हम्म, पता नहीं था। लेकिन हाँ, लक्ष्य एक कदम से अधिक का नक्शा नहीं बना सकता है, जिसने संभवतः आपके इरादे से एक टन आसान बना दिया है: P
HyperNeutrino

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