अलग-अलग अक्षर का पता लगाएं


10

आपने इस तरह की पहेलियां देखी होंगी:

खोजें 0:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO

चुनौती एक ऐसे प्रोग्राम को लिखना है जो एक छवि को दिए गए विभिन्न अक्षर के सूचकांक को ढूंढता है।

इनपुट

इनपुट एक हो जाएगा Image। छवि से मिलकर बनता है एक पंक्ति का काला में पाठ Helvetica 24 pt। एक सफेद पृष्ठभूमि पर फ़ॉन्ट । पाठ में दो वर्णों का चयन शामिल होगा: एक वर्ण जो दोहराया जाता है, और एक वर्ण जो केवल एक बार दिखाई देता है। उदाहरण के लिए:

नमूना इनपुट

उत्पादन

आउटपुट ए Integer, विभिन्न चरित्रों का सूचकांक होगा । ऊपर के उदाहरण में, आउटपुट होगा 4। (ध्यान दें कि एक स्ट्रिंग के सूचकांक शुरू होते हैं 0)

कार्यक्रम विनिर्देशों

कोड गोल्फ के लिए हमेशा की तरह, सबसे छोटा कार्यक्रम जीतता है।


परीक्षण के मामलों

 => 10
 => 11
 => 5
 => 16
 => 10
 => 21
 => 20
 => 13
 => 11
 => 4
 => 7


2
ध्यान दें: आपका वास्तविक दुनिया का उदाहरण प्रति पहेली नहीं है। यह एक मनोरंजक आंख का खेल है।
जैच गेट्स

यह कैसे बनाया जाता है?
intboolstring

यह एक कोड गोल्फ है, इसलिए सबसे छोटा प्रोग्राम जो सफलतापूर्वक प्रत्येक उदाहरण के उत्तर को आउटपुट करता है।
AMACB

2
ध्यान दें कि कुछ भाषाओं के लिए सबसे छोटा उत्तर वास्तव में परिणाम को हार्ड-कोडिंग करना और इनपुट छवि के आकार (जो मुझे लगता है कि अनुमति नहीं है) के आकार के आधार पर किसी एक को चुनना हो सकता है।
user81655

1
@AMACB "हालांकि कोई भी उदाहरणों में शामिल नहीं है", फिर इसे बदलना एक अच्छा विचार हो सकता है;)। इसके अलावा हमारे पास कितने न्यूनतम अक्षर हैं? (कम से कम 3 मुझे लगता है, या क्या हम यह मान सकते हैं कि यह उससे अधिक है?) उस न्यूनतम के लिए एक परीक्षण मामला भी होना चाहिए।
मार्टिन एंडर

जवाबों:


6

डायलाग एपीएल , 31 32 बाइट्स

{1⍳⍨+⌿∘.≡⍨{⍵/⍨~∧⌿⍵}¨⍵⊂⍨2>/∧⌿1,⍵}

⎕IO←0 0 (प्रति ओपी) से शुरू होने वाले सूचकांक प्राप्त करने के लिए, और जो कि कई एपीएल सिस्टम में डिफ़ॉल्ट है।

1,⍵
∧⌿प्रत्येक स्तंभ के लिए सफेद (ऊर्ध्वाधर और कमी)
2>/बूलियन प्रत्येक स्तंभ के लिए सफेद पिक्सल के एक स्तंभ (मार्जिन सुनिश्चित करने के लिए)
⍵⊂⍨को प्रत्येक TRUE पर शुरू होने वाले ब्लॉकों में विभाजित करें (जोड़ी-वार अधिक से अधिक) ।
{... प्रत्येक ब्लॉक के लिए
∧⌿⍵प्रत्येक स्तंभ के लिए बूलियन अगर सब सफेद (ऊर्ध्वाधर और कम करने)
⍵/⍨~कॉलम कि [सभी सफेद] नहीं हैं
∘.≡⍨सभी तत्वों के लिए प्रत्येक तत्व से मेल
+⌿प्रत्येक ब्लॉक के समान ब्लॉक की संख्या (ऊर्ध्वाधर प्लस-कमी)
1⍳⍨पहले एक के सूचकांक (अर्थात अद्वितीय तत्व)

माना जाता है कि मैट्रिक्स में छवि काली (0) और सफेद (1) पिक्सेल की है I, और वर्णों के साथ कम से कम एक सभी-सफेद पिक्सेल कॉलम है।

      f←{1⍳⍨+⌿∘.≡⍨{⍵/⍨~∧⌿⍵}¨⍵⊂⍨2>/∧⌿1,⍵}

"!मैं!!":

      ⊢I←6 12⍴(13/1),(22⍴0 1 1),(5/1),0,(8/1),(10⍴0 1 1),13/1
1 1 1 1 1 1 1 1 1 1 1 1
1 0 1 1 0 1 1 0 1 1 0 1
1 0 1 1 0 1 1 0 1 1 0 1
1 1 1 1 0 1 1 1 1 1 1 1
1 0 1 1 0 1 1 0 1 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1
      f I
1

"Mmnmm":

      ⊢I←7 31⍴(94/1),0 0,(∊0 1⌽¨2/⊂12⍴6↑1 0 1 1),0 1,(62⍴1 1 1,(⊢,⌽)(14⍴0 1)),33/1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 1
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1     
      f I
2

क्या आप पूरी तरह से नहीं हटा सकते {⍵/⍨~∧⌿⍵}¨और केवल साथ ही रह सकते हैं {1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}?
lstefano

@ Lstefano तब यह काम करना बंद कर देगा अगर सफेद-अंतरिक्ष की अलग-अलग मात्रा होती।
13

मुझे पता है तुम्हारा क्या मतलब है।
lstefano

3

गणितज्ञ, 125 बाइट्स

StringCases[#,x:Except[StringCases[#~StringTake~3,x_~~___~~x_:>x][[1]]]:>Position[Characters@#,x]][[1,1,1]]-1&@*TextRecognize

आह, मैथेमेटिका भवन। बहुत अद्भुत। (और इतना लंबा ...) चल रहा है! /! : /; , /। `/ 'और एम / एन पर अलग तरह से वार करता है।


इसके लिए कितने इनपुट काम करते हैं? मेरी कॉपी उदाहरण के लिए पहले उदाहरण (पाइप और विस्मयादिबोधक चिह्न) में किसी भी पाठ को नहीं पहचान पाएगी। जब तक मैं कुछ याद कर रहा हूँ, मेरे पास समान प्रदर्शन है Length[Split[Characters@TextRecognize@#][[1]]] &
A Simmons

उफ़, स्प्लिट के बारे में भूल गया .... और यह मैथेमेटिका द्वारा निर्मित टेक्स्ट रिकग्निशनर पर निर्भर करता है ... और आप कभी भी इस पर भरोसा नहीं कर सकते।
कैलक्यूलेटरफेलीन

मैं फिर एक अलग समाधान के रूप में मेरा पोस्ट करेंगे।
एक सीमन्स

3

मैथेमेटिका, 46 बाइट्स

Length@First@Split@Characters@TextRecognize@#& 

अन्य गणितज्ञों के समाधान के रूप में समान विफलताओं के रूप में यह एक ही TextRecognizeकार्य पर निर्भर करता है।


बाइटसेव:Length@First@Split@Characters@TextRecognize@#&
कैलकुलेटरफ्लीन

@ कैट्सअफ्रीली चियर्स
ए सिमंस

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