Lawnmower पैटर्न


9

Google कोड Jam 2013 योग्यता दौर समस्या B से लिया गया :

एलिस और बॉब के घर के सामने एक लॉन है, जिसका आकार एम मीटर आयत द्वारा एन मीटर की तरह है। हर साल, वे लॉन को कुछ दिलचस्प पैटर्न में काटने की कोशिश करते हैं। वे अपनी कटिंग कैंची से करते थे, जो बहुत समय लेने वाली होती थी; लेकिन अब उनके पास कई सेटिंग्स के साथ एक नया स्वचालित लॉमूवर है, और वे इसे आज़माना चाहते हैं।

नए Lawnmower की एक ऊँचाई सेटिंग है - आप इसे 1 से 100 मिलीमीटर के बीच किसी भी ऊँचाई h पर सेट कर सकते हैं, और यह h को h से मुकाबले h से अधिक सभी घास काट देगा। आप इसे लॉन के किनारे के किसी भी भाग में लॉन में प्रवेश करके चलाते हैं; तब लॉनमॉवर एक सीधी रेखा में जाता है, यह लॉन के किनारे से सीधा होता है, जो एक स्वाथ 1 मीटर चौड़ी घास को काटता है, जब तक कि यह दूसरी तरफ लॉन से बाहर नहीं निकलता। Lawnmower की ऊँचाई केवल तभी सेट की जा सकती है जब वह लॉन पर न हो।

ऐलिस और बॉब के पास घास के विभिन्न पैटर्न हैं जो कि उनके लॉन पर हो सकते हैं। उन में से प्रत्येक के लिए, वे जानना चाहते हैं कि क्या इस पैटर्न में घास को अपने नए कानून के साथ काटना संभव है। प्रत्येक पैटर्न को लॉन के प्रत्येक 1 मीटर x 1 मीटर वर्ग पर घास की ऊंचाई निर्दिष्ट करके वर्णित किया गया है।

घास शुरू में पूरे लॉन पर 100 मिमी ऊंची है।

एक फ़ंक्शन लिखें जो पूर्णांक ऊंचाई का 2 डी सरणी लेता है और निर्धारित करता है कि लॉन को तदनुसार काटा जा सकता है या नहीं।

यहां Google कोड जाम से 100 परीक्षण मामले हैं। पहले 35 मामले पास होने चाहिए, बाकी नहीं होने चाहिए।

सबसे छोटा कोड जीतता है।


2
क्या आप उस लाइसेंस को इंगित कर सकते हैं जिसके तहत Google कोड जाम समस्याओं के परीक्षण के मामले उपलब्ध हैं?
पीटर टेलर

मैंने इसे सीधे कॉपी करने के बजाय समस्या से लिंक करने के लिए बदल दिया है।
कार्डबोर्ड_बॉक्स

मुझे लगता है कि यह बहुत ही दुर्भाग्यपूर्ण है अगर पहेली / प्रश्न यहां केवल एक लिंक के साथ प्रस्तुत किया गया है। समस्या को सभी आवश्यक विवरणों के साथ पूर्ण रूप से प्रदान किया जाना चाहिए।
हावर्ड

2
"सभी समस्या बयान, इनपुट डेटा और प्रतियोगिता विश्लेषण क्रिएटिव कॉमन्स एट्रीब्यूशन लाइसेंस के तहत लाइसेंस प्राप्त हैं।" ~ समस्या पृष्ठ से
MrZander

जवाबों:


9

जे, 15 वर्ण

   (-:>./"1<./>./)

इस छोटे से समाधान की उम्मीद नहीं थी।

संक्षिप्त विवरण:

(input == ((max of rows of input) table with min of left and right (max in columns of input)))
(      -:          >./"1                        <./                       >./              )

अपने कार्य के घोल में की तरह 4 अन्य समारोह है: (f1 f2 f3 f4)और एक इनपुट जम्मू जैसे कि यह गणना करता है f1(input,f3(f2(input),f4(input)))यानी input f1 ((f2 input) f3 (f4 input))


कृपया एल्गोरिथ्म की व्याख्या करें (मैं जे कोड को नहीं पढ़ सकता ^ ^)
ओलिवियर दुलैक

2
@OlivierDulac अभी जोड़ा गया।
बेतरतीब

5

एपीएल, 15 वर्ण

{⍵≡(⌈/⍵)∘.⌊⌈⌿⍵}

स्पष्टीकरण:

  • ⌈⌿⍵ rhs के कॉलम की अधिकतम गणना करता है
  • ⌈/⍵ पंक्तियों के साथ भी यही करता है
  • ∘.⌊ न्यूनतम कार्य करने के संबंध में पिछले दो का बाहरी उत्पाद करता है
  • ⍵≡ परिणाम की तुलना rhs से करता है

उदाहरण:

      {⍵≡(⌈/⍵)∘.⌊⌈⌿⍵} 3 3 ⍴ 2 1 2 1 1 1 2 1 2
1

      {⍵≡(⌈/⍵)∘.⌊⌈⌿⍵} 2 3 ⍴ 2 2 2 2 1 1
0 


0

मेरे पास थोड़ा लंबा अजगर कोड है, लेकिन यह Google कोड Jam 2013 में दिए गए सभी परीक्षण मामलों को पारित कर दिया।

 a=input();io=0
 while io<a:
     io+=1;[b,c]=map(int,raw_input("").strip().split());koi=[];koi1=[]
     for i in xrange(b):
         koi.append(map(int,raw_input("").strip().split()))
    rowmax=[]
    for i in koi:
        rowmax.append(max(i))
    for i in xrange(c):
        t=[]
        for j in koi:
            t.append(j[i])
        koi1.append(t);colmax=[]
    for i in koi1:
        colmax.append(max(i))
    toi1=[]
    for i in xrange(b):
        s=[]
        for j in xrange(c):
           s.append(min(colmax[j],rowmax[i]))
        toi1.append(s)
     if toi1==koi:
        print "Case #%d:"%io,"YES"
     else:
        print "Case #%d:"%io,"NO"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.