एक मोड़ के साथ एक क्रॉसवर्ड पढ़ें!


13

इस प्रश्न के समान , लेकिन यह एक क्रॉसवर्ड भिन्नता है!

ग्रिड स्क्वायर प्रति केवल एक अक्षर के बजाय, आपके पास एक या दो हो सकते हैं ।

इनपुट:

  • एक 2d सरणी, या जो कुछ भी आपकी भाषा में काम करता है।
  • आप मान्य जानकारी ग्रहण कर सकते हैं
  • किसी भी सरणी का आकार काम करना चाहिए

आउटपुट:

  • सभी शब्दों की एक सरणी
    • चारों ओर और नीचे
    • सभी शब्दों को एक साथ जोड़ा जाना चाहिए, अर्थात शब्दों की अटूट श्रृंखला में जुड़ा हुआ है (यदि गलत नहीं है)
    • शब्द कम से कम दो ग्रिड वर्ग होने चाहिए , अक्षर नहीं

उदाहरण:

[["",  "wo", "r",  "k"],
[ "",   "r",  "",   ""],
[ "he", "l",  "lo", ""],
[ "",   "d",  "ad", ""]]

यह दिखाता है:

["work", "world", "hello", "load", "dad"]

उदाहरण:

[["he", "ll", "o"],
[ "",   "",   ""],
[ "wo", "r",  "ld"]]

यह दिखाता है:

false

यह , इसलिए मैं इसे विंडोज़ 7 पर 2.5ghz और 16gb की रैम के साथ चलाऊंगा। यदि आपका कोड वास्तव में गूढ़ है, तो संकलक को एक लिंक प्रदान करें ताकि मैं वास्तव में इसे चला सकूं।


9
PPCG में आपका स्वागत है!
FlipTack

2
आपको दो रिक्त स्थान को दो ग्रिड वर्गों के साथ बदलना चाहिए ।
गैबरे फेकेटे

1
किस आकार के इनपुट आकार के साथ गति को मापा जाएगा?
मार्टिन एंडर

@MartinEnder उदाहरण
epicbob57

@ epicbob57 विश्वसनीय समय को मापने के लिए छोटे के लिए रास्ता लगता है। आप ज्यादातर I / O और अन्य ओवरहेड मापते होंगे।
मार्टिन एंडर

जवाबों:


1

अजगर ३

import numpy
from scipy.ndimage import measurements

def crosswords(arr):
    M=numpy.asarray(arr)
    # check connectivity
    if measurements.label(numpy.where(M!='',1,0))[-1] != 1:
        return 'false'

    words = []
    def get_words(mat):
        for r in mat:
            word,counter='',0
            for c in r:
                if c=='':
                    if counter>1:
                        words.append(word)
                    word, counter = '', 0
                else:
                    word, counter = word+c, counter+1
            if counter > 1:
                words.append(word)
    get_words(M)
    # transpose M
    get_words(M.T)
    return words

उपयोग:

इनपुट के रूप में फ़ंक्शन स्ट्रिंग की एक सरणी लेता है:

crosswords( [["", "wo", "r", "k"], [ "", "r", "", ""], [ "he", "l", "lo", ""], [ "", "d", "ad", ""]])

falseजब कनेक्टिविटी कई लेबल लौटाता है तो स्ट्रिंग लौटाता है। अन्यथा मान्य शब्दों की सरणी देता है।

मैंने इसे कंसोल कमांड के साथ और उपयोग किया है timeit, लेकिन मुझे नहीं पता कि यहां कौन सा उपयोग करना है या कौन सा पोस्ट करना है।time.time()time


मुझे एहसास हुआ कि मेरे पास पायथन 3 नहीं है ... वैसे भी, मैं समय का उपयोग करके इसका परीक्षण करूंगा। ()
epicbob57

मैं पाइप का उपयोग कर
स्काइप

क्या आपने pip3 का उपयोग किया है?
गबोर फेकेट

पाइप 9.0.1 (अजगर 3.5)
एपिकबोब 57

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