100 वर्णों के भीतर फ्रांसीसी में मर्दाना और स्त्रैण संज्ञाओं के बीच अंतर


21

आपको 100 अक्षरों के भीतर एक बहुत छोटा प्रोग्राम लिखना है। आपका कार्यक्रम मर्दाना और स्त्री फ्रेंच संज्ञा के बीच अंतर करना चाहिए। आउटपुट होना चाहिए unअगर यह मर्दाना है और uneअगर यह स्त्री है। अक्सर, कुछ निश्चित सांख्यिकीय नियम होते हैं जिनका आप अनुसरण कर सकते हैं (जैसे कि यदि यह "ई" में समाप्त हो जाता है तो यह मर्दाना से अधिक स्त्रैण होता है)।

इनपुट :

एक फ्रेंच शब्द; इसमें किसी भी निचले अक्षर और डैश शामिल हो सकते हैं, जिसमें अक्षरों के साथ निचले अक्षर भी शामिल हैं।

उदाहरण इनपुट: ami

आउटपुट :

unयदि शब्द पुल्लिंग है और uneयदि शब्द स्त्रीलिंग है।

उदाहरण आउटपुट: un

आपको हर शब्द सही पाने की ज़रूरत नहीं है; आपका लक्ष्य यथासंभव सटीक होना है।

स्कोरिंग : आपका उत्तर 100 वर्णों के भीतर होना चाहिए। जैसे बयान printया console.logया alertहै नहीं अपने कुल बाइट्स के हिस्से के रूप में गिनती। आप एक फ़ंक्शन या विधि भी लिख सकते हैं जो इस कार्य को करता है, जिस स्थिति में पहले कुछ बाइट्स (जैसे f=x=>) जो फ़ंक्शन घोषणा का हिस्सा हैं, आपके कुल में नहीं गिने जाते हैं। आपका कुल स्कोर गलत उत्तरों की संख्या है। कोड आकार से संबंध टूट जाते हैं।

के साथ परीक्षण करने के लिए संज्ञा:

un ami
un café
un chapeau
un concert
un crayon
un garage
un garçon
un lit
un livre
un mari
un musée
un oncle
un ordinateur
un pantalon
un piano
un pique-nique
un portable
un père
un sandwich
un saxophone
un stade
un stylo
un théâtre
un téléphone
un voisin
une botte
une boum
une chaise
une chaussette
une chemise
une clarinette
une copine
une femme
une fille
une glace
une heure
une lampe
une maison
une montagne
une personne
une piscine
une pizza
une radio
une raquette
une salade
une souris
une sœur
une table
une télé
une voiture

6
मैं सूची में संयुक्त राष्ट्र को जोड़ने के लिए सिर्फ चीजों को कठिन बनाना होगा।
२००:०००

जवाबों:


23

सीजाम, 0 गलत, 32 29 बाइट्स

यह कोड कुछ विषम वर्णों का उपयोग करता है (उनमें से कुछ unprintable), लेकिन वे सभी विस्तारित ASCII श्रेणी में अच्छी तरह से हैं। इसलिए फिर से, मैं प्रत्येक चरित्र को एक बाइट के रूप में गिन रहा हूं।

"un"'el2b"zPB:  ":i+:%2/*

अनपेक्षित वर्णों के कारण, मुझे यकीन है कि स्टैक एक्सचेंज कुछ निगलता है, इसलिए आप कोड को वर्ण काउंटर से कॉपी करना चाह सकते हैं (यह यूटीएफ -8 एन्कोडिंग के साथ बाइट्स दिखाता है, जो इस चुनौती के लिए उप-समरूप है; साथ ही, लिंक doesn भी; t फ़ायरफ़ॉक्स में काम करने लगता है, लेकिन क्रोम में है)।

इसका परीक्षण यहां करें।

चैट में कुछ और चर्चा के बाद, हमें लगा कि रेगेक्स गोल्फिंग हमें बहुत आगे नहीं ला पाएगी। तो मेरा एक पहले (मजाक) सुझाव के बाद हम कुछ कार्यों के साथ शब्दों के चरित्र कोड में हेरफेर करना शुरू कर दिया, जैसे कि एक समूह के सभी शब्द कुछ संपत्ति के साथ एक नंबर प्राप्त करेंगे जो जांचना आसान है। और हम उम्मीद से ज्यादा भाग्यशाली हो गए! यहाँ कोड को शब्दों का क्या करना है:

  • शब्द में वर्णों को उनके कोड बिंदुओं में परिवर्तित करें।
  • आधार 2 में अंकों के रूप में व्याख्या करें (हाँ, अंक 0 या 1 की तुलना में बहुत बड़ा होगा, लेकिन CJam इसे संभाल सकता है)।
  • बार-बार परिणाम modulo ले ... निम्न संख्या [133, 122, 80, 66, 58, 26, 20, 14, 9, 4]:। संख्याओं का यह क्रम स्वयं एक स्ट्रिंग के कोड बिंदुओं के रूप में एन्कोडेड है (यह वह जगह है जहाँ अजीब और अप्रतिबंधित अक्षर आते हैं)।
  • मानो जादू से, सभी 25 मर्दाना संज्ञाएं उपज देती हैं , 0या 1सभी 25 स्त्रीलिंग संज्ञाएं उपज देती हैं 2या 3इस प्रक्रिया के साथ। इसलिए यदि हम इसे 2(पूर्णांक विभाजन) से विभाजित करते हैं तो हमें मर्दाना संज्ञा के लिए शून्य और स्त्री संज्ञा के लिए शून्य मिलते हैं।

इसे बंद करने के लिए, हम "un"स्टैक पर धक्का देते हैं, हम एकल को धक्का देते हैं e। फिर हम एसटीडीआईएन से इनपुट शब्द पढ़ते हैं और उपरोक्त गणना करते हैं, और अंत eमें परिणाम से गुणा करते हैं ।

मैंने पहले कभी किसी सूची में मोदुलो को नहीं मोड़ा है, और मुझे लगता है कि मैं फिर कभी नहीं ...

Xnor और Sp3000 के लिए बहुत से विचार चारों ओर विचारों को फेंकने और विभाजक श्रृंखला की खोज में मदद करने के लिए।


न केवल छोटा, बल्कि 2 मिनट तेज। डर!
डेनिस

@sudo;) ... दुर्लभ समय में से एक जो मैं आपको हरा पा रहा हूं ... मुझे आपकी व्याख्या में बहुत दिलचस्पी होगी हालांकि :)
मार्टिन एंडर

11
रुको, मैं उलझन में हूँ। यदि जादू मौजूद है, तो आप इसे मूर्खतापूर्ण प्रोग्रामिंग चुनौती साइट पर क्यों बर्बाद कर रहे हैं और विश्व शांति या कुछ और हल नहीं कर रहे हैं? (नहीं, लेकिन गंभीरता से, ओह +1।)
दरवाज़े

22

रूबी, 0 गलत, 63 56 53 52 51 50 बाइट्स

सभी वर्ण विस्तारित ASCII में हैं , विशेष रूप से आईएसओ 8859-1 , इसलिए मैं प्रत्येक चरित्र को एक बाइट के रूप में गिन रहा हूं।

f=->s{s[/la|tt|i.e|[égdzœu]..$|^b|^f|so|^ta/]?'une':'un'}

ऐसा लगता है कि आपका टेस्ट सेट थोड़ा छोटा था। मैंने पीटर नॉरविग के मेटा रेगेक्स गोल्फर के साथ रेगेक्स उत्पन्न किया है ।

आप उपरोक्त फ़ंक्शन को कॉल कर सकते हैं जैसे f["ami"]। आप सभी परीक्षण मामलों की जांच करने के लिए इस टेस्ट हार्नेस का उपयोग कर सकते हैं:

puts "ami café chapeau concert crayon garage garçon lit livre mari musée 
      oncle ordinateur pantalon piano pique-nique portable père sandwich 
      saxophone stade stylo théâtre téléphone voisin botte boum chaise 
      chaussette chemise clarinette copine femme fille glace heure lampe 
      maison montagne personne piscine pizza radio raquette salade souris 
      sœur table télé voiture".split.map{|s|f[s]+" "+s}

इसे कोडिंग ग्राउंड पर टेस्ट करें।

संपादित करें: पीटर नॉरविग की दूसरी स्क्रिप्ट का उपयोग करते हुए मुझे एक अलग रेगेक्स मिला, जो वास्तव में एक बाइट लंबा था, लेकिन जिसे मैं दो बाइट्स द्वारा हाथ से छोटा कर सकता था ।

संपादित करें: Sp3000 ने उस पर मेरे हाल के रेगेक्स चैलेंज के लिए लिखे गए रेग्क्स गोल्फर को सेट किया, और मुझे उपयोग करने के लिए 36 35 34 बाइट रेगेक्स मिला । उसके लिए धन्यवाद!


2
मेटा रेगेक्स गोल्फ के बुरे सपने को दूर करना, क्योंकि tableइसका एक विकल्प है portable, और स्विचिंग जो मैच के लिए सेट है, बहुत उपयोगी नहीं है क्योंकि दूसरा सेट मैच के लिए आसान लगता है ...
Sp3000

13

CJam, 0 त्रुटियां ( 36 32 29 28 बाइट्स)

{"un"oEb72^"+ÕåWïº"583b2b='e*o}:F;

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

CJam दुभाषिया में परीक्षण मामलों की कोशिश करो ।

यह काम किस प्रकार करता है

"un"o       " Print 'un'.                                                  ";
Eb          " Consider the input a base 14 number.                        ";
72^         " XOR the result with 72.                                     ";
"+ÕåWïº"    " Push that string.                                           ";
583b2b      " Convert from base 583 to base 2.                            ";
=           " Retrieve the corresponding element (0 or 1) from the array. ";
'e*o        " Print 'e' that many times.                                  ";

बस एक हैश फ़ंक्शन और एक टेबल लुकअप।

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