गीथूब मैसेंजर


13

लक्ष्य: एक स्ट्रिंग और आउटपुट लेने के लिए यह लक्ष्य कि संदेश प्रदर्शित करने के लिए कितने दिनों में कितने योगदान किए जाने चाहिए।

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

विशिष्टता

  • इनपुट
    • समर्थन पत्र प्लस स्पेस (यानी [A-Za-z ])
    • अंतरिक्ष एक कोरा है 3X7
    • नीचे दिए गए इस 5x7 डॉट मैट्रिक्स फ़ॉन्ट में अक्षरों को परिभाषित किया गया है
    • प्रत्येक अक्षर का आकार न्यूनतम बाउंडिंग आयत (जैसे l = 3x7, e = 5x5) है
  • रंग
    • 5 रंग हैं C0, C1, C2, C3, C4
    • CXके Yसाथ योगदान की आवश्यकता है3X <= y < 3(X+1)
    • पत्र को वैकल्पिक C1और बीच में होना चाहिएC2
    • रिक्त स्थान का कोई रंग नहीं है
    • प्रत्येक अक्षर का आकार आसन्न अक्षरों के साथ ठीक 1 कॉलम को ओवरलैप करना चाहिए
    • यदि किसी सेल में 1 से अधिक रंग हैं तो उपयोग करें C3
  • डॉट मैट्रिक्स
    • डॉट मैट्रिक्स गिथब का योगदान इतिहास ग्राफ है
    • अगर आज सोमवार, 1 मई, 2017 है:
 4-30    5-07    5-15
[5-01]   5-08    5-16
 5-02    5-09     .
 5-03    5-10     .
 5-04    5-12     .
 5-05    5-13    
 5-06    5-14    
  • उत्पादन
    • यह कैसे दिया जाता है, इस पर लचीला
    • (x, y) जोड़े
    • x वर्तमान तिथि से अधिक या बराबर तारीख है
    • y दिनांक पर किए जाने वाले योगदान की संख्या है, x
    • कालानुक्रमिक क्रम में होना चाहिए (ताकि मैं अपने कैलेंडर में भर सकूं)
    • यदि प्रत्येक तिथि के लिए, xदिए गए yयोगदान दिए गए हैं, तो इनपुट संदेश को गीथब ग्राफ (सही रंग के साथ) पर दिखाना चाहिए
    • पहली तारीख को जल्द से जल्द संभव होना चाहिए
  • स्कोरिंग
    • बाइट्स जीत में सबसे छोटा कार्यक्रम / समारोह

वर्णमाला

सीसी के तहत sylvan.black द्वारा बनाया गया

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


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

इन परीक्षण मामलों के लिए, मान लें कि वर्तमान तिथि 25 मई, 2017 है।

Input -> Output
-----    ------
l        5-28-17, 3
         6-3-17, 3
         6-4-17, 3
         6-5-17, 3
         6-6-17, 3
         6-7-17, 3
         6-8-17, 3
         6-9-17, 3
         6-10-17, 3
         6-17-17, 3

He       5-28-17, 3
         5-29-17, 3
         5-30-17, 3
         5-31-17, 3
         6-1-17, 3
         6-2-17, 3
         6-3-17, 3
         6-7-17, 3
         6-14-17, 3
         6-21-17, 3
         6-25-17, 3
         6-26-17, 3
         6-27-17, 3
         6-28-17, 9
         6-29-17, 9
         6-30-17, 9
         7-1-17, 3
         7-4-17, 6
         7-6-17, 6
         7-8-17, 6
         7-11-17, 6
         7-13-17, 6
         7-15-17, 6
         7-18-17, 6
         7-20-17, 6
         7-22-17, 6
         7-26-17, 6
         7-27-17, 6

o W      5-31-17, 3
         6-1-17, 3
         6-2-17, 3
         6-6-17, 3
         6-10-17, 3
         6-13-17, 3
         6-17-17, 3
         6-20-17, 3
         6-24-17, 3
         6-28-17, 3
         6-29-17, 3
         6-30-17, 3
         7-9-17, 6
         7-10-17, 6
         7-11-17, 6
         7-12-17, 6
         7-13-17, 6
         7-14-17, 6
         7-22-17, 6
         7-26-17, 6
         7-27-17, 6
         7-28-17, 6
         8-5-17, 6
         8-6-17, 6
         8-7-17, 6
         8-8-17, 6
         8-9-17, 6
         8-10-17, 6
         8-11-17, 6

C4 कभी इस्तेमाल किया जाता है?
FryAmTheEggman

@FryAmTheEggman यह नहीं है, लेकिन मैंने भ्रम से बचने के लिए इसे शामिल किया क्योंकि गितुब ने किंवदंती में 5 रंगों को प्रदर्शित किया है।
NonlinearFruit

डेट आउटपुट फॉर्मेट में आप कितने सख्त / ढीले हैं?
स्टीफन

1
@ स्टीफन यह लचीला है, जब तक यह मानव पठनीय है (उदाहरण May 20th, 2017: 3के लिए (3,"20/5/17"))
NonlinearFruit

आपको वह योगदान तालिका कहां से मिली?
एरिक आउटोलॉफ़र

जवाबों:


11

जावास्क्रिप्ट (ईएस 6), 743 बाइट्स

s=>(n=y=>d.setDate(d.getDate()+y),d=new Date,(h=d.getDay())&&n(7-h),r={},i=0,[...s].map(c=>{c<"!"?n(14):([...parseInt("jn4x733nx8gjw6nhricv6nx8dpz2vilui81vikl7b4nhridnzvgc1svznx8dji8g16fkg0vgc6341vg38oe9vh669ofvgm1dvjnhricvyvikl7aonhrjrjxvikmm29m0rqqp2nqmi6o0vbnf6dav2t14e4vbnjqpqs0g34o3tlqqwdso43oixtg1uyt8vvgddxn2hizrn2ahizrmdbhj4suq4gtytq8wgshvtzyvgc4mq7gzhwhz4g15ymf4vg72q9snx7r2f4jmffjm7jm5gavjhizrn2mjmkh3wogsgmianjm5gavcgwxpc3mhvni2kijhgqujjj8mcsgsjhgslnihw2cx75iqyv1cuhwdrh5d".substr((c.charCodeAt()-(c>"`"?71:65))*7,7),36).toString(2).slice(1).replace(/(0{7})+$/,"")].map(b=>(+b&&(r[+d]=r[+d]?9:i%2?6:3),n(1))),i++,n(-7))}),Object.keys(r).map(k=>[k,r[k]]).sort((i,j)=>i[0]-j[0]>0?1:-1).map(i=>[(new Date(+i[0])+"").slice(4,15),i[1]]))

आउटपुट फॉर्म में 2-आइटम सरणियों का एक सरणी है [dateString, contribs]। नीचे दिए गए स्निपेट से पता चलता है कि कैसे अधिक पठनीय होने में स्वरूपित किया जा सकता है।

संयुक्त राष्ट्र के golfed

s=>(
    n=y=>d.setDate(d.getDate()+y),
    d=new Date,
    (h=d.getDay()) && n(7-h),
    r={},
    i=0,
    [...s].map(c=>{
        c<"!" ? n(14) : (
            [...parseInt("<...>".substr((c.charCodeAt()-(c>"`"?71:65))*7,7),36).toString(2).slice(1).replace(/(0{7})+$/,"")].map(b=>(
                +b && (r[+d] = r[+d] ? 9 : i%2?6:3),
                n(1)
            )),
            i++,
            n(-7)
        )
    }),
    Object.keys(r)
        .map(k=>[k,r[k]])
        .sort((i,j)=>i[0]-j[0] > 0 ? 1 : -1)
        .map(i => [ (new Date(+i[0])+"").slice(4,15), i[1] ])
)

जहां <...>मैं प्रत्येक अक्षर के डॉट मैट्रिक्स फॉर्म को एनकोड करने के लिए बनाए गए 364-बाइट स्ट्रिंग वर्णों का प्रतिनिधित्व करता हूं।

व्याख्या

एन्कोडेड स्ट्रिंग:

jn4x733nx8gjw6nhricv6nx8dpz2vilui81vikl7b4nhridnzvgc1svznx8dji8g16fkg0vgc6341vg38oe9vh669ofvgm1dvjnhricvyvikl7aonhrjrjxvikmm29m0rqqp2nqmi6o0vbnf6dav2t14e4vbnjqpqs0g34o3tlqqwdso43oixtg1uyt8vvgddxn2hizrn2ahizrmdbhj4suq4gtytq8wgshvtzyvgc4mq7gzhwhz4g15ymf4vg72q9snx7r2f4jmffjm7jm5gavjhizrn2mjmkh3wogsgmianjm5gavcgwxpc3mhvni2kijhgqujjj8mcsgsjhgslnihw2cx75iqyv1cuhwdrh5d

प्रत्येक 7 अक्षर एक बेस -36 एनकोडेड बाइनरी नंबर है जिसमें उस इंडेक्स पर कैरेक्टर के लिए मैपिंग होती है। बाइनरी फॉर्म में हमेशा 1अग्रणी 0एस को संरक्षित करने के लिए एक अग्रणी होता है । उदाहरण के लिए, एक अपरकेस Tमानचित्र nqmi6o0, जो परिवर्तित करता है 1100 00001000 00011111 11100000 01000000। अग्रणी 1 को छोड़ना, प्रत्येक बिट एक दिन है। अधिकांश नंबरों में 5 कॉलम / सप्ताह होते हैं, इसलिए 5 से कम कॉलम वाले नंबरों में 7 अनुगामी शून्य के एक या दो सेट होते हैं जिन्हें बाद में पार्स करने से पहले हटा दिया जाता है ( .replace(/(0{7})+$/,""))। यह सभी एन्कोडेड स्ट्रिंग्स को एक समान लंबाई में रखता है, जिससे डिलिमीटर की आवश्यकता को हटा दिया जाता है।

इस पर सुधार करने के लिए शायद अभी भी अधिक तरीके हैं, विशेष रूप से पत्र मैपिंग को आगे संपीड़ित करने के साथ, इसलिए किसी भी विचार को साझा करने के लिए स्वतंत्र महसूस करें।

पत्र मैपिंग के द्विआधारी प्रारूप (जेएस सिंटैक्स, साथ उपसर्ग 0b), यहां पाया जा सकता है

बेसिक स्निपेट

f=
s=>(n=y=>d.setDate(d.getDate()+y),d=new Date,(h=d.getDay())&&n(7-h),r={},i=0,[...s].map(c=>{c<"!"?n(14):([...parseInt("jn4x733nx8gjw6nhricv6nx8dpz2vilui81vikl7b4nhridnzvgc1svznx8dji8g16fkg0vgc6341vg38oe9vh669ofvgm1dvjnhricvyvikl7aonhrjrjxvikmm29m0rqqp2nqmi6o0vbnf6dav2t14e4vbnjqpqs0g34o3tlqqwdso43oixtg1uyt8vvgddxn2hizrn2ahizrmdbhj4suq4gtytq8wgshvtzyvgc4mq7gzhwhz4g15ymf4vg72q9snx7r2f4jmffjm7jm5gavjhizrn2mjmkh3wogsgmianjm5gavcgwxpc3mhvni2kijhgqujjj8mcsgsjhgslnihw2cx75iqyv1cuhwdrh5d".substr((c.charCodeAt()-(c>"`"?71:65))*7,7),36).toString(2).slice(1).replace(/(0{7})+$/,"")].map(b=>(+b&&(r[+d]=r[+d]?9:i%2?6:3),n(1))),i++,n(-7))}),Object.keys(r).map(k=>[k,r[k]]).sort((i,j)=>i[0]-j[0]>0?1:-1).map(i=>[(new Date(+i[0])+"").slice(4,15),i[1]]))

I.value="Hello World";
(I.oninput=_=>O.innerHTML = f(I.value).map(e=>e.join(": ")).join("\n"))();
<input id="I">
<pre id="O">

इंटरएक्टिव उदाहरण

लाइब्रेरी कैल-हीटमैप का उपयोग करते हुए , मैंने उत्पादन की तारीखों का एक इंटरैक्टिव हीटमैप बनाया। यह काम करते समय सब कुछ परीक्षण करने के लिए इस्तेमाल किया गया था, और यह सिर्फ सादा साफ दिखता है।


1
इंटरैक्टिव उदाहरण वास्तव में भयानक है। अच्छी नौकरी!
नॉनलाइनयरफ्रूट

1
हे भगवान, किसी ने वास्तव में यह किया! अच्छा!
मैजिक ऑक्टोपस Urn

धन्यवाद दोस्तों! यह एक बहुत ही अच्छी चुनौती थी, काश और लोग भी इसका प्रयास करते। मैंने अपने उत्तर को बाइनरी मैट्रिक्स अक्षरों को बाइनरी में शामिल करने के लिए संपादित किया है ताकि अन्य समान विचार का उपयोग कर सकें।
जस्टिन मेरिनर

1
@JustinMariner मैंने अपनी प्रोफ़ाइल पर इसे पॉप किया, आशा है कि आप बुरा नहीं मानेंगे। अच्छा जवाब, खुशी है कि किसी ने इस चुनौती को पूरा किया :)
स्टीफन

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