গ্রেডে পূর্ণসংখ্যা চিহ্ন


30

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া (০ এবং তার বেশি নয়), এই নিয়মগুলি অনুসরণ করে এটিকে গ্রেডে রূপান্তর করুন:

A = 100+  
B = 90 - 99  
C = 80 - 89  
D = 70 - 79  
E = 60 - 69  
F = 59 and less.

এটি কিছুটা বিরক্তিকর অনুভূত হয়েছে, সুতরাং গ্রেডটি এ করুন + এটি 7,8 বা 9 এবং- 0,1 বা 2 হয় তবে এটিকে এফ এবং এ ক্ষেত্রে উপেক্ষা করুন।

একটি উদাহরণ:

ইনপুট:

65

আউটপুট:

E

পরীক্ষার কেস:

0  -> F
20 -> F
65 -> E
72 -> D-
75 -> D
80 -> C-
99 -> B+
102 -> A
864 -> A

কোনও পিছনে স্থান নেই। আউটপুট পরে একটি নতুন লাইন ভাল, কিন্তু এটি ধারাবাহিক রাখা। ফাংশন এবং সম্পূর্ণ প্রোগ্রাম উভয়ই ঠিক আছে।

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম কোড জয়ী। এটি একটি জিজ্ঞাসা উবুন্টু প্রশ্ন দ্বারা অনুপ্রাণিত হয়েছিল, সংখ্যার রেঞ্জগুলিতে লেটার গ্রেড বরাদ্দ করতে শেল স্ক্রিপ্ট কীভাবে লিখবেন? । উত্তরগুলি ব্যাশ এবং অজগর, তাই সামান্য বিলোপকারী।


লিডারবোর্ড:

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেম্পলেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes


1
একটি A+এবং হবে না A-? আমরা কেন তাদের উপেক্ষা করছি তা আমি দেখতে পাচ্ছি না।
ASCIIThenANSI

1
@ এসসিআইথেনানসী ব্যতিক্রমগুলি আরও আকর্ষণীয় করে তোলে এবং এ এর ​​পক্ষে কোনও সর্বাধিক নেই, তাই না+
টিম

1
এই শ্রেণিবদ্ধকরণ বোর্ডের একটি বাগ রয়েছে: ফিশ সংস্করণটি পুরানো এবং আমার উত্তরটি এর আগে before
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল এটি লেখা হয়েছিল যখন প্রথম পোস্টটি তখনও ডিফল্ট টাই ব্রেকার ছিল না (সুতরাং এটি কোনও সম্পর্ককে অর্ডার দেয় না)। আমি যদিও এটি এক পর্যায়ে ঠিক করার চেষ্টা করব (সম্ভবত এই চ্যালেঞ্জের জন্য নয়, তবে কমপক্ষে মেটার উত্স)।
মার্টিন এন্ডার

@ মার্টিনবাটনার আমি কেবল এটি দেখিয়েছিলাম।
ইসমাইল মিগুয়েল

উত্তর:


21

পাইথন 2, 72 70 62 বাইট

lambda n:"FA"[n>59:1+n/100]or chr(75-n/10)+"+-"[(n+3)%10/3::2]

এটি একটি বেনামে ফাংশন যা একটি int নেয় এবং গ্রেডটিকে স্ট্রিং হিসাবে ফিরিয়ে দেয়।

(টিপস জন্য @ মার্টিনব্যাটনার, @grc এবং @TheNumberOne ধন্যবাদ)


4
"EDCB"[n/10-6]->chr(75-n/10)
জিআরসি

কোনও চরিত্রটি খালি থাকতে পারে তা বেছে নেওয়ার কী চতুর উপায়!
xnor

11

সিজেম, 34 33 32 বাইট

riAmd)4/"- +"=S-\Ae<5e>_~'L+o5%<

ঠিক আছে, আমি এখন একাধিক পদ্ধতির চেষ্টা করেছি এবং এটি 33 এর নিচে পেতে অক্ষম, তাই এখানে ব্যাখ্যাটি এখানে যায়:

ri                                 e# Read the input and convert to integer
  Amd                              e# Take divmod of the input with 10. This leaves the
                                   e# number/10 and number%10 on stack
     )4/                           e# Increment the mod by 1 and integer divide by 4.
        "- +"=S-                   e# This converts 0,1,2 to 0 and 7,8,9 to 2. Pick - or +
                                   e# respectively and remove space in case of 3,4,5 and 6
                \Ae<5e>            e# To the divisor by 10 scope it to range of [5,10]
                       _~          e# Take a copy and do number * -1 - 1
                         'L+       e# Add it to char L. This gets us the required grade
                            o      e# Output the grade. This removes it from stack
                             5%    e# We now have scoped divisor on stack. Do mod with 5
                               <   e# Both 5 and 10 will return 0, in which case, we don't
                                   e# want the + or -. So we do a substr(0, 0).
                                   e# 5 represents F and 10, A. For others, it will do
                                   e# substr(0,X) where X > 0. Since the string is only
                                   e# 1 char long, it doesn't affect at all.

আপডেট : 1 বাইট ডেনিস দ্বারা একটি পয়েন্টার ধন্যবাদ সংরক্ষণ করা

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


কি করে s?
ডেনিস

@ ডেনিস চার / + - / স্পেসকে শেষের জন্য স্ট্রিংয়ে রূপান্তরিত করে<
অপ্টিমাইজার

এটি প্রয়োজন হবে না। Character String -একটি স্ট্রিং ধাক্কা।
ডেনিস

@ ডেনিস আহ, আপনি ঠিক বলেছেন। আমি মনে করি কিছু পূর্ববর্তী সংস্করণের জন্য, ব্যবহারটি আলাদা ছিল।
অপ্টিমাইজার

8

রেটিনা, 43 + 15 = 58 বাইট

...+
A
.[012]
$&-
.[789]
$&+
^9.
B
^8.
C
^7.
D
6.
E
\d.*
F

রেটিনা হ'ল মার্টিন বাটনার দ্বারা নির্মিত একটি রেজেক্স ভাষা, যেখানে বিজোড়-নাম্বারযুক্ত ফাইলগুলি মিলে যাওয়ার জন্য রেজেক্স এবং সম-সংখ্যাযুক্ত ফাইলগুলি এটির সাথে প্রতিস্থাপন করবে। প্রতিটি লাইন একটি পৃথক ফাইল, তাই আমি প্রতিটি অতিরিক্ত ফাইলের জন্য 15 বাইট যুক্ত করেছি।

ব্যাখ্যা

এটি 3 বা ততোধিক সংখ্যার সাথে কোনও এ তৈরি করে শুরু হয় একটি এ। এটি যোগ করে -যদি এটি 2-অঙ্কের সংখ্যার সাথে 0, 1, বা 2 +দিয়ে শেষ হয় এবং এটি যদি 7, 8 বা 9 দিয়ে শেষ হয় তবে সংখ্যাগুলি ম্যাপ করা হবে তাদের গ্রেড (যেমন 9 দিয়ে শুরু করে একটি নম্বর দেওয়া হয় বি)। বাকি যে কোনও সংখ্যা স্বয়ংক্রিয়ভাবে একটি এফ। দুর্ভাগ্যক্রমে, ;`অন্তর্বর্তী আউটপুট দমন করতে সর্বশেষে রেজেক্স বাদে সমস্তটিতে অবশ্যই চাপ দেওয়া উচিত। আপডেট: সংস্করণ ০.০.০ এর ডিফল্টরূপে মধ্যবর্তী আউটপুট বন্ধ রয়েছে, আমাকে কয়েকটি বাইট সংরক্ষণ করতে দেয়।


আপনি কি নিশ্চিত যে এফ কেসের জন্য এটি আউটপুট + এবং দেয় না?
টিম

1
@ টিম এটি করা উচিত নয়, কারণ \d.*পুরো স্ট্রিংয়ের সাথে মেলে এবং প্রতিস্থাপন করে +included
নিনজাবিয়ারমনেকি

আহ্ ঠিক আছে - আমি এখন দেখতে পাচ্ছি! :)
টিম

8

সি, 99 বাইট

আমি এখানে নতুন, আমি আশা করি আমি নিয়মগুলি অনুসরণ করছি।

char b[3];char*f(n){b[1]=0;n<60?*b=70:n>99?*b=65:(*b=75-n/10,b[1]=n%10<3?45:n%10>6?43:0);return b;}

এই ফাংশনটি প্যারামিটার হিসাবে চিহ্ন নেয় এবং গ্রেডকে NULL- সমাপ্ত স্ট্রিং হিসাবে প্রদান করে।

ব্যাখ্যা

সাদা স্পেস যুক্ত হয়েছে:

char b[3];

char *f(n) {
    b[1] = 0;
    n<60 ? *b = 70 :
    n>99 ? *b = 65 :
    (
        *b = 75 - n / 10,
        b[1] = n % 10 < 3 ? 45 : n % 10 > 6 ? 43 : 0
    );

    return b;
}

গ্লোবাল ভেরিয়েবলগুলি স্বয়ংক্রিয়ভাবে শূন্যে আরম্ভ করা হয়, তাই খ NUL দিয়ে পূর্ণ হয়। যেহেতু কেবলমাত্র প্রথম দুটি অক্ষরই স্পর্শ করা হয়েছে, গ্রেডের কেবলমাত্র একটি অক্ষর থাকলে আমাদের কেবল খ [1] এ একটি NUL রাখার বিষয়ে চিন্তা করতে হবে। এই NUL ফাংশনের একেবারে শুরুতে isোকানো হয়েছে। এন প্যারামিটার সুস্পষ্টভাবে অন্তর্নিহিত। গ্রেড যদি 60 এরও কম হয়, তবে এটি 'F' তে সেট করা হবে, যদি এটি 99 এর চেয়ে বড় হয় তবে এটি 'এ' তে সেট থাকে। অন্যান্য ক্ষেত্রে, বেস গ্রেড দেওয়া হয় 'E' - (n - 60) / 10, যা সহজ করে 75 - n / 10n % 10চিহ্নের ইউনিট সংখ্যা পায় যদি এটি 3 এরও কম হয় তবে a - সংযুক্ত করা হয়, যদি এটি 6 এর চেয়ে বড় হয় তবে এটি + সংযুক্ত থাকে, অন্যথায় খ [1] নাল হয় (যা এটি ইতিমধ্যে ছিল)।

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

#include <stdio.h>

char b[3];char*f(n){b[1]=0;n<60?*b=70:n>99?*b=65:(*b=75-n/10,b[1]=n%10<3?45:n%10>6?43:0);return b;}

int main() {
    printf("  0 -> %s\n", f(0));
    printf(" 20 -> %s\n", f(20));
    printf(" 65 -> %s\n", f(65));
    printf(" 72 -> %s\n", f(72));
    printf(" 75 -> %s\n", f(75));
    printf(" 80 -> %s\n", f(80));
    printf(" 99 -> %s\n", f(99));
    printf("102 -> %s\n", f(102));
    printf("864 -> %s\n", f(864));

    return 0;
}

Output:
  0 -> F
 20 -> F
 65 -> E
 72 -> D-
 75 -> D
 80 -> C-
 99 -> B+
102 -> A
864 -> A

পারফেক্ট :) সেখানে কিছুই ভুল নেই।
টিম

আপনার কোড এবং আমার মধ্যে পার্থক্য হ'ল একটি শব্দ "প্রিন্টফ" যা উপেক্ষা করা হলে 3 বাটের বেশি সঞ্চয় করা উচিত :)
Abr001am

7

পাইথ, 33 বাইট

+C-75K@S[/QTT5)1<-@"- +"/heQ4d%K5

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

ব্যাখ্যা:

                                     implicit: Q = input
        [/QTT5)                      create the list [Q/10, 10, 5]
       S                             sort
      @        1                     take the element in the middle
     K                               store in K (this results in a number between 5 and 10)
  -75K                               75 - K
 C                                   char with ASCII-value ...
                  @"- +"/heQ4        "- +"[(Q%10 + 1) / 4]
                 -           d       remove spaces
                <             %K5    slice [:K%5]
+                                    add these two chars and print

7

> <> (ফিশ), 78 71 বাইট

iii0)?/:0({:'6'(@@+?/'{'01.
;$-o:'4'(?\'7'(?;'+'o
 ;o'A'\   \'-'o;o'F'\

পদ্ধতি:

  • আমরা x,y,zইনপুট থেকে প্রথম 3 টি অক্ষরের কোডপয়েন্টগুলি পড়ি । যদি কোনও চরিত্র উপস্থিত না হয় তবে তার ভেরিয়েবলের মান -1স্পষ্টতই হবে। ( ord(c)চরিত্রের কোডপয়েন্টকে চিহ্নিত করবে)c )
  • যদি z > 0(3 অঙ্ক ইনপুট) মুদ্রণ Aকরে প্রস্থান করুন।
  • যদি x < ord('6') or y < 0(ইনপুট <60) মুদ্রণ Fকরে প্রস্থান করুন।
  • কোডপয়েন্ট সহ চরিত্রটি মুদ্রণ করুন 123 - x
  • যদি y < ord('4') print-` এবং প্রস্থান করুন।
  • যদি y > ord('6') print+ `হয় এবং প্রস্থান হয়।
  • থেকে প্রস্থান করুন।

7

সি, 67 65

আশ্চর্যের বিষয়, এটি অজগর সমাধানের বেশ কাছাকাছি।

f(i){printf(i<60?"F":i>99?"A":"%c%s",75-i/10,"-\0+"+(i%10+1)/4);}

তবে এই প্রোগ্রামটির জন্য, এত বড় সংকট আসতে, ত্যাগ স্বীকার করতে হয়েছিল:

  • যদি একটি Fবা একটি Aমুদ্রিত printfহয় তবে পাস হওয়া অন্যান্য আর্গুমেন্টগুলির দিকেও তাকান না। এটি বেশ কদর্য হ্যাক।

  • যদি (i%10+1)/4মূল্যায়ন করা হয় 1( গ্রেডে সংযুক্ত করা উচিত +বা না -হওয়া উচিত), %sফর্ম্যাটরটি একটিতে একটি পয়েন্টার পায়\0 বাইটে , তাই কিছুই মুদ্রিত হয় না। এছাড়াও বেশ মজার, কারণ আমি জানতাম না যে আপনি কোনও সূচকযুক্ত স্ট্রিংয়ের ঠিকানাটি নিতে পারেন। (উদাঃ &"string"[i]) ( সম্পাদনা : "string"+iআরও খাটো ! ধন্যবাদ @ নটকি)

এখানে 57 থেকে 102 সংখ্যাগুলির জন্য প্রোগ্রামটির আউটপুট আমি এটিকে একটি হ্যাক্সডাম্প তৈরি করেছি, তাই আমরা নিশ্চিত হতে পারি যে কোনও অদ্ভুত \0বাইট মুদ্রিত হয়নি।

% seq 44 115 | xargs -n1 ./grade | xxd
0000000: 4646 4646 4646 4646 4646 4646 4646 4646  FFFFFFFFFFFFFFFF
0000010: 452d 452d 452d 4545 4545 452b 452b 452b  E-E-E-EEEEE+E+E+
0000020: 442d 442d 442d 4444 4444 442b 442b 442b  D-D-D-DDDDD+D+D+
0000030: 432d 432d 432d 4343 4343 432b 432b 432b  C-C-C-CCCCC+C+C+
0000040: 422d 422d 422d 4242 4242 422b 422b 422b  B-B-B-BBBBB+B+B+
0000050: 4141 4141 4141 4141 4141 4141 4141 4141  AAAAAAAAAAAAAAAA

mainপদ্ধতি ব্যবহৃত:

main(c,v)char**v;{f(atoi(v[1]));}

1
&"string"[i]এটি অপ্রয়োজনীয় কারণ এটি সংক্ষিপ্ত আকারের "string"+iযার সাথে আপনি 2 বাইট সংরক্ষণ করতে পারেন।
নটকি 13'15

আমি অবশ্যই উদ্দেশ্যমূলক এবং এইটিকে সমুন্নত রাখতে হবে: আপনার সমস্ত সি রেকর্ডকে
প্রহার করা হয়েছে

6

সিজেম, 41 39 37 34 বাইট

এটি বেশ দীর্ঘ, তবে আমি মনে করি না যে আমি আপাতত এটি আরও গল্ফ করব।

qiAmd'K@Ae<5e>:X-X5%g@)4/"- +"=*S-

এটি এখানে পরীক্ষা করুন।বা সমস্ত পরীক্ষার মামলা এখানে চালান।

অপ্টিমাইজার দ্বারা তিনটি বাইট সংরক্ষণ করা হয়েছে।

ব্যাখ্যা

(সামান্য পুরানো)

qi                                    e# Read input and convert to integer.
  'K1$                                e# Push the character K, then copy the input.
      A/                              e# Divide by 10.
        Ae<5e>                        e# Clamp the result to the range 5..10.";
              -                       e# Subtract from K to get the grade.
               _'Am                   e# Duplicate get difference to A.
                   5%g                e# Check that its neither 0 (A) nor 5 (F).
                      @               e# Pull up the other copy of the input.
                       A%)4/          e# ((i % 10) + 1) / 4
                            "- +"=    e# Use that to select -, space, or +.
                                  *   e# Multiply it with the earlier boolean so that
                                      e# it vanishes for A and F.
                                   S- e# Remove the space if there is one.




4

আর, 107 105 99 বাইট

খুব ভয়ঙ্কর চেষ্টা নয় যে আমি ভীত, তবে আমি আরও চেষ্টা করব এবং আরও পরে এটি গল্ফ করব।

cat(LETTERS[11-(r=min(max(scan(),59),100))%/%10],if(r>59&r<100)c('-','','+')[(r%%10+1)/4+1],sep='')

সম্পাদনা কয়েক দফায় if। কেস এবং 100 জন্য একটি ভুল ফলাফলের ফিক্সড এখন পরিত্রাণ পেতে ifelseগুলিifelseএস থেকে মুক্তি পেয়েছি ।


আমি মনে করি আপনি LETTERSবরং চান letters
অ্যালেক্স এ।

3

পার্ল, 66 62 বাইট

এটি সম্ভবত আরও গল্ফ করা যেতে পারে। এছাড়াও একটি ভিন্ন উপায় ভাল হতে পারে।

$_=$_>99?A:$_<60?F:s/\d$/$&>6?"+":$&<3?"-":""/re;y/9876/BCDE/

জন্য +1 -p

সাথে চালান:

echo 72 | perl -pE'$_=$_>99?A:$_<60?F:s/\d$/$&>6?"+":$&<3?"-":""/re;y/9876/BCDE/'

কেন ব্যবহার -pএবং বাদ না say?
এইসুইটস ব্ল্যাকনট

@ থিসসুটআইস ব্ল্যাকনাট ধন্যবাদ! আপডেট হয়েছে
hmatt1

2

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

এটি সত্যই স্মার্ট বিকল্প নয়, তবে আমি যা করতে পেরেছি তা করেছি।

F=n=>'FEDCBA'[n[2]?5:n<60?0:n[0]-5]+(n[2]||n<60?'':'-+\n'[n[1]<3?0:n[1]>6?1:2])

স্ট্রিং হিসাবে কেবল গ্রেডটি পাস করুন এবং এটি গ্রেড চিঠিটি ফিরিয়ে দেবে।

খুব স্ট্রিং অংশ গুরুত্বপূর্ণ।

আপনি এখানে একটি টেস্টকেস চেক করতে পারেন:

console._RELAY_TO_DOC=true;

//non-es6 version:

function F(n){return 'FEDCBA'[n[2]?5:n<60?0:n[0]-5]+(n[2]||n<60?'':'-+\n'[n[1]<3?0:n[1]>6?1:2])}



var testcases=[0,20,65,72,75,77,80,90,99,100,102,180,1000],
    results={};

for(var i in testcases)
{
  results[testcases[i]]=F(testcases[i]+'');
}

console.log(results);
<script src="http://ismael-miguel.github.io/console-log-to-document/files/console.log.min.js"></script>

চিঠির পরে যদি অ্যাডিশনাল স্পেস অনুমতি না দেয় তবে আমি আনন্দের সাথে এটি সরিয়ে ফেলব। এটা ছিল না! এটি আমার কোডকে 1 বাইট বাড়িয়েছে তবে কিছুই গুরুতর নয়)


1
@ টিম এটি স্থির করে। আমি আশা করি এটি যথেষ্ট। নিজেকে উদ্ধৃত করা হচ্ছে: " One newline after output is fine, but keep it consistent."। আমি মনে করি এটি যথেষ্ট সামঞ্জস্যপূর্ণ।
ইসমাইল মিগুয়েল

2

সি #, 143 127 112 88 বাইট

string g(int n){return n>=100?"A":n<=59?"F":(char)(75-n/10)+(n%10>6?"+":n%10<3?"-":"");}

আমি ASCII নম্বর মোড করে চালাক হওয়ার চেষ্টা করেছি, তবে মনে হয় আমি একা ছিলাম না!

আইএমএস এর পরিবর্তে তালিকার পরামর্শের জন্য টিমকে ধন্যবাদ জানাই।

আমি নেস্টেড টার্নারি অপারেটরগুলি ব্যবহার করতে পারার নির্দেশ দেওয়ার জন্য ডারসি থমাসকে ধন্যবাদ।


1
আপনি যদি তালিকাগুলি ব্যবহার করে আইএফএসগুলি কেটে ফেলতে পারবেন না?
টিম

আমি নিশ্চিত না যে আপনি তালিকা ব্যবহার করে কী বোঝাতে চেয়েছেন, আপনি কি কিছুটা ব্যাখ্যা করতে পারেন?
ট্রান্সমিশন

পাইথন আমি এটা করতে পারেন: [item1,item2][condition]। শর্তটি যদি সত্য হয় তবে এটি দ্বিতীয় আইটেমটি দেয়, যদি প্রথমে মিথ্যা হয়।
টিম

ভাল ধারণা! যোগ হয়েছে।
সংক্রমণ

আমি মনে করি আপনি বিবৃতিগুলি উদাহরণস্বরূপ যদি return <condition> ? <true result> : <false result>return <condition> ? <true result> : <condition> ? <2nd true result> : < 2nd false result>
টের্নারি

1

হাস্কেল, 78 বাইট

প্রথম লাইনটি অপব্যয় অনুভব করে, 14 বাইট ব্যয় করে তবে আমি এটি ছাড়া একটি ছোট সংস্করণ খুঁজে পাই না find

(#)=replicate
a="A":a
f=(!!)$60#"F"++[g:s|g<-"EDCB",s<-3#"-"++4#""++3#"+"]++a

ব্যাখ্যা

অপারেটরটি #তার দ্বিতীয় তর্ক যুক্তির অনুলিপি তৈরি করার জন্য একটি শর্টহ্যান্ড। তালিকা aস্ট্রিং "এ" এর একটি অসীম তালিকা। fN = 0,1 এর জন্য সমস্ত গ্রেডের তালিকায় ফাংশন সূচকগুলি ... ... তালিকাটি বোঝার জন্য এই তালিকার "মাঝের অংশ" তৈরি হয় (গ্রেড E থেকে B); gস্ট্রিং s(যা খালি হতে পারে) এ প্রতিশোধ নেওয়া একক চর ।

ব্যবহার

ghci> map f [0,20,65,72,75,80,99,102,864]
["F","F","E","D-","D","C-","B+","A","A"]

1

সি, 102 বাইট

int f(int h){int b,c;printf("%c%c",b?65:!c?70:75-h/10,!(b=h>99)*(c=h>59)*(((h%10<3)*45+(h%10>6)*43)));

}

ব্যবহার

#include <stdio.h>
int f(int );
int main(){
    int c;
    scanf("%d",&c);
    f(c);
}

আপনি + এবং - অংশ মিস করছেন।
অপটিমাইজার

আহ ঠিক আছে .... মিস করুন
Abr001am

খুব দীর্ঘ :( ....
Abr001

1

ডিসি, 52

[Anq]sa[Fnq]sf[q]sn16o?A~rd9<ad6>f20r-n1+4/d1=n45r-P

আউটপুট

$ for i in {0,20,65,72,75,80,99,102,864}; do printf "{%s -> %s} " $i $(dc -e '[Anq]sa[Fnq]sf[q]sn16o?A~rd9<ad6>f20r-n1+4/d1=n45r-P' <<< $i); done
{0 -> F} {20 -> F} {65 -> E} {72 -> D-} {75 -> D} {80 -> C-} {99 -> B+} {102 -> A} {864 -> A} $ 
$ 

1

টিআই-বেসিক, 79 74 76 বাইট

Input N
If N>99
105->N
sub("FFFFFFEDCBA",1+int(N.1),1
If Ans!="F
Ans+sub("---    +++",1+fPart(N.1),1
Ans

10 এর চেয়ে কম সংখ্যার জন্য এটি কাজ করে না
লিটারোসিয়াস

ভাল ক্যাচ, টম, এটি অনুপস্থিত ছিল1+
টিমটেক

যখনই কোনও + বা - নেই তখন এটিতেও (অদৃশ্য) পিছনের স্থান রয়েছে has
lirtosiast

1

টিআই-বেসিক, 69 68 66 বাইট

.1Ans
sub("F?E-E+D-D+C-C+B-B+A",1+2max(0,min(9,int(2Ans)-11)),int(e^(Ans<10 and Ans≥6 and iPart(2.2-5fPart(Ans

টিআই-বেসিক স্ট্রিং ম্যানিপুলেশনের জন্য ভাল নয়।

[নম্বর] আকারে: [প্রোগ্রামের নাম] ক্যালকুলেটর হোমস্ক্রিনে ইনপুট।

বিন্যাসকৃত:

.1Ans
sub(                      //Syntax for the substring command is sub(string, index, length)

    "F?E-E+D-D+C-C+B-B+A"                  //String that encodes possible grades

    ,1+2max(0,min(9,            ))         //Starts at "F" if input <60, "A" if >=100
                   int(2Ans)-11           //(Input-55)/5, so starts at "E" from 60 to 64,
                                          //second E from 65-69, D from 70 to 74, &c.

    ,int(e^(                                   //length 1 if false, 2 (includes +/-) if true
            Ans<10 and Ans≥6 and               //grade between 60 and 100        
                                 iPart(               //1 if abs. val. of below >= 0.2
                                       2.2-5fPart(Ans  //2.2-.5(last digit)    

এটি সম্ভবত আরও গল্ফ করা যেতে পারে।



0

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

চরিত্রগুলি কী খাচ্ছে তা হ'ল String.fromCharCodeএবং +/- শর্ত ... আমি দৃ strongly়ভাবে সন্দেহ করি যে এর মধ্যে কমপক্ষে একটি ছোট করার একটি চতুর উপায় রয়েছে।

f=n=>n>99?'A':n<60?'F':String.fromCharCode(75.9-n/10|0)+(n%10<3?'-':n%10>6?'+':'');

আপনি যদি সংক্ষিপ্ত কোড চান, স্ট্রিং.ফর্মচোড প্রায় সর্বদা অকেজো। স্ট্রিং ইনডেক্সিং ব্যবহার করুন (অন্যান্য জাভাস্ক্রিপ্টের উত্তরগুলি দেখুন)
edc65

যাইহোক, ~~(.1*-n+75.9)->75.9-n/10|0
edc65

@ edc65 গল্ফিং পরামর্শের জন্য ধন্যবাদ! আমি পরের অনুষ্ঠানের জন্য স্ট্রিং ইনডেক্সিং রাখব।
ভিভি

0

পিএইচপি 5.5, 73 বাইট

আর একবার, সংক্ষিপ্ততম না।

কিন্তু এটি কাজ করে!

<?=($n=$_GET[n])<59?F:($n>99?A:'BCDE'[$n[0]-6].'+-'[$n[1]<3?1:2*$n[1]<5])

আমি এটি কেবল পিএইচপি 5 এর পরিবর্তে পিএইচপি 5.5 এর অধীনে শ্রেণিবদ্ধ করেছি যেহেতু এটি সিনট্যাক্স ব্যবহার করে যা কেবলমাত্র PHP5.5 এবং PHP5.6 এর জন্য বৈধ।

আপনি ম্যানুয়ালটিতে স্ট্রিং এবং অ্যারে ডেরিফারেন্সিং সম্পর্কে পড়তে পারেন:
http://php.net/manual/en/migration55.new-features.php


0

পার্ল, 52

#!perl -p
$_=$_>99?A:$_<60?F:"$_"^"s";y/JK7890-6/BC+++\-\--/d

0

রুবি, 58 বাইট

বিশ্বাস করা যায়নি যে এখানে কোনও রুবি নেই। প্রতিবিম্বে এটি ইতিমধ্যে কিছু তবে এখানে যাই হোক না কেন কিছুটা মোটামুটি অনুরূপ:

->x{x<60?'F':x>99?'A':(75-x/10).chr+'+-'[(x+3)%10/3].to_s}

এখানে চেষ্টা করুন


0

এক্সেল, 100 বাইট

=IF(A1<60,"F",IF(A1>99,"A",MID("EDCB",INT(A1/10)-5,1)&IF(MOD(A1,10)<3,"-",IF(MOD(A1,10)>6,"+",""))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.