क्या यह दंश मेरा था?


12

कल, मैंने अपना सैंडविच मेज पर छोड़ दिया। आज जब मैं उठा, तो उसमें एक दंश था ... क्या यह मेरा था? मुझे याद नहीं ...

संकट:

सैंडविच और मेरे काटने के पैटर्न का प्रतिनिधित्व करें और मुझे बताएं कि क्या यह मेरा काटने था या नहीं।

उदाहरण:

उदाहरण 1:

मेरा काटने पैटर्न:

..
.

सैंडविच:

#####
.####
..###

आउटपुट:

truthy

उदाहरण 2:

मेरा काटने पैटर्न:

..
..

सैंडविच:

...##
..###
.####

आउटपुट:

falsy

उदाहरण 3:

यदि कम से कम 1 घुमाव है जो सत्य के रूप में गिना जाता है, तो आउटपुट सत्य है।

मेरा काटने पैटर्न:

.
 .
  .

सैंडविच:

##.
#.#
.##

आउटपुट:

दो संभावित घुमाव (उत्तर-पूर्व या दक्षिण-पश्चिम कोने में काटते हुए)।

truthy

कुछ वैध काटने:

..
.

...
.
.

.
 .
  .

..
. .
 ..

 ..
.
. .

कुछ अवैध काटने:

..

...
.

..
.
 .

नियम:

  • मेरा काटने का पैटर्न ओरिएंटेशन हमेशा नॉर्थवेस्ट कॉर्नर को काटने के लिए होगा। और अन्य कोनों को काटने के लिए घुमाया जाना चाहिए;

  • सैंडविच में हमेशा 1 और केवल 1 काटने होंगे;

  • सैंडविच में काट 4 कॉर्न्स में से किसी में भी हो सकता है (तदनुसार घुमाया गया);

  • मुख्य विकर्ण के साथ काटने के पैटर्न हमेशा सममित होंगे;

  • काटने के पैटर्न हमेशा कम से कम 1 व्यापक और गैर खाली होंगे;

  • सैंडविच हमेशा चौड़ाई और ऊंचाई के साथ आयताकार होगा जो मेरे काटने के पैटर्न की चौड़ाई के बराबर या अधिक है;

  • अपने इनपुट में, आप सैंडविच और काटने का प्रतिनिधित्व करने के लिए किसी भी 2 अलग-अलग गैर-व्हाट्सएप पात्रों का चयन कर सकते हैं;

  • काटने के पैटर्न में अंतर का मतलब है कि मेरा काटने सैंडविच के उस हिस्से को नहीं छूता है।


क्या काटने का पैटर्न सैंडविच से बड़ा हो सकता है? क्या काटने का पैटर्न खाली हो सकता है? क्या काटने का पैटर्न सैंडविच के समान हो सकता है? यानी .., ..?
TheLethalCoder

@TheLethalCoder नियमों का कहना है कि काटने का पैटर्न हमेशा सैंडविच फिट होगा। मैं न्यूनतम आकार (1 चौड़ाई) निर्दिष्ट करने के लिए एक नया नियम
जोड़ूंगा

@ द लीथलकोडर और हाँ, काटने का पैटर्न सैंडविच के समान हो सकता है
फेलिप नारदी बतिस्ता

जवाबों:


2

रूबी , 103 बाइट्स 101 बाइट्स

->b,s{[a=s.map(&:reverse),s,s.reverse,a.reverse].any?{|t|b.zip(t).all?{|y,x|y==x.tr(?#,' ').rstrip}}}

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

पहले के उपयोग के लिए असाइनमेंट को स्थानांतरित करके 2 बाइट्स सहेजे गए। जाहिरा तौर पर रूबी एरे परिभाषा और अल्पविराम में अल्पविराम को भ्रमित नहीं करने के लिए पर्याप्त स्मार्ट है जो एक साथ परिवर्तनीय असाइनमेंट से उत्पन्न होगा (कम से कम इस मामले में: डी)


2

पायथन 2 , 134 बाइट्स

b,s=input()
a=[''.join(l[::-1])for l in s]
print any(b==[l.replace('#',' ').rstrip()for l in x][:len(b)]for x in(a,a[::-1],s[::-1],s))

तार को दो सूचियों के रूप में लेता है (प्रत्येक पंक्ति के लिए एक)। लाइनों पर कोई अनुगामी व्हाट्सएप मान लेता है।

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

उदाहरण:

Input: ['..','.'],['#####','.####','..###'] (example 1)
>True

Input: ['..','..'],['...##','..###','.####'] (example 2)
>False

Input: ['',' .'],['#####','#.###','#####'] (no bite in top row)
>True

1

पायथन 2, 173 बाइट्स

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

S,b=input()
L=len
B=map(lambda x:[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x)),b+[[]]*(L(S)-L(b)))
R=map(lambda x:x[::-1],B)
print S==B or S==B[::-1]or S==R[::-1]or S==R

वर्णों की सूचियों की दो सूचियों के रूप में इनपुट लेता है।
पहला - सैंडविच
दूसरा - दंश

सबसे पहले यह सैंडविच सरणी के आकार में काटता है:

B=map(lambda x:[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x)),b+[[]]*(L(S)-L(b)))

[y<'.'and'#'or y for y in x] के लिए सभी स्थानों की जगह #
(L(S[0])-L(x)),b+[[]]*(L(S)-L(b))लापता तत्व की संख्या की गणना

फिर यह सैंडविच के लिए इस "विस्तारित" काटने के सभी 4 रोटेशन की तुलना करता है:

R=lambda:map(lambda x:x[::-1],B)
print S==B or S==B[::-1]or S==R()or S==R()[::-1]
print any(map(S.__eq__,[B,B[::-1],R(),R()[::-1]])) #longer but pretty

लंबोदर आर का उपयोग क्षैतिज रूप से सूचियों की सूची को दर्पण करने के लिए किया जाता है

लिंक किए गए उदाहरण में सैंडविच है:

##.
#.#
###

और काटने है:

.
 .

1
क्यों R=Lambda:map...और क्या नहींR=map...
फेलिप नारदी बतिस्ता

@FelipeNardiBatista क्योंकि मैं इससे चूक गया: D धन्यवाद!
मृत पोसुम

B=[[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x))for x in b+[[]]*(L(S)-L(b))]-4 के लिए
ovs

और R=[x[::-1]for x in B]-4 के लिए भी। सामान्य तौर पर, एक लैम्ब्डा फ़ंक्शन के साथ मानचित्र का उपयोग न करें
20:59
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.