সংগ্রামী কলেজ শিক্ষার্থীর জিপিএ ক্যালকুলেটর


13

জিপিএ ক্যালকুলেটর

(জিপিএ = গ্রেড পয়েন্ট গড়)

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

কম্পিউটার সায়েন্স মেজর হওয়ার কারণে আপনি এই জিপিএ নির্ধারণের দুর্দান্ততম উপায়টি খুঁজতে চান। সবচেয়ে সুন্দর উপায়টি সংক্ষিপ্ততম কোড সহ! এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!

বিস্তারিত

  • আপনি যে কলেজটিতে যাচ্ছেন তা ক্রেডিট আওয়ারের সাথে বর্ধিত একটি বেসিক জিপিএ ব্যবহার করে।
  • এ এর একটি লেটার গ্রেড একটি 4.0, বি, 3.0, সি 2.0, ডি, 1.0, এবং এফ 0.0 হয়
  • আপনার জিপিএ একটি ওজনযুক্ত জিপিএ, সুতরাং 4 ক্রেডিট আওয়ার ক্লাসে একটি এ 1 ক্রেডিট আওয়ার ক্লাসে এ এর ​​চেয়ে 4 গুণ বেশি গণনা করে (আরও ওজনের ব্যাখ্যার জন্য নীচের উদাহরণগুলি দেখুন)
  • ক্রেডিট আওয়ারস 1-4 থেকে শুরু করে
  • আপনার প্রোগ্রামে দুটি কমান্ড লাইন ইনপুট, গ্রেড এবং ক্রেডিট আওয়ারের তালিকা থাকা দরকার। কমান্ড লাইনের মাধ্যমে এগুলি আপনার প্রোগ্রামে ইনপুট করার সর্বোত্তম উপায় নির্ধারণ করতে পারেন। আপনাকে খুব বেশি ইনপুট সম্পর্কে চিন্তা করার দরকার নেই, তবে আপনার কোডটি 19 ক্রেডিট আওয়ারের সেমিস্টার পরিচালনা করতে পারে তা নিশ্চিত করুন।

    • অর্থাত ইনপুট: এ 1 বি 4 সি 2…
  • আপনার প্রোগ্রামটি অবশ্যই 3 টি অঙ্ক (অর্থাত্ X.XX) ব্যবহার করে জিপিএ আউটপুট করবে

  • আপনার জিপিএ দুটি দশমিক স্থানে গোল করতে হবে। আপনার যে কোনও উপায়ে গোল করুন (মেঝে, সিল, বেস, ইত্যাদি)

ইনপুট উদাহরণ (আপনার ডিজাইনের জন্য যে কোনও একটিতে সবচেয়ে ভাল কাজ করে তা চয়ন করুন)

  • A1B3C2F3B4
  • এ 1 বি 3 সি 2 এফ 3 বি 4
  • এ 1 বি 3 সি 2 এফ 3 বি 4
  • এ, 1, বি, 3, সি, 2, এফ, 3, বি, 4
  • ক 1, বি 3, C2, থেকে F3, B4 এ

বা উপরের যে কোনও সংমিশ্রণের মধ্যে আপনি সমস্ত গ্রেডের তালিকার ফর্ম্যাট ব্যবহার করেন, তারপরে তাদের ক্রেডিট সময়:

  • অর্থাৎ এবিএ 3 4 1 1

উদাহরণ

Input - A 3 B 4 A 1 A 1
Output - 3.56
Explanation: (4.0 * 3 + 3.0 * 4 + 4.0 * 1 + 4.0 * 1)/(3+4+1+1) = 3.555556 rounded off to 3.56 

Input - A 4 F 2 C 3 D 4
Output - 2.00
Explanation: (4.0 * 4 + 0.0 * 2 + 2.0 * 3 + 1.0 * 4)/(4+2+3+4) = 2 rounded off to 2.00

2
@ ডেভেলপিং ডেভেলপার দয়া করে জটিল I / O ফর্ম্যাটগুলি এড়াতে চেষ্টা করুন ।
জংহওয়ান মিন

1
@ জংহওয়ানমিন দয়া করে আমাকে জানান যে আপনি কোন আই / ও বিকল্পটি চেয়েছিলেন তা আমি নির্দিষ্ট করেছিলাম না? আমি প্রায় 6 টি বিভিন্ন নমনীয় বিকল্প দিয়েছি, তবে এই দৃশ্যে আসলে এটি ফিট করার জন্য এটি নির্দিষ্ট করা দরকার।
ডেভেলপিং

3
@ ডেভেলপিং ডেভেলপার Your GPA needs to be rounded to two decimal places: এটি অর্জনের জন্য, লোকেরা অতিরিক্ত কোড যুক্ত করতে হবে যা জিপিএ গণনার সাথে কিছুই করার নেই।
জংহওয়ান মিন

2
পিপিসিজিতে আপনাকে স্বাগতম। আমার নম্র মতামত প্রথম প্রথম প্রশ্ন।
এলপেড্রো

5
এটি মোটামুটি আকর্ষণীয় প্রশ্ন থাকা সত্ত্বেও, আমি হ্রাস পেয়েছি, কারণ, যেমনটি আমি আগেই বলেছি, 0 সেকেন্ডের সাথে পিছনে গোল করা এবং আউটপুট আউট করা এটি একটি বহুমাত্রিক চ্যালেঞ্জ করে তোলে; উত্তরগুলি অপ্রয়োজনীয়ভাবে বাইটগুলি যুক্ত করতে চলেছে, কেবল আউটপুট স্পেসের সাথে খাপ খাইয়ে দেওয়া, যা একটি চ্যালেঞ্জকে বিরক্তিকর করে তোলে এবং সামগ্রিক আইএমওকে আরও খারাপ করে তোলে।
দর্পিত coinheringaahing

উত্তর:


5

জেলি ,  15  21 বাইট (কোনও গোলাকার নয় 12)

কঠোর বিন্যাসের জন্য +6 বাইট (প্রায় কমই সম্ভব তবে এটি বিছানার সময়)

Oạ69.Ḟ×S×ȷ2÷⁹S¤RLDż”.

গ্রেড এবং সংশ্লিষ্ট ক্রেডিট সময় নিয়ে একটি সম্পূর্ণ প্রোগ্রাম যা গণনা করা জিপিএ প্রিন্ট করে (দ্রষ্টব্য: ওপিতে অনুমোদিত হিসাবে গোলাকার পদ্ধতিটি মেঝেতে রয়েছে)।

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

সঙ্গে কোন রাউন্ডইং 12 বাইট :

Oạ69.Ḟ×S÷⁹S¤

কিভাবে?

Oạ69.Ḟ×S×ȷ2÷⁹S¤RLDż”. - Link: list of characters, grades; list of number, creditHours
                      -                                   e.g. "AFBDC", [5, 2, 4, 1, 2]
O                     - cast to ordinals (vectorises)          [65,70,66,68,67]
  69.                 - literal 69.5
 ạ                    - absolute difference (vectorises)       [4.5,0.5,3.5,1.5,2.5]
     Ḟ                - floor (vectorises)                     [4,0,3,1,2]
      ×               - multiply by creditHours (vectorises)   [20,0,12,1,4]
       S              - sum                                    37
         ȷ2           - literal 100
        ×             - multiply                               3700
              ¤       - nilad followed by link(s) as a nilad:
            ⁹         -   chain's right argument, creditHours  [5, 2, 4, 1, 2]
             S        -   sum                                  14
           ÷          - division                               264.2857142857143
               R      - range                                  [1,2,3,...,264]
                L     - length                                 264
                 D    - digits                                 [2,6,4]
                   ”. - literal '.'
                  ż   - zip together                           [[2,'.'],6,4]
                      - implicit print (smashing)              2.64

@ নিমিমি - ভাল কথা, আমি কিছুটা মিস করেছি। সংশোধন করা হয়েছে।
জোনাথন অ্যালান


4

পার্ল 5 , 57 53 + 2 ( -an) = 59 55 বাইট

$c+=$F[1];$\+=$F[1]*=!/F/&&69-ord}{printf'%.2f',$\/$c

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

সম্পাদনা: 4 বাইট সংরক্ষণের জন্য ইনপুটটিকে অদলবদল করে

ইনপুট ফর্ম্যাট: লাইন পৃথক, গ্রেডগুলি অনুসরণ করে ক্রেডিট:

grade credits

উদাহরণ:

A 3
B 4
A 1
A 1


3

ওল্ফ্রাম ভাষা (গণিত) , 39 বাইট matic

N[(5-LetterNumber@#2/.-1->0).#/Tr@#,3]&

ক্রেডিট আওয়ারগুলির তালিকা এবং তারপরে গ্রেডগুলির একটি স্ট্রিং নেয়।

টিআইওতে কাজ করে না কারণ টিআইও ম্যাথমেটিকা ​​কার্নেল ব্যবহার করে (যা সুনির্দিষ্ট নির্ভুলতার সংখ্যা মুদ্রণ করতে চায় না)


2
-3 বাইট আপনি যদি ব্যবহার করেনTr

3
এটি দ্বিতীয় পরীক্ষার ক্ষেত্রে ব্যর্থ। এটি 1.85 প্রদান করে কারণ আপনি F = -1 গণনা করেন
J42161217

2
এখানে একটি 41 বাইটস ঠিক করা আছে:N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
J42161217

পছন্দ করেছেন আমার কোন ধারণা আমি মিস করে ... অতিরিক্ত প্রথম বন্ধনী চলন্ত দ্বারা নিচে golfed যেতে পারে আছে /.যদিও।
জংহওয়ান মিন

2

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

ছক পূরণ করা: A1B3C2F3B4

f=([c,d,...s],a=b=0)=>c?f(s,a+~'DCBA'.search(c,b-=d)*d):(a/b).toFixed(2)

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


কোন মুহূর্তে searchচেয়ে গল্ফিয়ার হয়ে যায় parseInt?
নীল

@ নীল parseIntসম্ভবত আরও কয়েকটি সমর্থিত গ্রেড সহ গল্ফায়ার হয়ে উঠবে। একটি সমস্যা হ'ল F = 0 এবং D = 1 এর মধ্যে ব্যবধান।
আর্নল্ড

হু, আমি খেয়ালও করিনি যে কোনও ই নেই ...
নিল

2

আর , 64 বাইট

function(G,H)sprintf("%.2f",(5-match(G,LETTERS[-5]))%*%H/sum(H))

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

ব্যবহারকারী 2390246 একটি বাগ ঠিক করার জন্য ধন্যবাদ!


আমি মনে করি আপনি বোঝাতে চেয়েছেনLETTERS[-5]
user2390246

@ ব্যবহারকারী 2390246 হ্যাঁ, অবশ্যই। এটা আমার বোকা ছিল।
জিউসেপ

2

জাভা, 211 বাইট

ইনপুট ফর্ম্যাট: A1B3C2F3B4

Golfed

interface A{static void main(String[] a){int p=0,t=0,h=0,s=0;for(int c:a[0].toCharArray())if(p++%2==0)t=c=='A'?4:c=='B'?3:c=='C'?2:c=='D'?1:0;else{s+=(c-=48)*t;h+=c;}System.out.print(Math.ceil(100d*s/h)/100);}}

Unglofed

static void main(String[] a) {
    int p=0, //position in string
    t=0, //temp var, used to store the grade between iterations
    h=0, //credit sum
    s=0; //sum of weighted grade

    for(int c:a[0].toCharArray())
        if(p++%2==0)
            //map c to grade value, assign to temp variable t
            t=c=='A'?4:c=='B'?3:c=='C'?2:c=='D'?1:0;
        else{
            //map c to credit value, add temp variable (grade from previous char) * value of this char (credit) to sum
            s+=(c-=48)*t;
            //also, add credit to credit sum
            h+=c;
        }
    System.out.print(Math.ceil(100d*s/h)/100); //grade sum / credit hours sum, to 2dp*/
}

অন্যান্য সংস্করণ

আমার অন্ত্রের ফ্রিলিং আমাকে বলেছিল যে একটি আলাদা ইনপুট ফর্ম্যাট (ABCF1324) ব্যবহার করা কোডটি ছোট করে তুলবে। দেখে মনে হচ্ছে এটি হয়নি। নীচের সংস্করণটি 234 বাইট দীর্ঘ।

Golfed

interface A{static void main(String[] b){char[] a=b[0].toCharArray();int l=a.length/2,h=0,s=0,g,c,i;for(i=0;i<l;i++){g=a[i];g=g=='A'?4:g=='B'?3:g=='C'?2:g=='D'?1:0;c=a[i+l]-48;s+=g*c;h+=c;}System.out.print(Math.ceil(100d*s/h)/100);}}a

Ungolfed

static void main(String[] b) {
    char[] a=b[0].toCharArray(); //char array
    int l=a.length/2, //first grade char
    h=0, //credit sum
    s=0, //sum of weighted grade
    g,c, //avoid declaration in for loop. grade and credit being iterated
    i; //avoid declaration in for loop
    for(i=0;i<l;i++) {
        g=a[i];//get char representing grade from array
        g=g=='A'?4:g=='B'?3:g=='C'?2:g=='D'?1:0; //convert to grade
        c=a[i+l]-48;//get char representing grade from array and convert to credit (48 is value of '0')
        s+=g*c; //add weighted grade to sum
        h+=c; //add credit to sum
    }
    System.out.print(Math.ceil(100d*s/h)/100); //grade sum / credit hours sum, to 2dp*/
}

হ্যালো এবং স্বাগতম! আপনার সম্পূর্ণ প্রোগ্রামগুলির সাথে উত্তর দেওয়ার দরকার নেই, যাতে আপনি এর মতো প্রচুর বাইট চিপ করতে পারেন।
নিসা

2

জাভা 1.8 , 287 249 বাইট

-38 বাইটটি বাম্পটিয়াসকে ধন্যবাদ জানায়

Golfed

static String N(String[]j){float g=0;float b=0;for(int i=0;i<j.length;i+=2){g=((m(j[i])*Float.parseFloat(j[i+1])+g));b+=Double.parseDouble(j[i+1]);}return String.format("%.2f",g/b);}static float m(String l){return l.equals("F")?0:('E'-l.charAt(0));}

Ungolfed

interface C {
static void main(String[] z) throws Exception {
    String[] j = {"A", "4", "B", "3", "C", "2", "D", "1", "F", "1"};
    System.out.println(N(j));
}

static String N(String[] j) {
    float g = 0;
    float b = 0;
    for (int i = 0; i < j.length; i += 2) {
        g = ((m(j[i]) * Float.parseFloat(j[i + 1]) + g));
        b += Double.parseDouble(j[i + 1]);
    }
    return String.format("%.2f", g / b);
}

static float m(String l) {
    return l.equals("F") ? 0 : ('E' - l.charAt(0));
}
}

1
এটি ব্যবহার করে দৈর্ঘ্য হ্রাস করবেন? স্ট্যাটিক ফ্লোট এম (স্ট্রিং এল) {রিটার্ন l.equals ("এফ")? 0 :( 'ই'-এলসিআরএট (0));}
বাম্পটিয়াস কিউংহুইস্টল

1

জুলিয়া 0.6 , 46 43 42 বাইট

g%h=round(max.(69-Int.(g),0)⋅h/sum(h),2)

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

ব্যাখ্যা

ইনপুট ফর্ম্যাট: gগ্রেডের ভেক্টর; h: ক্রেডিট ঘন্টা ভেক্টর

  • g%h: পুনরায় সংজ্ঞায়িত %অপারেটর।
  • 69-Int.(g): রূপান্তর 'F','D','C','B','A'করার -1,1,2,3,4ছ প্রতিটি উপাদানের জন্য যথাক্রমে।
  • max.( ,0): ক্ল্যাম্পের পরিধি 0:4(উপাদান অনুসারে)।
  • বাকীটি সরল ভেক্টর গণিত।
  • রাউন্ডিংয়ের ব্যয় 9 বাইট।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.