आपकी चुनौती इनपुट को पाठ की एक पंक्ति के रूप में लेना है और इसे इस तरह से आउटपुट करना है।
इनपुट आउटपुट
इनपुट एक स्ट्रिंग होगा जिसमें केवल मुद्रण योग्य ASCII वर्ण होते हैं। पहले या अंतिम वर्ण कभी रिक्त स्थान नहीं होंगे, और एक पंक्ति में दो स्थान कभी नहीं होंगे। यह हमेशा कम से कम दो अक्षर लंबा होगा।
आपका आउटपुट एक ही स्ट्रिंग होना चाहिए, इंद्रधनुष के रंगों में परिवर्तित हो जाएगा जैसा कि नीचे वर्णित किया जाएगा। आउटपुट छवि के रूप में हो सकता है (किसी फ़ाइल में सहेजा गया है या किसी तरह अन्यथा उपलब्ध कराया गया है), या यह बस स्क्रीन पर परिणाम प्रदर्शित कर सकता है (जैसा कि नीचे संदर्भ कार्यान्वयन करता है)।
रूपांतरण
यह निर्धारित करने के लिए कि स्ट्रिंग के प्रत्येक अक्षर को किस रंग का होना चाहिए, निम्न एल्गोरिथम का उपयोग करें। ध्यान दें कि प्रत्येक अक्षर का अपना अलग रंग होता है । यह एक ढाल नहीं है!
यदि यह वर्ण एक स्थान है:
- ... यह कोई फर्क नहीं पड़ता, क्योंकि रिक्त स्थान वास्तव में नहीं हो सकता ... वैसे भी एक रंग है। बस एक जगह उत्पादन।
अन्यथा:
Let
i= स्ट्रिंग में इस चरित्र का सूचकांक (0-आधारित, इसलिए पहले अक्षर के लिए, यह है0), रिक्त स्थान की गणना नहीं। उदाहरण के लिए, स्ट्रिंग मेंfoo bar, यह मान होगा4के लिएa। दूसरे शब्दों में, यह है कि अब तक कितने गैर रिक्त स्थान का सामना किया गया है।आज्ञा देना
n= स्ट्रिंग में गैर-रिक्त स्थान की संख्या।इस पत्र का रंग अब एचएसएल बेलनाकार-समन्वय प्रणाली में व्यक्त किया जा सकता है , [hue = (
i/n) * 360 °, संतृप्ति = 100%, लपट = 50%] के रूप में।
नोट इन निर्देशों का मतलब है कि उस के लिए उत्पादन fooऔर f oo, ठीक वही होना चाहिए के बाद एक अतिरिक्त अंतरिक्ष के लिए छोड़कर f। यही है, सभी अक्षरों को समान रंगों को बनाए रखना चाहिए।
रूपांतरण की प्रक्रिया के लिए इसके अलावा नियम नीचे वर्णित हैं, में नियम अनुभाग।
संदर्भ कार्यान्वयन
यह जावास्क्रिप्ट में लिखा गया है, और आप इसे "रन कोड स्निपेट" बटन दबाकर आज़मा सकते हैं।
window.addEventListener('load', function() {
addRainbow('Your challenge is to take input as a line of text and ' +
'output it like this.');
});
// append this text rainbow-ified to the argument (document.body by default)
function addRainbow(text, el) {
(el || document.body).appendChild(makeRainbow(text));
}
// returns a <div> that contains the text in a rainbow font
function makeRainbow(text) {
var div = document.createElement('div');
var letterCount = text.replace(/ /g, '').length, spaceCount = 0;
text.split('').forEach(function(letter, idx) {
if (letter == ' ') ++spaceCount;
div.appendChild(makeLetter(letter, (idx - spaceCount) / letterCount));
});
return div;
}
// returns a <span> that contains the letter in the specified color
function makeLetter(letter, hue) {
hue = Math.floor(hue * 360);
var span = document.createElement('span');
span.appendChild(document.createTextNode(letter));
span.style.color = 'hsl(' + hue + ', 100%, 50%)';
return span;
}
नियम
किसी वर्ण के Hue मान की गणना करते समय, आपको लगभग निश्चित रूप से एक दशमलव (गैर-पूर्णांक) संख्या प्राप्त होगी। आप इसे निकटतम पूर्णांक में गोल कर सकते हैं, इसे फर्श कर सकते हैं, छत ले सकते हैं, या बस बिल्कुल भी गोल नहीं कर सकते हैं।
फ़ॉन्ट का आकार पठनीय होना चाहिए। यहां, इसे 10pt आकार के फ़ॉन्ट या अधिक के रूप में परिभाषित किया गया है।
आप पाठ को आउटपुट करने के लिए एक निश्चित-चौड़ाई के कैनवास या "ड्राइंग क्षेत्र" का उपयोग कर सकते हैं, लेकिन यह इस पोस्ट के पहले वाक्य में दिए गए उदाहरण को फिट करने में सक्षम होना चाहिए।
स्कोरिंग कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाएगा।




