আমার লাইসেন্স প্লেট কত পয়েন্ট দেয়?


31

(এটি আমার প্রথম কোড-গল্ফ প্রশ্ন)

যখন আমি ছোট ছিলাম, আমার বাবা এবং আমি এমন একটি খেলা আবিষ্কার করেছিলেন যেখানে আমরা গাড়িতে যে লাইসেন্স প্লেট দেখি তারা কিছু সাধারণ নিয়মের ভিত্তিতে নির্দিষ্ট পয়েন্ট দিতে পারে:

একই অক্ষর বা সংখ্যার এক্স পরিমাণটি এক্স -১ পয়েন্ট দেয়, উদাহরণস্বরূপ:

22 = 1 point
aa = 1 point
5555 = 3 points

সংখ্যাগুলি অবশ্যই 3353প্রত্যেকের পাশে থাকা উচিত, সুতরাং 5 টি 3 এর ক্রমকে বিভক্ত করার সাথে সাথে কেবল 1 পয়েন্ট দেয়।

আরোহী বা উতরান ক্রমে X সংখ্যার একটি ক্রম, সর্বনিম্ন 3 এ, এক্স পয়েন্ট দিন, উদাহরণ দিন:

123 = 3 points
9753 = 4 points
147 = 3 points

পয়েন্ট সিস্টেমটি কেবল 1-সংখ্যার জন্য কাজ 1919করে , সুতরাং পয়েন্ট দেয় না এবং 14710কেবল 3, (147) দেয়।

সিকোয়েন্সগুলি আরও পয়েন্ট তৈরির জন্য সংযুক্ত করা যেতে পারে, উদাহরণগুলি:

1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)

তবে অতিরিক্ত পয়েন্টগুলির জন্য আপনাকে 2 টি ছোট ছোট সিকোয়েন্সে বৃহত্তর সিকোয়েন্স কেটে দেওয়ার অনুমতি নেই: 1234 = 123, 234 (6 points)অনুমোদিত নয়।

লাইসেন্স প্লেট যে পয়েন্ট দেয় তার সংখ্যা নির্ধারণ করার জন্য আপনার কাজটি একটি ক্রম দেওয়া হচ্ছে।

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

আপনি দয়া করে যে কোনও উপায়ে ইনপুট নিতে পারেন, কোনও স্ট্রিং বা অ্যারে আমার কাছে সর্বাধিক অর্থ বোধ করে।

পরীক্ষার ইনপুট | আউটপুট:

AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1

আপনার নিজস্ব কাঠামো বেছে নেওয়ার প্রকৃতির কারণে, বা এমনকি সমস্ত কাঠামোকে .েকে দেওয়ার কারণে, আমি কীভাবে কোনও বিজয়ীকে সুস্পষ্টভাবে নির্ধারণ করা যায় তা দেখার প্রয়োজন হয় না। আমি মনে করি যে বিজয়ী কাঠামোর যেটি সিদ্ধান্ত নিয়েছে তার মধ্যে সংক্ষিপ্ততম বাইট হবে। (এবং কেবল নিজের জন্য সহজ করার জন্য সিকিকের মতো ইনপুট নেবেন না)

সম্পাদনা করুন:

মন্তব্য জিজ্ঞাসার কারণে, আমার কাছে শেয়ার করার জন্য আরও কয়েকটি অতিরিক্ত তথ্য রয়েছে: আরোহী বা উতরান সংখ্যার একটি ক্রম একটি গাণিতিক ক্রমকে বোঝায় তাই এক্স +/- এ * 0, এক্স +/- এ * 1, ... এক্স +/- এ * এন ইত্যাদি সুতরাং 3-5-7 উদাহরণস্বরূপ 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * ২. ক্রমটি অবশ্য 0 থেকে শুরু করার বা শেষের দরকার নেই 0।

আরও সম্পাদনা:

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


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

প্রস্তাবিত পরীক্ষা মামলা: XX 87 654। আমি এমন কিছু নিয়ে এসেছি যা আপনার সমস্ত পরীক্ষার ক্ষেত্রে সঠিক ছিল তবে এটির জন্য কোনওরকম ভুল .. এটি ঠিক করার উপর কাজ করা।
কেভিন ক্রুইজসেন

7
আমি দৃ strongly়ভাবে আপনাকে একটি নির্দিষ্ট কাঠামো ঠিক করার পরামর্শ দিচ্ছি (আমি প্রস্তাব দিচ্ছি CCIIIII, কোনও স্পেস নেই), নাহলে এই সমস্যাটির একটি উদ্দেশ্য জয়ের মানদণ্ডের অভাব রয়েছে, যা আমাদের এখানে প্রায় প্রয়োজন। যেমনটি হ'ল, "(এবং কেবল নিজের জন্য সহজ করে তুলতে সিসিকের মতো ইনপুট নেবেন না)" অত্যন্ত বিষয়গত। কোনটি গ্রহণযোগ্য কাঠামো এবং কী না?
লিন

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

3
পরীক্ষার কেস: IA99999(কোড পয়েন্টগুলির ক্রমহ্রাসমান ক্রম রয়েছে তবে সংখ্যার নয়)।
জগারব

উত্তর:


7

05 এ বি 1 ই , 25 22 20 18 বাইট

লোয়ার-কেস বর্ণমালার অক্ষরের একটি স্ট্রিং এবং শূন্যস্থান ছাড়াই সংখ্যাগুলি গ্রহণ করে।

Ç¥0Kγ€gXK>OIγ€g<OO

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


আমি কোনও ব্যাখ্যা ছাড়াই 05AB1E পড়তে পারি না;) তবে আপনি কি ফাঁকা ছাড়াই ইনপুট পেয়ে বাইট সংরক্ষণ করতে পারবেন?
কেভিন ক্রুইজসেন

@ মিঃ এক্সকোডার আমি এটিরও সন্দেহ করি। তবে আমি ব্যক্তিগতভাবে 05AB1E পড়তে পারি না, তাই আমি ভেবেছিলাম সম্ভবত এমিনিগা স্পেসগুলি থেকে মুক্তি / উপেক্ষা করার জন্য কোনও কোড যুক্ত করেছে। সম্ভবত এটি কোনও অতিরিক্ত বাইট ছাড়াই সুস্পষ্টভাবে এটি করে, তবে আমি এটি না করার ক্ষেত্রে সবেমাত্র জিজ্ঞাসা করেছি।
কেভিন ক্রুইজসেন

আমি কেবল আপনার কোডটি একটি দোল, এবং পবিত্র শৃঙ্খলার জন্য নিয়েছি, এটি আসলে যে কোনও দৈর্ঘ্য বা ক্রমের জন্য কাজ করে! কেবলমাত্র 'ইস্যু' এটি এটিবিসিকে 3 পয়েন্ট দেয় যা নিজে এবং ভুলটি নয়, আমি কেবল এটির জন্য দায়বদ্ধ হই নি, যেমন ডেনমার্কে আমাদের প্রত্যেকের পাশে দুটি চিঠি রয়েছে।
Troels এমবি জেনসেন

2
@ কেভিন ক্রুজসেন: ইনপুটটিতে কোনও ফাঁকা জায়গা হ'ল বেশ কয়েকটি বাইট সংরক্ষণ করতে পারে না। আমি সেই অংশটি মিস করেছি যেখানে আমরা নিজেরাই সিদ্ধান্ত নিতে পারি। সতর্ক থাকুন জন্য ধন্যবাদ। (একটি ব্যাখ্যাও আসছে)।
এমিগানা

@ এমিগনা আমি প্রশ্নটিতে এটিকে স্পষ্টভাবে বলেছিলাম না, আমি ভেবেছিলাম যে আমি এটি লিখতে গিয়ে যথেষ্ট ইঙ্গিত দিয়েছি আপনি যখন খুশি হন কোনওভাবে আপনি ইনপুটটি নিতে পারেন, কোনও স্ট্রিং বা অ্যারে আমার কাছে সবচেয়ে বেশি অর্থবোধ করে বলে মনে হয়।
Troels এমবি জেনসেন

7

হুশ , 20 16 15 বাইট

-1 বাইট @ জগারবকে ধন্যবাদ

স্পেস ছাড়াই এবং নিম্ন ক্ষেত্রে ইনপুট নেয়।

ṁ??¬o→LεL←gẊ¤-c

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

ব্যাখ্যা

           Ẋ      Map over all adjacent pairs
            ¤-c   get the difference of their codepoints
          g       Split into groups of equal elements
ṁ                 Map then sum
 ?       ←          If the head of the list is truthy (not 0)
  ?    ε              If the length of the list is 1
   ¬                    return 0
                       Else
    o→L                 return the length + 1
                     Else
        L             return the length

আমার মনে হয় এখানে K0থাকতে পারে ¬
জাগারব

হুম, এটি ব্যর্থ বলে মনে হচ্ছে IA99999
জগারব

@ জগারব, ইনপুট ফর্ম্যাটটিকে ছোট আকারে পরিবর্তন করেছে।
এইচ.পি.উইজ

5

পাইথন 3 , 193 85 বাইট

-3 বাইট ধন্যবাদ লিনকে

যেমন ছোট হাতের অক্ষর সঙ্গে একটি বাইট-স্ট্রিং হিসেবে ইনপুট লাগে: b'aa11111'

def f(s):
 d=l=L=p=0
 for c in s:C=0!=d==c-l;p+=(c==l)+C*L;L=3>>C;d=c-l;l=c
 return p

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



1
C=0!=d==c-lএমনকি আরও খাটো।
লিন

2

জাভা 8, 195 বাইট

a->{int r=a[0]==a[1]?1:0,i=3,j,p=a[2],x,y,z;for(;i<7;p=a[i++])for(r+=(x=a[i])==p?1:0,j=-4;++j<4;r+=j==0?0:i<6&&p+j==x&x+j==(y=a[i+1])?++i<6&&y+j==(z=a[i+1])?++i<6&&z+j==a[i+1]?5:4:3:0);return r;}

সিকোয়েন্সগুলি পরীক্ষা করার জন্য অন্য কৌশল ব্যবহার করে অবশ্যই আরও কিছু গল্ফ করা যেতে পারে।

ব্যাখ্যা:

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

a->{                      // Method with character-array parameter and integer return-type
  int r=                  //  Result-integer
        a[0]==a[1]?       //   If the two letters are equal:
         1                //    Start this result-integer at 1
        :                 //   Else:
         0,               //    Start the result-integer at 0 instead
      i=3,j,              //  Index-integers
      p=a[2],x,y,z;       //  Temp integers
   for(;i<7;              //  Loop (1) from index 3 to 7 (exclusive)
       p=a[i++])          //    And after every iteration: Set `p` and raise `i` by 1
     for(r+=(x=a[i])==p?  //   If the current digit (now `x`) equals the previous `p`:
             1            //    Raise the result-integer by 1
            :             //   Else:
             0,           //    Keep the result-integer the same
         j=-4;++j<4;      //   Inner loop (2) from -3 to 3 (inclusive)
       r+=j==0?           //    If `j` is 0:
           0              //     Skip it, so keep the result-integer the same
          :i<6            //    Else-if `i` is not 6,
           &&p+j==x       //    and the previous digit `p` + `j` equals the current digit,
           &x+j==(y=a[i+1])?
                          //    and the current digit `x` + `j` equals the next digit `y`:
            ++            //     Raise index `i` by 1 first,
              i<6         //     and check if `i` is not 6 again,
              &&y+j==(z=a[i+1])?
                          //     and if the new current digit `y` + `j` equals the next digit `z`:
               ++         //      Raise index `i` by 1 first again,
                 i<6      //      and check if `i` is not 6 again,
                 &&z+j==a[i+1]?
                          //      and if the new current digit `z` + `j` equals the next digit:
                  5       //       Raise the result-integer by 5
                 :        //      Else:
                  4       //       Raise it by 4 instead
              :           //     Else:
               3          //      Raise it by 3 instead
           :              //    Else:
            0             //     Keep it the same
     );                   //   End of inner loop (2)
                          //  End of loop (1) (implicit / single-line body)
  return r;               //  Return the result-integer
}                         // End of method

1

পাইথ ,  51  50 বাইট (স্তম্ভিত)

+/|R0.+QZslM.MlZ+kfTsmm?&!-K.+sMkhK.AKkY.:>Q2d}3 5

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


আমি এখন বুঝতে পেরেছি যে আমি এটিকে আরও খাটো করতে পারি তবে আমি আপডেট করব যদি আমি এটি ধারাবাহিকভাবে গল্ফ করতে সক্ষম হই।
মিঃ এক্সকডার

1

আর , 153 , 145 , 143 বাইট

function(x){p=0;s=sum;if(x[1]==x[2])p=1;a=diff(strtoi(x[3:7]));p=p+s(a==0);l=sort(table(a[a!=0]),T);(p=p+s(l[(l[((s(l)>0)&(l[1]>1))]+1)>2]+1))}

বেনামে ফাংশন যা একটি অক্ষর ভেক্টর নেয় এবং একটি পূর্ণসংখ্যা ফেরত দেয়।
প্রত্যাশিত ইনপুটz(c("A", "A", "1", "1", "1", "1", "1"))

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

উদার সংস্করণ

function(x){
  pnt <- 0; s <- sum
  if(x[1] == x[2]) pnt <- 1
  a <- diff(strtoi(x[3:7]))
  pnt <- pnt + s(a == 0)
  l <- sort(table(a[a!=0]), T)
  (pnt <- pnt + s(l[(l[((s(l) > 0) & (l[1] > 1))] + 1) > 2] + 1))
}


0

পাইথ , 48 42 বাইট

আমার অজগর উত্তর থেকে সরাসরি বন্দর। লোয়ারকেস অক্ষরগুলির সাথে বাইট-স্ট্রিং হিসাবে ইনপুট নেয়: b'aa11111 '।

এটি পাইথে আমার প্রথমবারের মতো কোডিং, সুতরাং যে কোনও টিপস স্বাগত: ডি

KJ=b0VQ=d&KqK-NJ=+b+qNJ*dZ=Z-3yd=K-NJ=JN;b

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


0

জাভাস্ক্রিপ্ট, 216 192 186 202 201 বাইট

function f(s){var a=s.split(" "),c=a[1],a=a[0],r,h=b=i=p=0;for(i=0;i<4;i++){if(i<2&(r=a[i+1]-a[i]==a[i+2]-a[i+1])){p++;b=2}if(i>0){if(a[i]==a[i-1]){p++;h++}if(i<3&c[i]==c[i-1])p++}}return h==4?p+b:p-b}

Unminified

function f(s){
    var a=s.split(" "),c=a[1],a=a[0],r,h=b=i=p=0;
    for(i=0;i<4;i++){
        if(i<2&(r=a[i+1]-a[i]==a[i+2]-a[i+1])){
            p++;
            b=2
        }
        if(i>0){
            if(a[i]==a[i-1]){
                p++;
                h++;
            }
            if(i<3&c[i]==c[i-1]) 
                p++;
        }
    }

    return h==4?p+b:p-b
}

ইতিহাস সম্পাদনা করুন:

  • কেবল 0000 XXXবিন্যাসের সাথে কাজ করতে কোডটি সঙ্কুচিত করা হয়েছে । (-24 বাইট)
  • @ টিটাসের পরামর্শ অনুসারে সম্পাদনাগুলি। (-6 বাইট)
  • একটি বাগ ঠিক করা হয়েছে যেখানে চারটি অভিন্ন সংখ্যা 3 এর পরিবর্তে 7 এর স্কোর দিয়েছে (+16 বাইট)
  • শেষ আধা-কোলন সরানো হয়েছে। (-1 বাইট)
  • কোডে একটি টাইপো স্থির করে। (কোনও বাইট পরিবর্তন নেই)

আমি কীভাবে বাইটগুলি গণনা করব?
ব্রায়ান এইচ।


আমি সত্যিই ঘৃণা করি যে কোড ব্লকটি
ব্রায়ান এইচ।

সিনট্যাক্স হাইলাইট করতে চান?
এইচ.পি.উইজ

বিটিডব্লিউ, 00007 পয়েন্ট দেয়, এটি কি সঠিক? (এটি একটি গাণিতিক ক্রম এবং একই সাথে পুনরাবৃত্তি সংখ্যা ক্রম হিসাবে পড়া হচ্ছে)
ব্রায়ান এইচ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.