गाजर लोकप्रियता सांख्यिकी


27

में PPCG चैट रूम उन्नीसवीं बाइट , कैरेट का उपयोग कर ^(या गाजर ) यह दर्शाता है कि आप सिर्फ तुम्हारा ऊपर पहले से की गई टिप्पणियों में से एक के साथ सहमत का एक तरीका है।

एक कैरेट संदेश में केवल N ^अक्षर होते हैं (जहाँ N एक धनात्मक पूर्णांक होता है) और इसका अर्थ है Nth पिछले संदेश के साथ समझौता। तो एक एकल का ^अर्थ है कि पिछले संदेश ^^के साथ समझौता , इसका मतलब है कि संदेश के साथ समझौता दो लाइनों के साथ, ^^^मतलब संदेश के साथ समझौता तीन लाइनों तक, और इसी तरह।

इसके अतिरिक्त, जब एक कैरेट मैसेज X एग्रीमेंट में होता है (उर्फ ओर इशारा करते हुए) एक और कैरेट मैसेज Y होता है, तो X के साथ एग्रीमेंट में जो बात होती है, उसके बारे में कहा जाता है। इसकी कई परतें हो सकती हैं और अंत में, सभी कैरेट संदेश एक गैर-लापरवाह संदेश के साथ समझौते का संकेत दे रहे हैं।

उदाहरण के लिए, यदि कोई चैट प्रतिलेख ऐसा दिखता है: (प्रति पंक्ति एक संदेश)

I like dogs           [line 1]
I like cats           [line 2]
^                     [line 3]
^^^                   [line 4]
^^                    [line 5]
I like turtles        [line 6]
^                     [line 7]
^^^                   [line 8]
^^                    [line 9]

फिर लाइनें 1, 2, और 6 गैर-लापरवाह संदेश हैं और अन्य सभी कार्यवाहक संदेश हैं जो गैर-लापरवाह संदेशों की ओर इशारा करते हैं:

  • पंक्ति 3 अंक सीधे पंक्ति 2 तक जाती है।
  • पंक्ति 4 अंक सीधे पंक्ति 1 पर है।
  • पंक्ति 5 अंक रेखा 3 की ओर, जो रेखा 2 की ओर इशारा करती है।
  • लाइन 7 अंक 6 लाइन के लिए।
  • पंक्ति 8 अंक पंक्ति 5 की ओर, जो रेखा 3 की ओर इशारा करती है, जो पंक्ति 2 की ओर इशारा करती है।
  • लाइन 9, रेखा 7 की ओर इशारा करती है, जो पंक्ति 6 ​​की ओर इशारा करती है।

इस प्रकार, उन उपयोगकर्ताओं सहित, जिन्होंने गैर-देखभाल संदेश लिखा है (और लोगों को अपने स्वयं के संदेश की परवाह नहीं है) हम यह निष्कर्ष निकाल सकते हैं:

  • 2 लोग सहमत हैं I like dogs(लाइन्स 1 और 4.)
  • 4 लोग इससे सहमत हैं I like cats(लाइन्स 2, 3, 5, और 8.)
  • 3 लोग सहमत हैं I like turtles(लाइन्स 6, 7, और 9.)

चुनौती

एक प्रोग्राम या फ़ंक्शन लिखें जो ऊपर दिए गए उदाहरण के समान मल्टीलाइन स्ट्रिंग में होता है जहां हर पंक्ति एक चैट संदेश का प्रतिनिधित्व करती है, जिसमें पुराने संदेश पहले आते हैं।

हर पंक्ति में कम से कम एक वर्ण होगा और कम से कम एक पंक्ति होगी। सभी संदेश या तो लापरवाह संदेश होंगे ^, या केवल अक्षरों और रिक्त स्थान ( [ a-zA-Z]+पुनर्वसन में) वाले गैर-लापरवाह संदेश होंगे ।

हर गैर-लापरवाह संदेश के लिए, किसी भी क्रम में, कुछ स्पष्ट प्रारूप में इससे सहमत लोगों की संख्या को आउटपुट करें जिसमें संदेश पाठ शामिल हो, जैसे।

2 - I like dogs
4 - I like cats
3 - I like turtles

या

I like cats (4)
I like dogs (2)
I like turtles (3)

या

{"I like cats" : 4, "I like turtles" : 3, "I like dogs" : 2}

आप मान सकते हैं कि:

  • लोग हमेशा अपने स्वयं के संदेशों से सहमत होते हैं और खुद की परवाह नहीं करते हैं।
  • कोई भी दो गैर-लापरवाह संदेश समान नहीं हैं।
  • पहले संदेश से पहले कैरेट संदेश चीजों की ओर इशारा नहीं करेगा।
  • लाइनों में अग्रणी या अनुगामी स्थान नहीं होंगे।

बाइट्स में सबसे छोटा कोड जीतता है।

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

bread is bread

1 - bread is bread

---

animals are fuzzy
^
^
^
^^^
^^
^^^^^^

7 - animals are fuzzy

---

pie
^
^^
pi
^
^^
^^^^
^
^^^^^
^^^^^
^^^
^^^^
^^
^
^^^^^^^^^

9 - pie
6 - pi

---

a
b
c
^
^
^

1 - a
1 - b
4 - c

---

a
b
c
^
^^
^^^

1 - a
1 - b
4 - c

---

a
b
c
^^^
^^^^
^^^^^

4 - a
1 - b
1 - c

---

W
^
^^
X
^^^
^^^^
Y
^^^^^
^^^^^^
Z
^^^^^^^
^^^^^^^^

1 - Y
3 - X
1 - Z
7 - W

---

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
^
ABCDEFGHIJKLMNOPQRSTUVWXYZ  abcdefghijklmnopqretuvwxyz

2 - ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
1 - ABCDEFGHIJKLMNOPQRSTUVWXYZ  abcdefghijklmnopqretuvwxyz

---

I like dogs
I like cats
^
^^^
^^
I like turtles
^
^^^
^^

2 - I like dogs
4 - I like cats
3 - I like turtles


4
अगले वर्ष, हम इस समस्या को यूनिकोड के साथ हल कर सकते हैं: blog.unicode.org/2015/05/unicode-90-candidate-emoji.html # 1F955 गाजर
रॉबर्ट फ्रेजर

👆 @RobertFraser
DDPWNAGE

जवाबों:


11

CJam, 18

qN/{_'^e=$\;}%$e`p

मार्टिन के लिए 2 बाइट्स का धन्यवाद समाप्त हो गया :)
इसे ऑनलाइन आज़माएं

स्पष्टीकरण:

q         read the input
N/        split into lines
{…}%      transform each line as follows:
  _       make a copy
  '^e=    count '^' characters in the string
  $       copy the corresponding earlier line from the stack
           if 0, it copies the current line again
  \;      discard the current line (from before the copied line)
          * after the loop, all caret lines have been replaced
          * with the original messages they agree with
$         sort the messages
e`        RLE encode
p         pretty print

8

पायथ, 19 18 बाइट्स

rSu+G@+HG_/H\^.zY8

प्रदर्शन

Aditsu के लिए एक समान दृष्टिकोण, विशेष रूप से rle भाग।

rSu+G@+HG_/H\^.zY8
  u           .zY      Reduce over the list input lines, starting with [].
                       G is the working value, H is the next input line.
   +G                  Append to the current value
      +HG              H prependeded to G
     @   _/H\^         Indexed at -(H.count('^')). This is H if no carets are in H,
                       or the appropiate distance from the end of G otherwise.
 S                     Sort
r                 8    Run length encode

4

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

x=>(r={},l=x.split`
`,l.map((_,i)=>(a=n=>(m=l[n])[0]=="^"?a(n-m.length):r[m]=r[m]+1||1)(i)),JSON.stringify(r))

व्याख्या

x=>(
  r={},                   // r = results
  l=x.split`
`,                        // l = array of messages
  l.map((_,i)=>           // check each message
    (a=n=>                // n = index of the message to agree with
      (m=l[n])            // m = message
        [0]=="^"          // if this is a caret message
          ?a(n-m.length)  // agree with the message it points to
          :r[m]=r[m]+1||1 // else add one to this message's agreements
    )(i)
  ),
  JSON.stringify(r)       // return the results as a string
)

परीक्षा


2

मैथेमेटिका, 83 77 बाइट्स

Tally@#[[Range@Length@#-#~StringCount~"^"//.x_:>x[[x]]]]&@StringSplit[#,"
"]&

2

रूबी 89

m={}
v={}
i=0
$<.map{|l|(t=l.chop![/\^+/])?v[m[i]=o=m[i-t.size]]+=1:v[m[i]=l]=1;i+=1}
p v

यह एक प्रोग्राम है जो STDIN से इनपुट प्राप्त करता है और परिणाम को प्रिंट करता है। यह चर में संदेशों और उनके वोटों का हिसाब रखता है v, जो कि ए Hash

ऑनलाइन डेमो:


2

पायथन 2.7 - 122 114 बाइट्स

def c(s):
 l=s.split('\n');c=len(l);d=[1]*c
 while c:
  c-=1
  if'^'in l[c]:d[c-len(l[c])]+=d[c]
  else:print l[c],d[c]

बहुत अधिक सीधा समाधान है, और विशेष रूप से गोल्फ नहीं है।


1

पायथन 2.7 96 बाइट्स

l=s.split();b={}
for i in l:_=l.index(i);l[_]=l[_-i.count('^')];b[l[_]]=b.get(l[_],0)+1
print b

स्पष्टीकरण: एल के स्थान पर ओवरराइट, l[_] = ...स्टोर के प्रत्येक कॉल को जिस शब्द को इंगित किया गया है, और एक शब्दकोष को वर्तमान गणना की वर्तमान गणना में जोड़कर या जोड़कर परिणामों का मिलान करने के लिए उपयोग किया जाता है।b[l[_]]


आप शायद कुछ बाइट्स के साथ शेव कर सकते हैं for _,i in enumerate(l):
मेगो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.