स्वयंभू pangrams


12

Pangrams

फुर्तीली भूरी लोमड़ी आलसी कुत्ते के उपर से कूद गई।

यह एक पैंग्राम का एक उदाहरण है - एक वाक्य जिसमें कम से कम एक बार वर्णमाला के प्रत्येक अक्षर होते हैं।

एक स्वयं की गणना pangram एक वाक्य है कि मानदंडों को पूरा करता है अपने स्वयं के पत्र गिनती के एक विश्लेषण का निर्माण करके एक pangram हो रहा है।

इसे प्राप्त करने का एक उदाहरण वाक्य है

इस पैंग्राम में चार अस, एक बी, दो सी एस, एक डी, तीस एस, छह एफएस, पांच जी एस, सात एच, ग्यारह इस, एक जे, एक के, दो एल, दो एमएस, अठारह एनएस, पंद्रह ओएस, दो पीएस शामिल हैं। , एक क्यू, पांच रुपये, सत्ताईस एसएस, अठारह टीएस, दो हमारे, सात बनाम, आठ डब्ल्यूएस, दो एक्सएस, तीन वाईएस, और एक जेड।


चुनौती

पत्र इन्वेंट्री में अग्रणी होने वाले इनपुट के साथ एक फ़ंक्शन का उत्पादन करें। उदाहरण में, इनपुट "यह पैंग्राम होता है"। प्रत्येक पत्र की मात्रा लिखित रूप में होनी चाहिए और प्रदर्शित पत्र गणना में योगदान करना चाहिए।


नियम

  • ऑक्सफोर्ड कॉमा वैकल्पिक है
  • Z (या, हार्ड मोड के लिए, फ़ंक्शन में "और" और "और" के बीच स्विच करने की क्षमता शामिल करें) से पहले एक एम्परसेंड का उपयोग करें
  • प्रत्येक अक्षर कुल पत्र गणना की ओर गिना जाता है
  • कोई गैर-लिखित संख्या नहीं
  • यह इसलिए बाइट्स जीत में सबसे छोटा कोड है
  • Hono में यू शादीशुदा जोड़े के इस सप्ताह के अंत r, संख्या रानी के अंग्रेजी में लिखा जा सकता है। उदाहरण के nine hundred and ninety-nine Gsलिए G की ९९९ घटनाओं और nine hundred and nine Gs९ ० ९ के लिए।
  • परिमाण के आदेश मानक लघु-स्तरीय नामकरण सम्मेलन में लिखे जाने हैं

किनारे के मामले

  • कुछ ऐसे मामले हैं जहां कोड एक लूप में फंस जाएगा - उदाहरण के लिए, यदि दो ओएस हैं तो कोड तीन ओएस तक गिनती बढ़ाएगा, जिसके कारण कोड फिर से दो ओएस की गणना करेगा। तो वापस इस के लिए आ रहा समस्या को हल नहीं कर सकता से पहले हर दूसरे पत्र की गणना पर विचार इनपुट एक झूठी स्टार्टर और उत्पादन होने के लिए false, nullया एक खाली स्ट्रिंग।
  • यदि किसी पत्र में 999 से अधिक घटनाएं हैं, तो इनपुट को एक गलत स्टार्टर माना जाना चाहिए।

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

  • "इस पैंग्राम में" उदाहरण वाक्य का आउटपुट होना चाहिए

8
मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे पूरा यकीन है कि कुछ ऐसे मामले हैं जहाँ आप एक वैध समाधान का निर्माण नहीं कर सकते, उस मामले में आउटपुट क्या होना चाहिए? उदाहरण के लिए, यदि आपके पास एक स्ट्रिंग है जिसमें oगिनती के लिए शब्द के बिना दो -s हैं, तो जब आप इसे वर्तनी देते हैं two, तो पूरे स्ट्रिंग में तीन o-s होते हैं, जिसका अर्थ है कि शब्द अब गलत है, इसे स्विच करना फिर से गलत बनाता है। , आदि
नाइट

2
सबसे बड़ी लिखित संख्या क्या समाधान का समर्थन करना है? एक सौ, एक हजार, एक लाख?
नाइट

7
अच्छा पहला सवाल! हालाँकि, मैं व्यक्तिगत रूप से अधिकतम अक्षरों की संख्या को 999 या शायद 99 तक सीमित करने की सलाह दूंगा। यह उन भाषाओं के लिए चुनौती को और अधिक सुलभ बना देगा, जिनके पास टेक्स्ट बिल्ट-इन के लिए दशमलव नहीं है, जबकि सभी मज़े को संरक्षित करते हुए। (इसके अलावा, कुछ भाषाओं में लाखों अक्षरों के साथ प्रविष्टियों का परीक्षण करना भी संभव नहीं हो सकता है।)
अरनॉल्ड


1
Rob enjoys any sentence with two As, two Bs, two Cs, one D, thirty five Es, four Fs, three Gs, nine Hs, eight Is, two Js, one K, two Ls, one M, twenty two Ns, eighteen Os, one P, one Q, nine Rs, twenty three Ss, twenty three Ts, three Us, four Vs, eleven Ws, one X, seven Ys, & one Z.
चास ब्राउन

जवाबों:


6

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

def g(n):S=str.split;D=S('z one two three four five six seven eight nine');K=' fif six seven eigh nine';n,m=n/100,n%100;e,d=m/10,m%10;return' '.join([D[n],'hundred']*(n>0)+([S('ten eleven twelve thir four'+K)[d]+'teen'*(d>2)]if 9<m<20else[S('twen thir for'+K)[e-2]+'ty']*(e>0)+[D[d]]*(d>0)))
from random import*
X='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def f(p):
 T=set();s='';i=0
 while 1:
	Q=s.upper().count;t=p+' '+', '.join(['& '*(c=='Z')+g(Q(c))+' '+c+'s'*(Q(c)!=1)for c in X])+'.'
        if s==t:return i,t
	if t in T:t=''.join(c*max(1,t.upper().count(c)+(randint(0,6)-3)*(random()<0.25))for c in X)
	T.add(t);s=t;i+=1

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

फ़ंक्शन स्ट्रिंग उपसर्ग के रूप में fलेता है p; और एक पूर्णांक का एक टपल देता है जिसमें उठाए गए चरणों और ऑटोग्राम की संख्या का प्रतिनिधित्व किया जाता है।

फ़ंक्शन अपने अंग्रेजी स्ट्रिंग के लिए gएक नंबर एनकोड करता है 1<=n<=999; यह 291 बाइट्स लेता है, कुल बाइट की गिनती का लगभग आधा। कोड

Q=s.upper().count
t=p+' '+', '.join(['& '*(c=='Z')+g(Q(c))+' '+c+'s'*(Q(c)!=1)for c in X])+'.'

s(संभावित ऑटोग्राम-मैटिक) पैंग्राम में स्ट्रिंग को एन्कोड करता है t

हम प्रक्रिया पर लूप करते हैं, उस स्थिति की उम्मीद करते हैं जहां हम एक tऐसा पाते हैं जो tएक ऑटोग्राम (यानी, जहां t==s) है। यदि हम लूप में आते हैं, तो हम बेतरतीब ढंग से पूरी तरह से तदर्थ तरीके से अक्षरों की संख्याओं को कुरेदते हैं।

के अधिकांश मूल्यों के लिए p, यह प्रक्रिया TIO पर समाप्त होगी। आमतौर पर, 'विजेता' संयोजन खोजने से पहले लाखों संभावनाओं की जांच की जाती है।

मेरे पास कोई सबूत नहीं है, लेकिन मेरा अनुमान है: (ए) एक थकाऊ जानवर बल के अलावा खोजकर्ता जो ली सल्लो के यहाँ वर्णन करता है और हार्डवेयर (!) में लागू होता है, इस तरह की यादृच्छिक विधर्मी के बारे में है! जितना अच्छा मिल सके; और (बी) कई (सबसे?) प्रारंभिक वाक्यांशों के लिए कोई समाधान नहीं होगा p


map(chr,range(65,91))कुछ बाइट्स बचाता है।
ბიმო
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.