আমার আর কত খ্যাতি দরকার?


23

প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ বিটা থেকে স্নাতক। শীঘ্রই আমরা একটি কাস্টম সাইট ডিজাইন পেয়ে যাব এবং এটির সাথে সুবিধার জন্য সুনামের সীমা আরও বাড়বে। প্রচুর ব্যবহারকারীরা সাইটে সুবিধা হারাবেন। সুতরাং আপনার কাজটি এমন একটি প্রোগ্রাম লেখা যা আমাদের বিশেষত্বগুলি বজায় রাখতে আমাদের আরও কত খ্যাতি অর্জন করতে হবে তা জানিয়ে দেয়।

কার্য

আপনার টাস্কটি হ'ল সংক্ষিপ্ত কোডটি লিখুন যে কোনও ব্যবহারকারীকে খ্যাতিমান পয়েন্টের সংখ্যার ভিত্তিতে, সাইট ডিজাইনের পরে তাদের বর্তমান সুবিধাগুলি কতটা বাড়তি খ্যাতি অর্জন করতে হবে find

ইনপুট আউটপুট

আপনি যে কোনও উপায়ে ইনপুট গ্রহণ করতে এবং আউটপুট দিতে পারেন, যতক্ষণ না এই নিয়মগুলি অনুসরণ করা হয়:

ইনপুট - 1 থেকে 250000+ সমেত একটি পূর্ণসংখ্যা । তোমার প্রোগ্রাম বা ফাংশন উচিত এই চেয়ে বড় সংখ্যার মানতে পারবেন, কিন্তু এটা উচিত নয় এই সীমার মধ্যে সংখ্যার গ্রহণ।

আউটপুট - একজন পূর্ণসংখ্যার সুনামের পয়েন্টগুলির প্রতিনিধিত্ব করে যা স্নাতক হওয়ার পরে ব্যবহারকারীকে তাদের বর্তমান সুবিধাগুলি বজায় রাখতে হবে।

দয়া করে কোনও মানক ফাঁক নেই ।

উদাহরণ অ্যালগরিদম

  1. ইনপুটটিতে পরিবর্তনশীল সেট iকরুন
  2. সেট পরিবর্তনশীল rপরিবর্তনশীল i
  3. যদিও rতালিকায় না থাকে beta:
    1. 1থেকে বিয়োগ r
  4. ইন nপজিশনে সেট করুন ।rbeta
  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 |

Testcases

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

লেখার সময় সমস্ত খ্যাতি গণনা সঠিক হয়
না আপনি যদি এখানে আপনার অতীত বা বর্তমান খ্যাতি গণনা করতে চান তবে নীচে মন্তব্য করুন এবং আমি সম্ভবত এটি যুক্ত করব ।


2
আপনার কয়েকটি পরীক্ষার কেস অন্তর্ভুক্ত করা উচিত।
ডেনিস

3
বিটাউ সাইটগুলিতে পাশাপাশি বিটিডব্লিউ 5 তে মেটা রেপ থ্রেশোল্ডে অংশ নেয় । পিপিসিজি এটি কাস্টমাইজ করেছিল যাতে নতুন ব্যবহারকারীরা স্যান্ডবক্স ব্যবহার করতে পারেন। স্নাতক হওয়ার পরে এটি পরিবর্তন করা উচিত নয়।
ডেনিস

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

@ এক্সনর ওয়েল, f(750)হওয়া উচিত 2250, না 1250:)
অরপাল

এখনও 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

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

সিজেম, 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

জাভাস্ক্রিপ্ট (ES6), 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

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]
ক্যালকুলেটরফলাইন

@ ক্যাটস আরেফ্লুফ ধন্যবাদ, আমি ভুলে গিয়েছিলাম যে আমি তাদের দশমিকের চেয়ে এখানে পরিবর্তন করেছি যেখানে এটি মূল্যবান।
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)স্ট্রেইটগুলির সাথে তালিকায় কেবল একটি প্রাইভেলিজ অন্তর্ভুক্ত রয়েছে যা নতুন সর্বোচ্চ প্রতিনিধি সেট করে (rep50৫ রেপ ব্যবহারকারীদের এখনও কমপক্ষে ৩ কেপি পোস্ট-গ্র্যাজুয়েশন প্রয়োজন, যদিও তারা 1 কে-তে প্রতিষ্ঠিত ব্যবহারকারী হয়ে থাকবে। তালিকাটি হ'ল) সর্বপ্রথম থেকে সর্বনিম্ন প্রতিনিধি থেকে বাছাই করা।


আপনি কি মনে করেন যে আপনি একটি কোড ব্যাখ্যা এবং ব্রেকডাউন যুক্ত করতে পারেন?
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 দ্বারা বিভক্ত Py b="0.15,0.35,0.5,0.75,1,1.25,1.5,2,3.5,4,5"পাইথনের সাথে সমান ।

split b by ","

এটি ডিলিমিটার হিসাবে bব্যবহার করে স্থানীয় ভেরিয়েবলকে একটি অ্যারেতে ,বিভক্ত করে। এই অ্যারেতে এখন বিটাতে খ্যাতি কাট অফ রয়েছে যা 1000 দ্বারা বিভক্ত করা হয়েছে Py 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 বার, সঙ্গে repeates i11 ক্রম 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) পুনরাবৃত্তির শেষে হবে repeat সি বা জাভা এর অনুরূপ }। লাইভকোড end 'insert contruct nameএকটি repeatলুপ, আন if, switchইত্যাদি শেষ করতে সিনট্যাক্স ব্যবহার করে ...

return r-c

মোটামুটি স্ব-ব্যাখ্যামূলক।

end g

ফাংশন শেষ g


একজন নতুন ব্যবহারকারী আমার চ্যালেঞ্জের উপর একটি উত্তর পোস্ট করেছেন ? আমি সম্মানিত। +1 এবং সাইটে আপনাকে স্বাগতম।
wizzwizz4

কোড ব্যাখ্যা এবং ব্রেকডাউন যুক্ত করে আপনি এই পোস্টটি উন্নত করতে পারেন। (আপনার কোডের নীচে কোডটি রেখার মাধ্যমে কী করে তা ব্যাখ্যা করুন))
wizzwizz4

@ wizzwizz4 যোগ করেছেন ব্যাখ্যা।
পেনালোসা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.