একটি গণিত প্রতিযোগিতা গ্রেডার করুন


17

আমি যুক্তরাষ্ট্রে গণিত সম্মানিত সমিতি মু আলফা থিতা পরিচালিত গণিত প্রতিযোগিতায় অংশ নেওয়া উপভোগ করি। প্রতিযোগিতাগুলিতে, আমি 30-প্রশ্নের একাধিক পছন্দ পরীক্ষা দিই। E এর মাধ্যমে এ লেবেলযুক্ত প্রতিটি প্রশ্নে পাঁচটি পছন্দ রয়েছে

পরীক্ষায় আমার স্কোর প্রতিটি সঠিক উত্তরের জন্য চারটি পয়েন্ট, ফাঁকা বাম প্রশ্নের জন্য শূন্য পয়েন্ট এবং প্রতিটি ভুল উত্তরের জন্য নেতিবাচক এক পয়েন্ট।

উপরোক্ত স্কোরিং সিস্টেম অনুসারে একটি পরীক্ষা গ্রেড করে এমন একটি প্রোগ্রাম লিখুন। ইনপুটটিতে দুটি উপাদান থাকতে হবে: প্রতিক্রিয়াগুলির পরে একটি উত্তর কী। ফাঁকা থাকা প্রশ্নগুলি ফাঁকা স্থান হিসাবে ইনপুট করা হবে। প্রথম ইনপুটটিতে অবশ্যই AE অক্ষর থাকতে হবে (বা এ, আপনার পছন্দ) এবং এটি ধরে নেওয়া যেতে পারে যে ইনপুটটিতে কোনও সাদা স্থান নেই ites দ্বিতীয় ইনপুটটিতে অবশ্যই ফাঁকা স্থান এবং অক্ষর AE (বা ae) থাকতে হবে। 30-প্রশ্ন পরীক্ষার বাস্তবায়ন না করা ইনপুটগুলি Invalid testআউটপুট হিসাবে মুদ্রণ করতে হবে ।

আউটপুট গ্রেড বা হতে হবে Invalid test

বোনাস

যদি আপনার প্রোগ্রামটি চূড়ান্ত স্কোরের পরে ডান, ডান নম্বর ফাঁকা এবং সংখ্যা ভুল প্রিন্ট করে তবে (aR bB cW)20 বাইটটি খুলে ফেলুন।

নমুনা ইনপুট

CABBDCABECDBACDBEAACADDBBBEDDA    //answer key
CABEDDABDC BACDBBAADE  CBBEDDA    //responses

নমুনা আউটপুট

কোনও বোনাস নেই

73

বোনাস

73 (20R 3B 7W)

স্ট্যান্ডার্ড বিধি প্রয়োগ। বাইটস মধ্যে সংক্ষিপ্ত কোড।


প্রথম লাইনে স্পেস দিয়ে আমাদের কী করা উচিত?
lirtosiast

@ থমাসকওয়া প্রথম লাইনে ফাঁকা স্থান থাকা উচিত নয়। Invalid test
আর্কটরাস

2
উত্তরগুলি পোস্ট হওয়ার পরে আপনি বিধিগুলি পরিবর্তন করেছেন বলে মনে হচ্ছে এটি কমপক্ষে 2 টি অবৈধ করেছে। চ্যালেঞ্জ পোস্ট হওয়ার পরে উত্তরগুলিকে অকার্যকর করতে পারে এমন কোনও পরিবর্তন করুন। পোস্ট করার আগে প্রতিক্রিয়া জানাতে স্যান্ডবক্স ব্যবহার করা ভাল ধারণা।
অ্যালেক্স এ।

আমি মনে করি এটি আন্ডারহ্যান্ড
বিড়াল

কেস সংবেদনশীলতা সম্পর্কে? এছাড়াও, যদি আমার ভাষা ... সাদা স্থান দ্বারা অসন্তুষ্ট হয়? আমি কি ইনপুটটিতে শ্বেতস্পেসটি উল্লেখ করতে পারি তার পরিবর্তে আন্ডারস্কোর হওয়া উচিত?
বিড়াল

উত্তর:


7

পাইথ, 53 51

?&!-sJ.z+d<G5&FqR30lMJ+sm?qFd4_1CJ/eJd"Invalid test

এটি অনলাইনে চেষ্টা করুন

পুরো ইনপুটটিতে সমস্ত স্থান ফাঁকা হয়ে গেলে এবং a-eসরানো হয় এবং উভয় স্ট্রিংয়ের দৈর্ঘ্য রয়েছে কিনা তা পরীক্ষা করে দেখে পরীক্ষা করা হয় 30

স্কোর গণনা দুই লাইন একসঙ্গে zip করা, তারপর দ্বারা প্রতিটি জোড়া ম্যাপিং দ্বারা সম্পন্ন হয়: (letters are equal) ? 4 : -1। তারপরে সহজভাবে মানগুলি সংমিশ্রণ করা এবং দ্বিতীয় লাইনের ফাঁকির সংখ্যা স্কোরটিতে ফিরে।


1
কোনও ত্রুটি নেই। (বর্তমানে ডেনিসের উত্তরের চেয়ে কম বাইটস ...)
আর্কটরাস

7

গুরুতরভাবে , 86 বাইট

,`;l5╙¬=);' UΣS" ABCDE"=(**;l`Mi@)=YWé"Invalid test"0WX@Z```i@;(=5*(' =D+`(;l@)5╙¬=IMΣ

ইনপুট লাগে "CABBDCABECDBACDBEAACADDBBBEDDA", "CABEDDABDC BACDBBAADE CBBEDDA"

এটি অনলাইনে চেষ্টা করুন (আপনাকে ম্যানুয়ালি ইনপুট প্রবেশ করতে হবে কারণ পারমালিক্সগুলি উদ্ধৃতি পছন্দ করে না)

এখন বোনাস নিয়ে কাজ করা। না, বোনাস যুক্ত করার জন্য 20 বাইটের বেশি দাম পড়বে।

আমি জানতাম আমি কিছু ভুলে যাচ্ছি ... Invalid Testত্রুটির ঘটনায় মুদ্রিত হচ্ছিল না। ডেনিসকে আউট-গল্ফ করার আশা আছে।


এটা কি পারে? সিরিয়াসলি? তারপরে আমাকে এটি
upvote

4

জাভাস্ক্রিপ্ট (ES6), 134 বাইট

সম্পাদনা: প্রশ্নের প্রয়োজনীয়তা পরিবর্তন হয়েছে। এই উত্তরটি তখন থেকেই হয় যখন প্রোগ্রামটির প্রতিটি উত্তর অক্ষরটি এই, তা প্রতিটি প্রতিক্রিয়া চরিত্রটি এই বা স্পেস হয় তা নিশ্চিত করার প্রয়োজন হয় এবং তাদের উভয়ের দৈর্ঘ্য 30 হয়, অন্যথায় ফিরে আসুন Invalid test

(a,r)=>[...a].map((q,i)=>q>"E"|q<"A"?x=1:(c=r[l=i])==" "?0:c>"E"|c<"A"?x=1:c==q?s+=4:s--,s=x=0)&&x|l!=29|r.length!=30?"Invalid test":s

ব্যাখ্যা

(a,r)=>                   // a = answer string, r = responses string
  [...a].map((q,i)=>      // iterate over answers, q = answer, i = question number
    q>"E"|q<"A"?x=1:      // x = 1 if answer is invalid
    (c=r[l=i])==" "?0:    // c = question response, l = answer length, add 0 for space
    c>"E"|c<"A"?x=1:      // x = 1 if response is invalid
    c==q?s+=4:s--,        // add 4 if correct, subtract 1 if incorrect
    s=x=0                 // s = total score, x = is invalid
  )&&
    x|l!=29|r.length!=30? // check input lengths for validity
      "Invalid test":
      s                   // return the score

পরীক্ষা

<input type="text" id="answers" value="CABBDCABECDBACDBEAACADDBBBEDDA" /><br />
<input type="text" id="responses" value="CABEDDABDC BACDBBAADE  CBBEDDA" /><br />
<button onclick='result.innerHTML=(

(a,r)=>[...a].map((q,i)=>q>"E"|q<"A"?x=1:(c=r[l=i])==" "?0:c>"E"|c<"A"?x=1:c==q?s+=4:s--,s=x=0)&&x|l!=29|r.length!=30?"Invalid test":s

)(answers.value,responses.value)'>Go</button><pre id="result"></pre>



3

জাভাস্ক্রিপ্ট (ফায়ারফক্স 31+), 86 বাইট

(x,y)=>(r=i=0,[for(l of y)x[i++]==l?r+=4:r-=l!=' '],i!=30|i-x.length?'Invalid test':r)

ES7 এর জন্য প্রস্তাবিত অ্যারে বোঝাপড়া ব্যবহার করে। সুতরাং সমর্থন মুহুর্তের জন্য ফায়ারফক্সের মধ্যে সীমাবদ্ধ।

বোনাস সহ, 106 বাইট (126 - 20)

(x,y)=>[r=w=i=0,[for(l of y)x[i++]==l?r++:w+=l!=' '],`${r*4-w} (${r}R ${i-r-w}B ${w}W)`,'Invalid test'][i!=30||i-x.length?3:2]

সম্পাদনা: পূর্বে আমার সমাধানটি কেবল উত্তর বা প্রশ্নের দৈর্ঘ্য পরীক্ষা করে, এখন উভয়ই পরীক্ষা করে।


আপনি f=শুরুতে বাদ দিতে পারেন এবং বলতে পারেন যে এটি ল্যাম্বদা ফাংশন উত্পন্ন করে।
কনর ও'ব্রায়েন

1
@ সিও'বিʀɪᴇɴ ধন্যবাদ আমি সবসময় ভুলে যাচ্ছি এগুলি তাদের পরীক্ষা থেকে -_-
জর্জ রিথ

এটি বোনাস ছাড়াই উল্লেখযোগ্যভাবে খাটো হবে। 86 বাইট:(x,y)=>(r=i=0,[for(l of y)x[i++]==l?r+=4:r-=l!=' '],i!=30|i-x.length?'Invalid test':r)
ব্যবহারকারী 81655

@ ব্যবহারকারী81655 সত্য, ধন্যবাদ ... আমি এটির মধ্যে কিছুটা ধরা পড়েছি ... টেমপ্লেটের স্ট্রিংটি 34 বাইট
জর্জ রিথ

আমার খুব অনুরূপ উত্তর রয়েছে, তবে আমি এটির অনুলিপি করিনি (আমার প্রথম প্রচেষ্টাটির নজির রয়েছে, তবে আমি দৈর্ঘ্য পরীক্ষা না করায় এটি মুছে ফেলেছিলাম)। এটি বলেছিল: 3 টি উপাখ্যান সত্ত্বেও এটি বৈধ নয়, যেহেতু এ ব্যাপ্তিটি পরীক্ষা করে না ... E
edc65

2

জাপট , 71 বাইট

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়অনুবাদক

Ul ¥30©Vl ¥30«(U+V k"[A-E ]+" ?U¬r@VgZ ¥Y?X+4:VgZ ¥S?X:X-1,0 :`InvÃ. È.

.শেষের দুটি অংশ যথাক্রমে অপ্রিন্টযোগ্য ইউনিকোড অক্ষর U + 0017 এবং U + 0099 হওয়া উচিত।

কিভাবে এটা কাজ করে

Ul ==30&&Vl ==30&&!(U+V k"[A-E ]+" ?Uq r@VgZ ==Y?X+4:VgZ ==S?X:X-1,0 :"Invalid test
                    // Implicit: U = first input, V = second input
Ul ==30&&Vl ==30&&  // If both input lengths are 30, and
!(U+V k"[A-E ]+"?   // removing all ABCDE and spaces from (U+V) results in an empty string:
Uq r@            ,0 //  Reduce U with this function, starting with a value of 0:
VgZ ==Y?            //   If the matching char in V is equal to this char, 
X+4                 //    return previous value + 4.
:VgZ ==S?X          //   Else if the matching char in V is a space, return previous value.
:X-1                //   Else (if it's wrong), return previous value - 1.
:"Invalid test      // Else, return "Invalid test".
                    // Implicit: output last expression

আমি আশা করি উভয় দৈর্ঘ্য 30 এর সমান হয় তা নিশ্চিত করার একটি আরও ছোট উপায় আছে। পরামর্শগুলি স্বাগত!


2

হাস্কেল, 144 138 বাইট

a%b|map length[a,b]==[30,30]&&"ABCDE"!a&&"ABCDE "!b=show$sum$zipWith(?)a b|0<1="Invalid test"
l!s=all(`elem`l)
_?' '=0
x?y|x==y=4|0<1=0-1

বৈধতা ছাড়াই প্রায় 50 হবে। শোঁকা

ব্যবহার: "ABCDEABCDEABCDEABCDEABCDEABCDE" % "AAAAABBBBBCCCCCDDDDDEEEEEAAAAA"


1
!all(`elem`l)s6 বাইট সংরক্ষণ হিসাবে হিসাবে সংজ্ঞায়িত করা যেতে পারে ।
Zgarb

1
... অথবা Go pointfree: g=all.flip elem
নিমি

2

সি #, 162 154 148 134 বাইট

string g(string k,string a)=>k.Length!=30||a.Length!=30?"Invalid Test!":Enumerable.Range(0,30).Sum(e=>a[e]==' '?0:k[e]==a[e]?4:-1)+"";

ব্যবহার

g("CABBDCABECDBACDBEAACADDBBBEDDA", "CABEDDABDC BACDBBAADE  CBBEDDA")

পরীক্ষা

http://csharppad.com/gist/15f7c9c3c8cfce471ff2


আপনি এটি int s=0,i=0;for(;...3 বাইট সংরক্ষণ করতে পরিবর্তন করতে পারেন ।
LegionMammal978

আমি প্রথম ইনপুটটির জন্য 29 টি অক্ষর এবং দ্বিতীয়টির জন্য 31 টি ইনপুট দিলে এটি কাজ করবে না it
জোহান

@ নয়েস 2 [ই] == ''? 0: কে [ই] == এ [ই]? 4: -1) + ""; (134 অক্ষর) এবং জোহানস ইনপুট বিবেচনা করে।
স্টিফান শিনকেল

সমাধানের জন্য +1, তবে এটি কি যোগ্যতা অর্জন করবে? ওপি ড।
ইয়াতসি

জোহান দুর্দান্ত ক্যাচ! প্রতিনিধি এবং এনাম.আরঞ্জ বিটটি ব্যবহার করার বিষয়ে মতামত প্রকাশের জন্য @ স্টাফেনশচিনেল ধন্যবাদ জানায়। আমি কন্ডিশনটি ৩০ == (কে। লেন্থ এবং এ। লেন্থ) এ পরিবর্তন করে আরও তিনটি চর শেভ করতে সক্ষম হয়েছি
noisyass2 ২

2

রুবি, ৮১ টি অক্ষর

->t,s{r=0;30.times{|i|r+=t[i]==s[i]?4:s[i]>' '?-1:0};t.size==30?r:'Invalid test'}

নমুনা রান:

2.1.5 :001 > ->t,s{r=0;30.times{|i|r+=t[i]==s[i]?4:s[i]>' '?-1:0};t.size==30?r:'Invalid test'}['CABBDCABECDBACDBEAACADDBBBEDDA','CABEDDABDC BACDBBAADE  CBBEDDA']
 => 73 

2.1.5 :002 > ->t,s{r=0;30.times{|i|r+=t[i]==s[i]?4:s[i]>' '?-1:0};t.size==30?r:'Invalid test'}['CCCATCH','CABEDDABDC BACDBBAADE  CBBEDDA']
 => "Invalid test" 

2

জাভা, 183 169 বাইট

এটি জাভা 8 অনুশীলনের একটি দুর্দান্ত বিট ছিল:

String f(String a,String r){return a.length()==30&r.length()==30?""+IntStream.range(0,30).map(i->a.charAt(i)==r.charAt(i)?4:r.charAt(i)!=' '?-1:0).sum():"Invalid test";}

আমি জাভা গল্ফার নই, তবে আমি মনে করি আপনি String.valueOfকেবল একটি খালি স্ট্রিংয়ের অন্তর্ভুক্ত করে ( ""+IntStream....) সংরক্ষণ করতে পারবেন - আমিও বিশ্বাস করি জাভা অ-শর্ট সার্কিট করার অনুমতি দেয় এবং তাই আপনি একটিটিকে সরিয়ে &একটি বাইট সংরক্ষণ করতে পারেন ।
ভিজুয়ালমেলন

@ ভিজুয়ালমেলন দুর্দান্ত টিপস, ধন্যবাদ। স্ট্রিং.ভ্যালুওফ কতটা বাইট নিয়েছিল তা আমাকে বিরক্ত করছিল!
আরসিবি

2

ব্রেনফাক, 354 বাইট

+[--[>]<<+>-],----------[[<<<]>>->[>>>],----------]<<<[<<<]>>+[<-[-------<+>]<.+[---<+>]<.++++++++.[-<+++>]<-.+++++++++++.---.-----.-[---<+>]<-.---[-<++++>]<.+++[-<+++>]<.[---<+>]<----.+.>]>[[>,----------->+++++++[<---<<+++>>>-]<[<<+[>>+<<-]]>[>]<<<[>[>+>+<<-]>>[<<+>>-]>[>>>]>----<<<<[<<<]>>[-]]>[>-<-]>[>>[>>>]>-----<<<<[<<<]>[-]]>>]----[>+++<--]>--.<]

একটি দোভাষী দরকার যা আপনাকে সেল 0 থেকে বাম দিকে যেতে দেয় Out আউটপুট একটি স্বাক্ষরিত বাইট। উদাহরণস্বরূপ, বাইটটি উদাহরণ ইনপুটটির 0x49জন্য মুদ্রিত 0xFFহয় এবং একই প্রথম লাইন দিয়ে ইনপুট জন্য মুদ্রিত হয় তবে দ্বিতীয় লাইনটি "সি" এবং 29 স্পেসের সাথে প্রতিস্থাপিত হয়।

স্কোর 0 থেকে শুরু হয় এবং দ্বিতীয় লাইনের ইনপুট পড়ার সাথে সাথে এই পরিবর্তনগুলি করা হয়:

  • ইনপুট সঠিক: কিছুই করবেন না
  • ইনপুটটি ভুল: বিয়োগ 5
  • ইনপুট একটি স্থান: বিয়োগ 4

অবশেষে, 120 যোগ করা হয়েছে। এটি 0 থেকে শুরু না করে একটি নিখুঁত স্কোর ধরে নেওয়া এবং জরিমানা প্রয়োগের মতো কার্যত একই।

মন্তব্য সহ:

+[--[>]<<+>-]                          Get 29

,----------[[<<<]>>->[>>>],----------] Get first line of input; for each char sub one
                                       from the 29

<<<[<<<]>>+                            Add one to the cell that originally held 29

[                                      If the cell that originally held 29 is nonzero:

  Write "Invalid test"
  <-[-------<+>]<.+[---<+>]<.++++++++.[-<+++>]<-.+++++++++++.---.-----.-[---<+>]<-.---[-<++++>]<.+++[-<+++>]<.[---<+>]<----.+.

>]

>[                                     If the cell to the right is nonzero:

  This block is only ever entered if "Invalid test" isn't written!

  [                                      For all 30 characters of the first input:

    >,                                     Get char from second input to the right

    ----------                             Subtract 10 for consistency

    -                                      Subtract one more

    >+++++++[<---<<+++>>>-]                Subtract 21 (plus above lines = 32)

    <[                                     If it's nonzero:

      <<+[>>+<<-]                            Add 22 to the character

    ]

    >[>]<<<[                                 If the above block wasn't entered:

      >[>+>+<<-]>>[<<+>>-]                   Make a copy of the character from input 1

      >[>>>]>----                            Subtract 4 from the score

      <<<<[<<<]>>[-]                         Go to the cell just before first character

    ]

    >[>-<-]                                Subtract input 1 char from input 2 char

    >[                                     If the result is nonzero:

      >>[>>>]>-----                          Subtract 5 from the score

      <<<<[<<<]>[-]                          Go back to the result and set it to 0

    ]

    >>                                     Move on to next character

  ]

  ----[>+++<--]>--                       Add 120 to score (perfect score)

  .                                      Print score

  <                                      Go to an empty cell to kill loop

]

1

পাইথন 3, 187 179 175 165 155 151

lambda a,b:(['Invalid test',sum([-1,4][i==j]for i,j in zip(a,b))+b.count(' ')][len(a)==len(b)==30and set(a)^set('ABCDE')==set(b)^set('ABCDE ')==set()])

1

জাভাস্ক্রিপ্ট ES7, 102

যথারীতি বোনাস চেষ্টা করার মতো নয়।

(k,h,t=i=0)=>[for(x of h)t+=k[i++]==x?4:1-x?0:-1]|/[^ A-E]/.test(k+h)|i-30|k.length-i?"Invalid test":t

প্রথম ইনপুটটিতে অবৈধ জায়গাগুলি পরীক্ষা করা হচ্ছে (কারণ এটি আমার কাছে বোধগম্য) 112

(k,h,t=i=0)=>[for(x of h)(y=k[i++])>' '?t+=y==x?4:1-x?0:-1:k=h+h]|/[^ A-E]/.test(k+h)|i-30|k[i]?"Invalid test":t

উঃ, আমি চেষ্টা করার পরে বৈধতাটি আমার কোডের অর্ধেকটি নিয়েছিল: (k,r,s=0)=>/^[A-E]{30}$/.test(k)&&/^[ A-E]{30}$/.test(r)?Object.keys(k).map(i=>k[i]==r[i]?s+=4:s-=r[i]!=' ').pop():'Invalid Test'129 বাইট is
নিল

1

পাইথন 2.7, 131, 116, 109 , 139

আমি একটি "সংক্ষিপ্ত" অজগর সমাধান করার চেষ্টা করেছি ... ঠিক আছে এখানে, পরামর্শগুলি স্বাগত অপেক্ষা বেশি

lambda c,d:d.count(' ')+sum([-1,4][a==b]for a,b in zip(c,d)if b!=' ')if not set('ABCDE ')^set(c+d)and len(c)==len(d)==30 else'Test Invalid'

আরও কয়েকটি অক্ষর যুক্ত করা এটিকে আরও বেশি পঠনযোগ্য করে তোলে ...

def m(c, d):
    if len(c)==len(d)==30:return d.count(' ')+sum((a==b)*4+(a!=b)*-1 for a,b in zip(c,d)if b!=' ')
    return'Test Invalid'

1

প্রোলোগ, 165 বাইট

অর্ধেকেরও বেশি বাইট অবৈধ পরীক্ষার পরীক্ষার জন্য।

কোড:

p(X,X,4).
p(_,32,0).
p(_,_,-1).
A*B:-length(A,30),length(B,30),subset(A,`ABCDE`),subset(B,`ABCDE `),maplist(p,A,B,L),sum_list(L,S),write(S);write('Invalid Test').

ব্যাখ্যা:

p(X,X,4).                                       % If corresponding elements are equal, 4p
p(_,32,0).                                      % If answer is 'space', 0p
p(_,_,-1).                                      % Else, -1p
A*B:-length(A,30),length(B,30),                 % Check that input is of correct length
     subset(A,`ABCDE`),subset(B,`ABCDE `),      % Check that input has correct characters
     maplist(p,A,B,L),sum_list(L,S),write(S);   % Create a list of scores (L) and print sum
     write('Invalid Test').                     % If anything failed, write Invalid Test

উদাহরণ:

`CABBDCABECDBACDBEAACADDBBBEDDA`*`CABEDDABDC BACDBBAADE  CBBEDDA`.
73

এটি এখানে অনলাইনে চেষ্টা করে দেখুন


1

ম্যাটল্যাব, 92 90 বাইট

টম কার্পেন্টারকে আমার উত্তরটি 2 বাইট কমাতে সাহায্য করার জন্য ধন্যবাদ!

function c(q,a),if nnz(q)~=30,t='Invalid test';else s=q-a;t=5*nnz(~s)-sum(s<9);end,disp(t)

ফাংশন উত্তর শীট বরাদ্দ করে বলা যেতে পারে কুই এবং জমা উত্তর একটি । উদাহরণ:

c('CABBDCABECDBACDBEAACADDBBBEDDA','CABEDDABDC BACDBBAADE  CBBEDDA')

উত্তরটি কেবল পর্দায় মুদ্রিত হয়। উত্তর = 73 মুদ্রণের অনুমতি দিলে 8 বাইট সংরক্ষণ করা যায়


আপনি প্রতিস্থাপন 2 বাইট বাঁচাতে পারে numel(q)সঙ্গে nnz(q)
টম কার্পেন্টার

1

সি # 6.0 -> (270 - 20 = 250) 246 - 20 = 226 বাইট

void m(string b,string c){if((b+c).Length==60){var a=new int[3];int s=0;for(int i=0;i<30;i++){if(b[i]==c[i]){a[0]++;s+=4;}else if(c[i]==' ')a[2]++;else{a[1]++;s--;}}Console.Write(s+$" ({a[0]} {a[2]} {a[1]})");}else Console.Write("Invalid test");}

পঠনযোগ্য এবং অদম্য সংস্করণ:

    void m(string b, string c)
    {
        if ((b+c).Length==60)
        {
            var a = new int[3];
            int s = 0;
            for (int i = 0; i < 30; i++)
            {
                if (b[i]==c[i])
                {
                    a[0]++;
                    s+=4;
                }
                else if (c[i] == ' ')a[2]++;
                else
                {
                    a[1]++;
                    s--;
                }
            }
            Console.Write(s+$" ({a[0]} {a[2]} {a[1]})");
        }
        else Console.Write("Invalid test");
    }

সত্যই বোনাস পেতে চেয়েছিলেন: ডি


চমৎকার কাজ! সাধারণ ঠাট কিছু সংখ্যক এখানে প্রযোজ্য, আপনি ডিক্লেয়ার করতে পারেন iবরাবর সঙ্গে sবাইরে লুপ জন্য। আপনি varঘোষণা করতে ব্যবহার করতে পারেন a, 1 বাইট সংরক্ষণ (হুররে!)। {}আপনার কোডে আপনার অনেকগুলি কোঁকড়া ধনুর্বন্ধনী প্রয়োজন নেই যা বাইটগুলি ছাঁটাই করার জন্য সর্বদা একটি ভাল উপায় এবং চরগুলির সাথে তুলনা করার সময় এটি ASCII টেবিলটি দেখতে সর্বদা সার্থক (আপনি c[i]==' 'কোনও বৈষম্য ব্যবহার করে কিছুটা বাইট ছোঁড়াতে পারেন)। আপনার পেছনের দিকের স্ট্রিংগুলির মাধ্যমে গণনাও বিবেচনা করা উচিত - এই ক্ষেত্রে আপনি লুপটির জন্য কিছুটা পুনরায় আবার কমপক্ষে কমপক্ষে 1 বাইট সংরক্ষণ করতে পারেন।
ভিজ্যুমেলন

দুর্ভাগ্যক্রমে, আপনার জমাটি বর্তমানে মানদণ্ডগুলির সাথে জটিল নয়, কারণ এটি অবৈধ ইনপুটগুলি সনাক্ত করতে অক্ষম।
ভিজ্যুমেলন

@ ভিজুয়ালমেলন আহ, আমি এতটাই বোবা অনুভব করছি। আমি স্কুলে এই জমা লিখেছেন তাই আমি 'অবৈধ পরীক্ষা' কিছু যোগ করার জন্য ইত্যাদি আমি তাদের যুক্ত করতে হবে :) ভুলে গেছি
Yytsi

@ ভিজুয়ালমেলন হ্যাঁ, এটি ক্লাস শেষে স্কুলে জমা দেওয়া এবং লেখা হয়েছিল, আমি এটি সম্পাদনা করব। কৌশলগুলির জন্য ধন্যবাদ :)
Yytsi


0

সি, 273 - 20 = 253 বাইট

#include<stdio.h>
#include<string.h>
int main(int c,char**v){char*p=v[1],*q=v[2],*s=" ABCDE",r[]={0,0,0};if(strspn(p,s+1)!=30||p[30]||strspn(q,s)!=30||q[30])puts("Invalid test");else{for(;*p;++q)++r[(*p++!=*q)+(*q==' ')];printf("%d (%dR %dB %dW)",4**r-r[1],*r,r[2],r[1]);}}

আমি বোনাস নিয়েছি, যদিও এটি প্রিন্ট করতে আমার 23 বাইট খরচ হয়েছে। :-(

ব্যাখ্যা

#include <stdio.h>
#include <string.h>
int main(int c,char**v)
{
    char *p=v[1], *q=v[2],      /* arguments */
        *s=" ABCDE",            /* valid chars */
        r[]={0,0,0};            /* results - right, wrong, blank */

    if (strspn(p,s+1) != 30     /* validity check - answer key begins with [A-E]{30} */
        || p[30]                /* and ends there */
        || strspn(q,s) != 30    /* same for answers, but allow space, too */
        || q[30])
    {
        puts("Invalid test");
    } else {
        for ( ;  *p;  ++q)      /* for each answer */
            ++r[(*p++!=*q)+(*q==' ')]; /* increment the appropriate counter */
        printf("%d (%dR %dB %dW)",4**r-r[1],*r,r[2],r[1]); /* print result */
    }
}

উত্তরগুলি গণনা করার মতো অবৈধ ইনপুট চেক করার জন্য দ্বিগুণ কোড রয়েছে - চ্যালেঞ্জের আসল মাংসটি forশেষের কাছাকাছি লুপে রয়েছে। প্রকৃতপক্ষে এখানে এমন একটি সংস্করণ রয়েছে যা ধরে নিয়েছে ইনপুটটি সর্বদা বৈধ, 163-20 = 143 বাইটে:

#include<stdio.h>
int main(int c,char**v){char*p=v[1],*q=v[2],r[]={0,0,0};for(;*p;++q)++r[(*p++!=*q)+(*q==' ')];printf("%d (%dR %dB %dW)",4**r-r[1],*r,r[2],r[1]);}

এবং একটি যা একই ধারণা তৈরি করে এবং 133 বাইটে কেবল স্কোর ছাপায়:

#include<stdio.h>
int main(int c,char**v){char*p=v[1],*q=v[2],r[]={4,-1,0};for(c=0;*p;++q)c+=r[(*p++!=*q)+(*q==' ')];printf("%d",c);}

0

এসএএস 9.4, 291-20 = 271 বাইট (বোনাস সহ), বা 231 বাইট (বোনাস ছাড়াই)

বোনাস সহ:

data a;k='CABBDCABECDBACDBEAACADDBBBEDDA';r='CABEDDABDC BACDBBAADE  CBBEDDA';c=0;b=0;w=0;if length(k) ne 30 then put "Invalid test";do i=1 to 30;if substr(k,i,1)=substr(r,i,1) then c=c+1;else if substr(r,i,1) =' ' then b=b+1;else w=w+1;end;a=cat(c*4-w,' (',c,'R ',b,'B ',w,'W)');put a;run;

বোনাস ছাড়াই:

data a;k='CABBDCABECDBACDBEAACADDBBBEDDA';r='CABEDDABDC BACDBBAADE  CBBEDDA';c=0;if length(k) ne 30 then put "Invalid test";do i=1 to 30;if substr(k,i,1)=substr(r,i,1) then c=c+4;else if substr(r,i,1)ne' ' then c=c-1;end;put c;run;

সাসের প্রকৃতপক্ষে কোনও ইনপুট / আউটপুট নেই, সুতরাং আপনার কে = '..' কী দিয়ে এবং r = '..' প্রতিক্রিয়া সহ প্রতিস্থাপন করতে হবে। আউটপুট লগতে মুদ্রিত হয়।

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