इस चित्र में कितने आकार हैं?


10

बच्चे वस्तुओं को वर्गीकृत करने और उन्हें गिनने में बहुत अच्छे हैं। कंप्यूटर पर ज्यादा परेशानी होने लगती है। यह इस समस्या का एक सरलीकृत संस्करण है। क्या आप एक छोटा प्रोग्राम लिख सकते हैं जो किसी छवि में वस्तुओं को वर्गीकृत और गिन सकता है?

समस्या: एक या अधिक मंडलियों और आयतों वाली छवि को देखते हुए, 2 पूर्णांकों को हलकों की गिनती और आयतों की गिनती के साथ लौटाएं।

नियम

  • इनपुट छवि आपके द्वारा चुने गए किसी भी बिटमैप प्रारूप में एक सफेद पृष्ठभूमि पर काले आंकड़े होंगे।
  • छवि की चौड़ाई और ऊँचाई 100 और 1000 पिक्सेल के बीच होगी।
  • छवि के भीतर आंकड़े पूरी तरह से निहित होंगे।
  • आंकड़े में 1 पिक्सेल लाइन की चौड़ाई होगी।
  • छवियां एंटी-अलियासिंग का उपयोग नहीं करेंगी। वे केवल सफेद पर काले होंगे।
  • आंकड़े किसी अन्य आकृति को छू सकते हैं, काट सकते हैं, या अंदर हो सकते हैं।
  • Intersecting के आंकड़ों में अधिकतम 4 सामान्य पिक्सेल होंगे।
  • मंडलियों का व्यास 20 पिक्सेल या उससे अधिक होगा।
  • आयत पक्ष 10 या अधिक पिक्सेल लंबे होंगे।
  • आप किसी भी अंतर्निहित ins या पुस्तकालयों का उपयोग नहीं कर सकते हैं जो आकार, या किसी अन्य फ़ंक्शन को पहचानते हैं जो इस चुनौती को तुच्छ बनाता है।
  • हलकों और आयतों की गिनती के साथ 2 पूर्णांक लौटें या प्रिंट करें।

उदाहरण 1

उदाहरण 1

उत्तर: 3 4

उदाहरण 2:

यहाँ छवि विवरण दर्ज करें

उत्तर: 4 13

यह एक कोड गोल्फ चुनौती है, इसलिए प्रत्येक भाषा में सबसे छोटा कार्यक्रम या फ़ंक्शन जीत जाएगा।


मैं पहले से ही बता सकता हूं, आयत की गिनती कोनों को गिनने के बारे में होगी। सर्किल हालांकि बहुत कठिन होगा।
बैलिंट

जवाबों:


3

PHP - 355 बाइट्स

बाइट गिनती में शामिल नहीं है '<image-url>'

<?php
m('<image-url>');function m($f){$i=imagecreatefrompng($f);$r=f($i,17);$c=f($i,9);echo($c-$r).' '.$r."\n";}function f($i,$k){$w=imagesx($i);$h=imagesy($i);$r=0;for($y=0;$y<$h;$y++)for($x=0;$x<$w;$x++)if(!imagecolorat($i,$x,$y))$r+=g($i,$x,$y,$w,$k);return$r;}function g($i,&$x,$y,$w,$k){$l=$x;while(!imagecolorat($i,$x,$y)&&$x<$w)$x++;return($x-$l>$k)?1/2:0;}

दो परीक्षण मामलों में, मेरे द्वारा उपयोग किए गए URL हैं http://i.stack.imgur.com/qnIFk.pngऔर http://i.stack.imgur.com/HV9k3.png

आकृतियों की संख्या प्राप्त करने के लिए क्षैतिज रेखाएं और दो से विभाजित करता है। अवलोकन पर निर्भर करता है कि मंडलियों में छोटे क्षैतिज खंड होते हैं और आयत में क्षैतिज खंड होते हैं।

प्रवेश हैक, परीक्षण के मामलों के अलावा और कुछ के लिए काम करने की गारंटी नहीं!

मैंने and 45 ° और क्षैतिज रेखाओं का पता लगाकर छवियों को घुमाने की कोशिश की। यह विकर्ण लाइनों के लिए जाँच के बराबर होगा और हलकों को बेहतर ढंग से उठाएगा, लेकिन मुझे एक प्रक्षेप एल्गोरिथ्म नहीं मिला, जो काम करने के लिए पर्याप्त किनारों को साफ छोड़ दे। उदाहरण के लिए, वे पिक्सेल की दो पंक्तियों में एक पंक्ति को स्मज कर सकते हैं और गिनती को गड़बड़ कर सकते हैं।

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