टेक्स्ट से शब्द क्लाउड बनाएं


12

कोड को मानक इनपुट से पाठ लेना चाहिए:

The definition of insanity is quoting the same phrase again and again and not expect despair.

आउटपुट एक PNG फ़ाइल होनी चाहिए जिसमें उस पाठ के अनुरूप शब्द क्लाउड हो :

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

ऊपर शब्द बादल बनाया गया था एक विशेष ऑनलाइन आवेदन का उपयोग कर और यह शब्द फ़िल्टर किए गए Theऔर अन्य सामान्य शब्द ( of, is, and, not, और the)। चूंकि यह कोड गोल्फ है, इसलिए सामान्य शब्दों को फ़िल्टर नहीं किया जाएगा और मैं प्रत्येक कोडर की पसंद के लिए क्लाउड के द्वितीयक सौंदर्यशास्त्र को छोड़ देता हूं। यहां जांच की गई छवि के विपरीत, किसी भी शब्द को बाहर नहीं किया जाना चाहिए, आम या अन्यथा। किसी शब्द की परिभाषा नीचे दी गई है।

इस मामले में एक शब्द कुछ भी अल्फा-न्यूमेरिक है; नंबर विभाजक के रूप में कार्य नहीं कर रहे हैं। इसलिए, उदाहरण के लिए, 0xAFएक शब्द के रूप में योग्य है। विभाजक कुछ भी होगा जो अल्फा-न्यूमेरिक नहीं है, जिसमें .(डॉट) और -(हाइफ़न) शामिल हैं। इस प्रकार i.e.या pick-me-upक्रमशः 2 या 3 शब्दों में परिणाम होगा। संवेदनशील होना चाहिए - Thisऔर thisदो अलग-अलग शब्द होंगे, अलग-अलग 'भी होंगे wouldnऔर इसलिए t2 अलग-अलग शब्द होंगे wouldn't

टैग क्लस्ट किए हुए दिखाई देने चाहिए, लेकिन ओवरलैपिंग नहीं होने चाहिए और टेक्स्ट में उस शब्द की घटनाओं की संख्या के लिए फ़ॉन्ट आकार सीधे आनुपातिक होना चाहिए। शब्द केवल एक बार दिखाई देना चाहिए। इस मामले में विशिष्ट फ़ॉन्ट रंग की आवश्यकता नहीं है। शब्दार्थ संघ कोई आवश्यकता नहीं है।

संकेत - यह अन्य कोड गोल्फ मदद कर सकता है: एक पाठ में शब्दों को गिनें और उन्हें प्रदर्शित करें


कृपया समझाएं कि आप एक शब्द क्लाउड को क्या मानते हैं । इसके अलावा, मैं आपकी आउटपुट परिभाषाओं को नहीं समझता। क्या आप स्पष्ट कर सकते हैं कि आउटपुट से आपका क्या मतलब है जो प्रत्येक वर्ण के बाद नई लाइन के साथ प्रिंट होना चाहिए ?
होवार्ड

3
नमूना छवि आवश्यकताओं से मेल नहीं खाती है। यह एक प्रश्न भी बनाता है कि क्लाउड में प्रत्येक शब्द को कितनी बार दिखाई देना चाहिए, जिसका आप कहीं भी जवाब नहीं देते हैं।
पीटर टेलर

2
@TimSeguine मुझे नहीं लगता कि कोड-गोल्फ सबमिशन में किसी भी प्रकार की पुन: प्रयोज्य है ...
वांडर नौटा

1
@TimSeguine वैध चिंता का विषय है, लेकिन ऐसा करने के लिए मुफ्त ऐप्स के स्कोर होने पर मुझे इसकी आवश्यकता क्यों होगी।
एडुआर्ड फ्लोरिनेस्कु

1
आपका शब्द बादल निर्माता भी फ़िल्टर किया है लगता है of, is, and, not, और the
दरवाज़े

जवाबों:


7

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

पायथन 3, 363 308 293 274 वर्ण

import os,sys,re,collections as C
c=C.Counter()
n=sys.argv[1]
o="graph d{"
for w in re.findall("\w*",open(n).read()):c[w]+=1
for w,x in c.most_common(75)[1:]:o+="%s[fontsize=%s,shape=none];"%(w,x/5)
open(n+'.dot','w').write(o+"}")
os.system("fdp -Tpng %s.dot>%s.png"%(n,n))

इसे इस तरह कॉल करें: python cloud.py file.txt। स्क्रिप्ट fdpछवि उत्पन्न करने के लिए ग्राफविज़ के बल-निर्देशित ग्राफ़ जनरेटर का उपयोग करता है (यह file.txt.dot के लिए एक ग्राफविज़ फ़ाइल और फ़ाइल के लिए PNG छवि फ़ाइल को बाहर कर देगा)। इसका मतलब है कि आपको ग्राफविज़ को स्थापित करना होगा।

ऊपर दी गई छवि शेक्सपियर के हेमलेट से बना बादल है - आप बता सकते हैं, क्योंकि इसमें "होना या न होना" है। वहाँ भी कुछ आनंददायक बकवास पाया जा सकता है:

यह आप और मैं है, हे भगवान नहीं है कि हमें, अब क्या है ...


/5आपका पाठ कितना बड़ा है, इसके आधार पर आपको दूसरी-से-अंतिम पंक्ति में स्थिर होने की आवश्यकता हो सकती है। 5 हेमलेट के आकार के ग्रंथों के लिए अच्छी तरह से काम करता है, 500 बाइबल-लंबाई के इनपुट के लिए और इसी तरह।
वांडर नौटा

5

JAVASCRIPT 473

var wordCloud=function(e){var t=e.split(/[\s-.,;]+/);var n={},r;for(r in t){var i=t[r];n[i]=n[i]+1||1}var s=document;var o=s.createElement("canvas");o.width=600;o.height=400;o.style.display="none";s.body.appendChild(o);var u=o.getContext("2d");var a=0,f=50;for(var i in n){u.font=n[i]*50+"px monospace";u.fillText(i,a,f+n[i]*5);a+=i.length*n[i]*50;if(a>o.width*.6){a=0;f+=n[i]*5+100}}var l=o.toDataURL("image/png");var c=s.createElement("img");c.src=l;s.body.appendChild(c)}

अनगुल्ड डेमो

wordCloud("string;abc,test-omg shouldn't test omg lalala. s2 s2 s2")

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


क्या आप सुनिश्चित हैं कि यह PNG फ़ाइल बनाता है?
मैनेटवर्क

अब यह करता है !!!
राफेलकास्ट्रोक्टो 12

1
गोल्फिंग के बारे में, यह छोटा संस्करण 360 वर्णों में ऐसा लगता है: pastebin.com/C4dpYLP8
manatwork


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