मुझे और कितनी प्रतिष्ठा की आवश्यकता है?


23

प्रोग्रामिंग पहेलियाँ और कोड गोल्फ बीटा से स्नातक की उपाधि प्राप्त की है। जल्द ही हम एक कस्टम साइट डिज़ाइन प्राप्त करेंगे, और इसके साथ ही विशेषाधिकारों के लिए प्रतिष्ठा की सीमाएँ बढ़ जाएंगी। बहुत सारे उपयोगकर्ता साइट पर विशेषाधिकार खो देंगे। तो आपका काम एक प्रोग्राम लिखना है जो हमें बताता है कि हमें अपने विशेषाधिकार रखने के लिए कितनी अतिरिक्त प्रतिष्ठा की आवश्यकता होगी।

कार्य

आपका कार्य यह है कि सबसे कम प्रतिष्ठा लिखने के लिए एक अतिरिक्त प्रतिष्ठा की मात्रा का पता लगाने के लिए उपयोगकर्ता को साइट के डिजाइन के बाद अपने वर्तमान विशेषाधिकारों को रखने की आवश्यकता होगी, प्रतिष्ठा बिंदुओं की संख्या को देखते हुए।

इनपुट आउटपुट

आप इनपुट स्वीकार कर सकते हैं और अपनी इच्छानुसार आउटपुट दे सकते हैं, इसलिए जब तक यह इन नियमों का पालन करता है:

इनपुट - एक पूर्णांक 1 से 250000+ समावेशी । आपका प्रोग्राम या फ़ंक्शन इससे बड़ी संख्या को स्वीकार करने में सक्षम होना चाहिए, लेकिन इसे इस सीमा में संख्याओं को स्वीकार करना चाहिए

आउटपुट - प्रतिष्ठा की संख्या का प्रतिनिधित्व करने वाला पूर्णांक, उपयोगकर्ता को स्नातक के बाद अपने वर्तमान विशेषाधिकारों को रखने के लिए प्राप्त करना होगा।

कोई मानक खामियों , कृपया।

उदाहरण एल्गोरिथ्म

  1. iइनपुट के लिए चर सेट करें
  2. परिवर्तनशील rको चर सेट करें i
  3. जबकि rसूची में नहीं है beta:
    1. घटाएँ 1से r
  4. सेट nकी स्थिति के लिए rमें beta
  5. rके आइटम nपर सेट करें graduated
  6. oके परिणाम के लिए चर सेट करें r - i
  7. यदि o < 0:
    1. चर oको सेट करें 0
  8. आउटपुट चर o

टेबल्स

विशेषाधिकारों की तालिका जो बदल जाएगी

 | privilege name              | beta rep | graduation rep |
-+-----------------------------+----------+----------------+-
 | create tags                 |      150 |           1500 |
 | access review queues        |      350 |            500 |
 | cast close and reopen votes |      500 |           3000 |
 | established user            |      750 |           1000 |
 | edit questions and answers  |     1000 |           2000 |
 | create tag synonyms         |     1250 |           2500 |
 | approve tag wiki edits      |     1500 |           5000 |
 | access to moderator tools   |     2000 |          10000 |
 | protect questions           |     3500 |          15000 |
 | trusted user                |     4000 |          20000 |
 | access to site analytics    |     5000 |          25000 |
-+-----------------------------+----------+----------------+-
 | privilege name              | beta rep | graduation rep |

विशेषाधिकारों की तालिका जो नहीं बदलेगी

 | privilege name               | reputation |
-+------------------------------+------------+-
 | create posts                 |          1 |
 | participate in meta          |          1 |
 | create wiki posts            |         10 |
 | remove new user restrictions |         10 |
 | vote up                      |         15 |
 | flag posts                   |         15 |
 | talk in chat                 |         20 |
 | comment everywhere           |         50 |
 | set bounties                 |         75 |
 | create chatrooms             |        100 |
 | edit community wiki          |        100 |
 | vote down                    |        125 |
-+------------------------------+------------+-
 | privilege name               | reputation |

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

wizzwizz4                |   750 |  2250
cat                      |  2004 |  7996
Dennis ♦                 | 72950 |     0
Dr Green Eggs and Ham DJ |  4683 | 15317
New User                 |     1 |     0

नहीं सभी प्रतिष्ठा मायने रखता है लिखने के समय सही हैं
तो आप अपने चाहते हैं अतीत या वर्तमान प्रतिष्ठा गिनती यहाँ, नीचे सिर्फ टिप्पणी और मैं हूँ शायद जोड़ें।


2
आपको कुछ परीक्षण मामलों को शामिल करना चाहिए।
डेनिस

3
Btw मेटा पर भाग लेने के रूप में अच्छी तरह बीटा साइटों के लिए 5 में प्रतिनिधि सीमा। PPCG ने इसे अनुकूलित किया था ताकि नए उपयोगकर्ता सैंडबॉक्स का उपयोग कर सकें। जब हम स्नातक होते हैं तो इसे नहीं बदलना चाहिए।
डेनिस

1
@ मैं वास्तव में इसका इस्तेमाल करता था; धन्यवाद!
wizzwizz4

2
@ wizzwizz4 इसके लिए धन्यवाद; मेरा सिर फटने लगा है और मुझे केवल 250 और प्रतिनिधि चाहिए थे।
बिल्ली

1
@ wizzwizz4 नहीं, यह सिर्फ डेनिस के बगल में कम लगेगा :-)
XNOR

जवाबों:


4

अजगर, 101 बाइट्स

lambda n:max(0,eval("+(n>=%d)*%d"*7%(5e3,5e3,4e3,5e3,35e2,5e3,2e3,5e3,15e2,2e3,5e2,15e2,150,15e2))-n)

मुझे लगता है कि आप अपनी आवश्यकता के अनुसार नया प्रतिनिधि दे रहे हैं, वृद्धि नहीं। तो, f(750)होना चाहिए 1250, नहीं 2000। एक आसान तय होना चाहिए।
xnor

@xnor ठीक है, f(750)होना चाहिए 2250, नहीं 1250:)
orlp

अभी भी f(72950)देने की जरूरत है 0
xnor

आपकी evalचाल वाकई अच्छी है। इसे मेरी सूची संपीड़न के साथ मिलाकर 83: देता है lambda n:max(eval("+(n>=%s*500)*%s*500"*7%(.3,3,1,3,3,4,4,10,7,10,8,10,10,10))-n,0)
xnor

क्या आपको लगता है कि आप एक कोड स्पष्टीकरण और ब्रेकडाउन जोड़ सकते हैं?
wizzwizz4 6

4

जेली , 40 37 बाइट्स

19112203.3b11×ȷḞ>Ḥ¬×9999322D‘¤S×.ȷ_»0

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

यह काम किस प्रकार करता है

19112203.3b11×ȷḞ>Ḥ¬×9999322D‘¤S×.ȷ_»0  Main link. Argument: n

19112203.3b11                          Convert the float to base 11. Yields
                                       [10, 8, 7, 4, 3, 1, 0.30000000074505806].
             ×ȷ                        Multiply each by 1000.
               Ḟ                       Floor. Yields
                                       [10000, 8000, 7000, 4000, 3000, 1000, 300].
                 Ḥ                     Unhalve; yield 2n.
                >                      Compare each integer in the list with 2n.
                  ¬                    Negate the resulting Booleans.
                             ¤         Chain the three links to the left:
                    9999322D           Convert the integer to base 10.
                            ‘          Increment each digit. Yields 
                                       [10, 10, 10, 10, 4, 3, 3].
                   ×                   Multiply the Booleans with the corr. digits.
                              S        Compute the sum of the products.
                               ×.ȷ     Multiply the sum by 500.
                                  _    Subtract n.
                                   »0  Return the maximum of the difference and 0.

3

CJam, 38 बाइट्स

0000000: 72 69 5f 35 30 2f 22 64 50 46 28 1e 0a 03 22 66  ri_50/"dPF(..."f
0000010: 3c 3a 2b 22 fa c8 96 64 32 1e 0f 00 22 3d 69 65  <:+"...d2..."=ie
0000020: 32 5c 2d 55 65 3e                                2\-Ue>

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें1

यह काम किस प्रकार करता है

ri                        Read an integer n from STDIN.
  _50/                    Push a copy and divide it by 50.
     "…"                  Push the string with code points [100 80 70 40 30 10 3].
        f<                Compare each code point with n / 50.
          :+              Add the resulting Booleans.
            "…"           Push the string with code points
                          [250 200 150 100 50 30 15 0].
               =          Select the one at the index of the sum.
                i         Convert from character to integer.
                 e2       Multiply by 100.
                   \-     Subtract n from the product.
                     Ue>  Take the maximum of the difference and 0.

1 ध्यान दें कि कोड में एक शून्य बाइट है, जो कुछ ब्राउज़रों में समस्या का कारण बनता है।


3

जावास्क्रिप्ट (ईएस 6), 137 135 102 81 बाइट्स

n=>(n-=[5,0,.3,.6,1,2,3,4][[.3,1,3,4,7,8,10].findIndex(m=>m*500>n)+1]*5e3)<0?-n:0

यदि उपयोगकर्ता के पास 5000 या अधिक प्रतिष्ठा है findIndex, तो -1 लौटता है, तो इसका परिणाम यह होता है कि मैं आवश्यक नई प्रतिष्ठा के सरणी में अनुक्रमित कर सकता हूं। संपादित करें: इनपुट और आउटपुट सरणी स्केल करके 21 बाइट्स सहेजे गए।

   [.3,1,3,4,7,8,10]        Old reputations of note, divided by 500
    .findIndex(m=>m*500>n)  Skip ones that have been achieved
     +1                     Normalise the return value
  [5,0,.3,.6,1,2,3,4][]     Index into new reputation needed
   *5e3                     Scaling factor
 n-=                        Compare to the current reputation
()<0?-n:0                   Negate to return the requirement

कुछ उत्तर नए उपयोगकर्ता के परीक्षण के साथ काम नहीं करते हैं। यदि आपका काम नहीं करता है, तो कृपया इसे ठीक करें।
wizzwizz4

@ wizzwizz4 आह, मेटा विशेषाधिकार परिवर्तन? ज़रूर, यह एक साधारण तय है।
नील

क्या आपको लगता है कि आप एक कोड स्पष्टीकरण और ब्रेकडाउन जोड़ सकते हैं?
wizzwizz4 6

2

पायथन, 88 बाइट्स

lambda n:max(sum(500*b*(n>=a*500)for a,b in zip([.3,1,3,4,7,8,10],[3,3,4]+[10]*4))-n,0)

प्रत्येक नए बीटा विशेषाधिकार को पार करने के लिए, अगले स्नातक विशेषाधिकार प्राप्त करने के लिए आवश्यक प्रतिनिधि राशि जोड़ता है। फिर, अतिरिक्त प्रतिनिधि की आवश्यकता है नया प्रतिनिधि वर्तमान प्रतिनिधि शून्य से कम है, लेकिन 0 से कम नहीं है।

दोनों प्रतिनिधि सीमा सूची को गुणकों में प्रतिनिधि द्वारा छोटा किया जाता है 500


आप 9 बाइट्स 8 के [3]*2+[4]साथ-साथ बदल सकते हैं [3,3,4]
कैलकुलेटरफेलीन

@CatsAreFluffy धन्यवाद, मैं भूल गया कि मैंने उन्हें दशमलव से बदल दिया है जहां यह इसके लायक है।
xnor

2

पायथन 156 152 बाइट्स

s=str.split;n=input()
for k,v in map(s,s('5e3 5r4e3 5r3500 30./7r2e3 5r1500 10./3r500 6r1 1','r')):
 w=u(k);r=eval(v)*w
 if w<=n:print max(0,r-n);break

डेटा स्ट्रिंग ( 5e3 5r4e3 5r3500 30./7r2e3 5r1500 10./3r500 6r1 1) (old_rep1) (new_rep1/old_rep1)r(old_repr) (new_rep2/old_rep2)केवल निजी कॉलेजों सहित प्रारूप के साथ एक सूची है जो नए अधिकतम प्रतिनिधि सेट करते हैं (> 750 प्रतिनिधि वाले उपयोगकर्ताओं को अभी भी कम से कम 3k प्रतिनिधि पोस्ट-ग्रेजुएशन की आवश्यकता होती है, भले ही वे 1k पर स्थापित उपयोगकर्ता होंगे।) उच्चतम प्रतिनिधि से पहले सबसे कम प्रतिनिधि अंतिम क्रम में।


क्या आपको लगता है कि आप एक कोड स्पष्टीकरण और ब्रेकडाउन जोड़ सकते हैं?
wizzwizz4

@ wizzwizz4 हो गया।
पिपरी २४'१६ को

हम्म ... अब यह एक चतुर तकनीक है।
wizzwizz4

1

पायथ - 71 70 69 77 75 77 बाइट्स

eS,Z-@CM"\x00ǴϨלߐৄஸᎈ✐㪘丠憨"xKCM"\x00ŞˮϨӢǴלߐඬྠᎈ"e<#QK

टेस्ट सूट


यह wizzwizz4टेस्टकेस के लिए काम नहीं करता है ।
wizzwizz4

1
कुछ उत्तर नए उपयोगकर्ता के परीक्षण के साथ काम नहीं करते हैं। मैंने देखा है कि तुम्हारा नहीं है; कृपया इसे ठीक करे!
wizzwizz4

क्या आपको लगता है कि आप एक कोड स्पष्टीकरण और ब्रेकडाउन जोड़ सकते हैं?
wizzwizz4

1

लाइवकोड 8, 318 बाइट्स

function g c
    local b,g,r
    put c into r
    put "0.15,0.35,0.5,0.75,1,1.25,1.5,2,3.5,4,5" into b
    split b by ","
    put "0.3,0.1,0.6,0.2,0.4,0.5,1,2,3,4,5" into g
    split g by ","
    repeat with i=1 to 11
       if c>b[i]*1000 and not c>g[i]*5000 then put max(r,g[i]*5000) into r
    end repeat
    return r-c
 end g

जैसा कि wizzwizz4सुझाव दिया गया है, यहाँ एक स्पष्टीकरण है:

function g c 

gएक एकल पैरामीटर लेने के नाम से एक फंक्शन बनाएं ccउपयोगकर्ता की वर्तमान प्रतिष्ठा है। def g(c)पायथन में बराबर ।

local b,g,r

तीन स्थानीय चर बनाएँ: b, g, और rbबीटा में विशेषाधिकारों के लिए प्रतिष्ठा कटऑफ gहोंगे , स्नातक के बाद नई प्रतिष्ठा कटऑफ rहोंगे , और उपयोगकर्ता को अपने विशेषाधिकारों को बनाए रखने के लिए स्नातक होने के बाद कुल प्रतिष्ठा का प्रतिनिधित्व करना होगा।

put c into r

यह c(उपयोगकर्ता की वर्तमान प्रतिष्ठा) के मूल्य की प्रतिलिपि बनाता है rr=cपायथन में समतुल्य )

put "0.15,0.35,0.5,0.75,1,1.25,1.5,2,3.5,4,5" into b

ऊपर के समान, यह सेट बी में एक कॉमा-प्रिमिनिज्म सूची में बीटा में विभाजित है, जो 1000 से विभाजित है। b="0.15,0.35,0.5,0.75,1,1.25,1.5,2,3.5,4,5"पायथन में समतुल्य है ।

split b by ","

यह bएक चर में स्थानीय चर को विभाजित ,करता है, सीमांकक के रूप में उपयोग करता है। इस सरणी में अब बीटा में प्रतिष्ठा कटऑफ 1000 से विभाजित है। b.split(",")पायथन में समतुल्य ।

put "0.3,0.1,0.6,0.2,0.4,0.5,1,2,3,4,5" into g
split g by ","

ऊपर के समान, सिवाय इसके कि gअब स्नातक के बाद प्रतिष्ठा कटऑफ की एक सूची है, 5000 से विभाजित है

repeat with i=1 to 11

forअन्य भाषाओं में एक लूप के समान , यह 11 बार दोहराता है, iप्रत्येक बार अनुक्रम 1 से 11 में अगले मूल्य को सौंपा गया है। LiveCode में एरर्स इंडेक्स 1 से शुरू होता है for i in range(11)। पायथन में, यह होगा ।

if c>b[i]*1000 and not c>g[i]*5000 then put max(r,g[i]*5000) into r

यह फ़ंक्शन का मुख्य तर्क है। यह देखने के लिए जांचता है कि क्या iबीटा सूची की स्थिति में उपयोगकर्ता को विशेषाधिकार के लिए पर्याप्त प्रतिष्ठा है , यदि ऐसा है, और यदि स्नातक होने के बाद विशेषाधिकार के लिए उनके पास पर्याप्त प्रतिष्ठा नहीं है, तो यह चर सेट करता है r(कुल प्रतिष्ठा का प्रतिनिधित्व करता है कि उपयोगकर्ता उस विशेषाधिकार के लिए स्नातक होने के बाद प्रतिष्ठा कटऑफ तक स्नातक के बाद अपने विशेषाधिकार को बनाए रखना होगा (केवल अगर नई प्रतिष्ठा पिछले एक से अधिक है)। समतुल्य पायथन कोड होगा if c>b[i]*1000 and not c>g[i]*5000: r=max(g[i]*5000,r) रिपीट एंड्स रिपीट लूप। C या Java के समान }। LiveCode end 'insert contruct nameएक repeatलूप if, ए, switchआदि को समाप्त करने के लिए सिंटैक्स का उपयोग करता है ...

return r-c

काफी हद तक आत्म-व्याख्यात्मक।

end g

कार्य समाप्त करता है g


मेरी चुनौती पर एक नया उपयोगकर्ता एक उत्तर पोस्ट करता है ? मैं गौरवान्वित महसूस कर रहा हूं। +1 और साइट पर आपका स्वागत है।
wizzwizz4

आप कोड स्पष्टीकरण और ब्रेकडाउन जोड़कर इस पोस्ट को बेहतर बना सकते हैं। (यह बताएं कि कोड क्या करता है, लाइन से लाइन, आपके कोड के नीचे।)
wizzwizz4

@ wizzwizz4 जोड़ा स्पष्टीकरण।
पेनालॉसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.