আপনার প্রতিনিধি পুনরায় গণনা করতে সহায়তা করুন!


12

কয়েকমাস আগে, আমরা প্রশ্নে উক্ত ব্যক্তিদের জন্য সম্মানিত খ্যাতি বাড়াতে মেটা নিয়ে আলোচনা করেছি । এখানে ভোটের জন্য আমাদের বর্তমান খ্যাতি সিস্টেমের বেসিকগুলি: 1

  • একটি প্রশ্ন upvote U5 খ্যাতি মূল্য।
  • একটি উত্তর upvote u10 খ্যাতি মূল্যবান।
  • একটি প্রশ্ন বা উত্তর ডাউনভোট d-2 খ্যাতি মূল্যবান।

একটি নতুন সিস্টেমের জন্য অনেকগুলি বিভিন্ন পরামর্শ দেওয়া হয়েছে, তবে বর্তমানের সর্বাধিক জনপ্রিয় উপরের মত একই, তবে প্রশ্ন আপভোটগুলি +10 রেপগুলিতে মাপা হয়েছে। এই চ্যালেঞ্জটি যদি এই সিস্টেমটি স্থাপন করা হয় তবে আপনি আরও কত উপার্জন করতে পারবেন তা গণনা করা।

একটি উদাহরণ তাকান। যদি ভোটদানের ক্রিয়াকলাপটি ছিল UUUUuuuuUUUUUduuudUU, তবে আপনি বর্তমান সিস্টেমের অধীনে 121 উপার্জন করতে পারবেন:

U x 4 x  5 =  20 =  20
u x 4 x 10 =  40 =  60
U x 5 x  5 =  25 =  85
d x 1 x -2 =  -2 =  83
u x 3 x 10 =  30 = 113
d x 1 x -2 =  -2 = 111
U x 2 x  5 =  10 = 121
Total:             121

তবে একই ক্রিয়াকলাপটি নতুন সিস্টেমের আওতায় 176 উপার্জন করবে:

U x 4 x 10 =  40 =  40
u x 4 x 10 =  40 =  80
U x 5 x 10 =  50 = 130
d x 1 x -2 =  -2 = 128
u x 3 x 10 =  30 = 158
d x 1 x -2 =  -2 = 156
U x 2 x 10 =  20 = 176
Total:             176

আপনি এই দৃশ্যটি থেকে 55 খ্যাতি অর্জন করবেন ।

এখনও অবধি, পরিবর্তিত প্রতিনিধি গণনা করা খুব কঠিন নয়; কেবলমাত্র Us এর সংখ্যা গণনা করুন এবং 5 দিয়ে গুণ করুন ভাগ্যক্রমে, রেপ সিস্টেমটি এত সহজ নয়: একটি রেপ ক্যাপও রয়েছে , যা আপনি একটি ইউটিসি দিনে ভোট থেকে সবচেয়ে সুনাম অর্জন করতে পারেন। এটি সমস্ত সাইটে 200 এ সেট করা আছে।

এছাড়াও, রিপ ক্যাপটি রিয়েল টাইমে প্রযোজ্য: আপনি যদি ইতিমধ্যে 196 টি রেপ অর্জন করে থাকেন এবং আপনি উত্তর উত্তোলন করেন তবে আপনার এখন 200 রেপ রয়েছে। এর ঠিক পরে যদি আপনি একটি ডাউনভোট পান তবে 2 টি rep 200 থেকে বিয়োগ করা হবে, সুতরাং আপনার 198 টি রেপ হবে।

ভোটদানের ক্রিয়াকলাপ সহ UUUuuuuUUUUuuuuUUUUUUUd, আপনি বর্তমান সিস্টেমের অধীনে 148 খ্যাতি অর্জন করবেন:

U x 3 x  5 =  15 =  15
u x 4 x 10 =  40 =  55
U x 4 x  5 =  20 =  75
u x 4 x 10 =  40 = 115
U x 7 x  5 =  35 = 150
d x 1 x -2 =  -2 = 148
Total:             148

তবে আপনি নতুন সিস্টেমের অধীনে 198 উপার্জন করতে পারবেন:

U x 3 x 10 =  30 =  30
u x 4 x 10 =  40 =  70
U x 4 x 10 =  40 = 110
u x 4 x 10 =  40 = 150
U x 7 x 10 =  70 = 200 (rep capped)
d x 1 x -2 =  -2 = 198
Total:             198

সুতরাং, বৃদ্ধি 50 rep হয়

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা মাল্টি-লাইন স্ট্রিংয়ের মধ্যে নিয়ে যায় এবং উপরের অ্যালগরিদমের সাহায্যে প্রাপ্ত মোট প্রতিনিধিকে আউটপুট করে। প্রতিটি লাইন 1 টি ইউটিসি দিনের হিসাবে গণনা করা হয়, সুতরাং প্রতিলিপি ক্যাপ প্রতি লাইন একবারে প্রযোজ্য।

পরীক্ষার মামলা

(এক বা একাধিক লাইন ইনপুট এর পরে আউটপুট পূর্ণসংখ্যা হয়।)

UUUuudd
15

UUUuUUUUuUuuUUUUudUUUUuU
57

UUUuUUUUuUuuUUUUudUUUUuU
UUUuudd
72

uuuuuuu
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuuuuuu
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
0

UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
5

(empty string)
0

UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
4

UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
UuuUUUudUU
UUUUUUUUUuuuuuuUUUUUUuuUUUUUUuuuuuUUUUUUUUuUUUuuuuUUUUuuuUUUuuuuuuUUUUUUUUuuUUUuuUU
UUu
U
d
UU
UUUUUUUUUUUU
119

এটি কোড গল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড।

সম্পর্কিত চ্যালেঞ্জ: কোনও ভেক্টরের সীমাবদ্ধ ক্রমসংখ্যক সমষ্টি গণনা করুন , আপনার স্ট্যাক এক্সচেঞ্জের খ্যাতি গণনা করুন

1 এটি সিস্টেমের একটি অত্যন্ত সরলীকৃত সংস্করণ। কোনও উত্তর হ্রাস করার জন্য আপনি 1 জন প্রতিনিধিও হারাতে পারেন এবং এমন অপ্রত্যাশিত উপস্থিত রয়েছে যা অদ্ভুত এবং তাদের নিজস্ব নিয়মগুলি অনুসরণ করে ; এবং অবিস্মরণীয়, যার অনুসরণ করার নিয়মও নেই


1
দুর্দান্ত চ্যালেঞ্জ। খুব খারাপ এটি হওয়ার সম্ভাবনা নেই ...
অ্যাডমবর্কবর্ক

2
Down আপনি নিম্নমানের প্রশ্নের জন্য প্রতিনিধিত্ব হারাবেন না; শুধু উত্তর। আমাকে বিশ্বাস করুন: পি
জিওবিটস

@ মেগো সম্ভাব্য, তবে আমি নিম্নলিখিত পার্থক্যগুলি দেখতে পাচ্ছি: ক) পূর্ণ সংকলনের অ্যারের প্রয়োজন নেই, কেবলমাত্র শেষ মেয়াদে। খ) কোন নিম্ন বাউন্ড নেই, এবং উপরের বাউন্ডটি নির্দিষ্ট করা আছে। গ) সংখ্যার অ্যারের বিপরীতে ইনপুটটি একটি স্ট্রিং। ঘ) এই স্ট্রিংগুলির যথেচ্ছ পরিমাণগুলি, নিউলাইনগুলি দ্বারা পৃথক করা, প্রতিটি রান পৃথক পৃথকভাবে চালানো উচিত এবং ফলাফলটি পাওয়ার জন্য সংক্ষিপ্ত পরিমাণ করা উচিত।
ETH প্রোডাকশনগুলি

1
@ ইথ প্রডাকশনগুলি বি ব্যতীত সকলেরই I / O পার্থক্য। মূল সমস্যাটি এখনও একই রকম।
মেগো

উত্তর:


0

পার্ল, 104 91 + 2 = 93 বাইট

sub f{200*$.>$_[0]?$_[0]:200*$.}for(/./g){$a=/d/?-2:10;$s=f$s+$a;$o=f$o+$a-5*/U/}}{$_=$s-$o

-pপতাকা প্রয়োজন :

$ echo UUUuUUUUuUuuUUUUudUUUUuU | perl -p recalc.pl
57
$ echo "UUUuUUUUuUuuUUUUudUUUUuU
UUUuudd" | perl -p recalc.pl
72

ভাঙ্গন:

sub f {
  # '$.' contains the line number (1, 2, ... n)
  200*$. > $_[0] ? $_[0] : 200*$.
}
for(/./g){
  $a= /d/ ? -2  : 10;
  $s=f( $s + $a );
  # /U/ returns `1` if true
  $o=f( $o + $a - 5*/U/ )
}
}{ # Eskimo exit while loop (do this after the outer (from -p) iteration)
$_=$s-$o

2

ES6, 104 বাইট

s=>s.split`
`.map(l=>(g=U=>[...l].map(c=>(r+=eval(c))>200?r=200:0,r=0)|r,t+=g(10)-g(5)),u=10,d=-2,t=0)|t

প্রতিটি লাইনের আগে এবং পরে গণনার গণনা করে। আমার প্রথম ব্যবহার eval!


2

হাস্কেল, 98 93 বাইট

এই আরও গল্ফ ব্ল্যাকক্যাপ ধন্যবাদ। এখন, আমি এখন চ্যালেঞ্জগুলিতে লাম্বদা চেষ্টা করার চেষ্টা করি।

x#'U'=x
_#'u'=10
_#'d'=(-2)
a&b=foldl1(\d g->min 200$d+a#g)
g=sum.map(\x->(10&x)-(5&x)).lines

প্রথম 3 লাইনটি স্কোরিং, একটি & বি হল স্কোর, চ পার্থক্য এবং জি স্পেসিফিকেশনকে মেশানো ফাংশন।

ব্যবহার:

g"UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU" -- 4

আপনি দুটি শেষ লাইন একীভূত করতে পারবেন এবং 1 বাইট উপার্জন করতে পারবেন: g = Sum.map (\ x -> (10 & x) - (5 & x)) lines লাইন আপনি আরও চারটি বাইটের জন্য প্রথম বন্ধনী সরিয়ে ফেলতে পারেন: g = Sum.map (\ এক্স> 10 & এক্স-5 & x) এর .lines
BlackCap

এবং যদি আপনি মানচিত্র এবং ভাঁজটি একত্রিত করেন তবে আরও 3 বাইট: একটি & বি = ভাঁজ (200 d g-> মিনিট 200 $ d + a # গ্রাম) 0 বি
ব্ল্যাকক্যাপ

1

লুয়া, 196 বাইট

এই প্রোগ্রামটি ইনপুট হিসাবে একক একাধিক-লাইন আর্গুমেন্ট গ্রহণ করে এবং প্রতিবেদনে মোট পার্থক্য মুদ্রণ করে '

e,f,a=0,0,{u=10,U=10,d=-2}arg[1]:gsub(".-\n",function(s)x=0 y=0 s:gsub("[^\n]",function(c)t=x+a[c]x,t=t>199 and 200 or t,y+a[c]-(c<"V"and 5 or 0)y=t>199 and 200 or t end)e=e+x f=f+y end)print(e-f)

আমি ধরে নিয়েছি আমাকে ইনপুটটিতে একটি চলন্ত নতুন লাইন জিজ্ঞাসা করার অনুমতি দেওয়া হয়েছে, যদি আমি না থাকি তবে এখানে একটি 204 বাইট সমাধান রয়েছে যা এর প্রয়োজন নেই।

e,f,a=0,0,{u=10,U=10,d=-2}(arg[1].."\n"):gsub(".-\n",function(s)x=0 y=0 s:gsub("[^\n]",function(c)t=x+a[c]x,t=t>199 and 200 or t,y+a[c]-(c<"V"and 5 or 0)y=t>199 and 200 or t end)e=e+x f=f+y end)print(e-f)

অবহেলিত এবং ব্যাখ্যা

a={u=10,U=10,d=-2}            -- define the table containing the vote values
e,f=0,0                       -- initialize the total sums of rep'

arg[1]:gsub(".-\n",function(s)-- iterate over each line
  x=0                         -- score by the new scoring method for this UTC day
  y=0                         -- score by the old method
  s:gsub("[^\n]",function(c)  -- iterate over each non new-line character
    t=x+a[c]                  -- new score for today
    x=t>199 and 200 or t      -- reduce it to 200 if >=200
                        -- Do the same thing with the old scoring method
    t=y+a[c]-(c<"V"and 5 or 0)-- if c=="U", this question vote gives only 5
    y=t>199 and 200 or t      
  end)
  e=e+x f=f+y                 -- sum the scores over multiple days
end)
print(e-f)                    -- output the difference
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.