একটি মোড় দিয়ে একটি ক্রসওয়ার্ড পড়ুন!


13

এই প্রশ্নের অনুরূপ , তবে এটি ক্রসওয়ার্ডের ভিন্নতা!

প্রতি গ্রিড স্কোয়ারে কেবল একটি অক্ষরের পরিবর্তে আপনার এক বা দুটি থাকতে পারে

ইনপুট:

  • একটি 2 ডি অ্যারে বা আপনার ভাষায় যা কিছু কাজ করে।
  • আপনি বৈধ ইনপুট ধরে নিতে পারেন
  • যে কোনও অ্যারের আকার অবশ্যই কাজ করবে

আউটপুট:

  • সমস্ত শব্দের একটি অ্যারে
    • অতিক্রম এবং নিচে
    • সমস্ত শব্দ অবশ্যই একসাথে যুক্ত হতে হবে, অর্থাত্ অখণ্ড শৃঙ্খলে যুক্ত (যদি মিথ্যা না ফেরায়)
    • শব্দগুলি কমপক্ষে দুটি গ্রিড স্কোয়ারের হতে হবে , বর্ণ নয়

উদাহরণ:

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

রিটার্নস:

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

উদাহরণ:

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

রিটার্নস:

false

এটি , সুতরাং আমি এটি উইন্ডোজ 7 এ 2.5 গিগা হার্জ এবং 16 জিবি র‌্যাম সহ চালাব। যদি আপনার কোডটি সত্যই রহস্যজনক হয় তবে সংকলকটির একটি লিঙ্ক সরবরাহ করুন যাতে আমি আসলে এটি চালাতে পারি।


9
পিপিসিজিতে আপনাকে স্বাগতম!
ফ্লিপট্যাক

2
আপনার দুটি স্পেস অংশ দুটি গ্রিড স্কোয়ারের সাথে প্রতিস্থাপন করা উচিত ।
গবার ফেকেটে

1
গতিটি কোন আকারের ইনপুট আকারের সাথে পরিমাপ করা হবে?
মার্টিন ইন্ডার

@ মার্টিন উদাহরণগুলির মধ্যে অন্তর্ভুক্ত করুন
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 নেই ... যাইহোক, আমি সময় ব্যবহার করে এটি পরীক্ষা করব (সময়) ()
এপিকবোব 5

আমি পাইপ ব্যবহার করে স্কিপি ইনস্টল করতে পারি না ...
epicbob57

আপনি পিপ 3 ব্যবহার করেছেন?
গ্যাবার ফেকেট

পিপ 9.0.1 (অজগর 3.5)
epicbob57

ওহ, আপনি উইন্ডোতে
গ্যাবার ফেকেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.