ফরাসি লাইসেন্স প্লেট


41

স্যান্ডবক্স

ফ্রেঞ্চ লাইসেন্স প্লেট

ফরাসি লাইসেন্স প্লেট সংখ্যা এবং বর্ণের একটি নির্দিষ্ট প্যাটার্ন অনুসরণ করে একটি ক্রমিক ক্রমে আসে:AB-012-CD

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা প্রদত্ত সংখ্যার জন্য সংশ্লিষ্ট ফরাসি লাইসেন্স প্লেট নম্বরটি আউটপুট করে । আপনার প্রোগ্রামটির কোনও লিঙ্কযুক্ত পৃষ্ঠায় বর্ণিত কোনও বিশেষ কেস পরিচালনা করা উচিত নয়। এটি সম্পূর্ণ 26*26*1000*26*26 => 456 976 000সম্ভাব্য প্লেট তৈরি করতে সক্ষম হওয়া উচিত , বা আপনার ভাষা যতদূর সমর্থন করতে পারে।

নম্বর পদ্ধতিটি নীচে চলেছে:

  • এএ -৯০০-এএ থেকে এএ -৯৯৯-এএ (সংখ্যাগুলি প্রথমে বিকশিত হয়);
  • AA-000-AB থেকে AA-999-AZ (তারপরে ডানদিকে শেষ অক্ষর);
  • AA-000-BA to AA-999-ZZ (তারপরে ডানদিকে প্রথম অক্ষর);
  • AB-000-AA to AZ-999-ZZ (তারপরে বাম দিকে শেষ চিঠি);
  • BA-000-AA to ZZ-999-ZZ (তারপরে বাম দিকে প্রথম অক্ষর)।

ইনপুট

  • পূর্ণসংখ্যা হিসাবে প্লেট নম্বরটির সূচক

আউটপুট

  • সংশ্লিষ্ট ফরাসি লাইসেন্স প্লেট নম্বর

অতিরিক্ত তথ্য

  • চিঠিগুলি বড় হাতের হতে হবে
  • প্লেটগুলি তৈরি করতে আপনি 0-ভিত্তিক এবং 1-ভিত্তিক সূচী উভয়ই ব্যবহার করতে পারেন (যার অর্থ AA-000-AA এর সাথে সম্পর্কিত হতে পারে 0বা 1ধরে নেওয়া যায় যে অন্যান্য সমস্ত পরীক্ষার ক্ষেত্রে একই সূচক ব্যবহার করা হয়।

এটি কোড-গল্ফ , প্রতিটি ভাষায় স্বল্পতম উত্তর!

পরীক্ষার কেস (0-ভিত্তিক সূচক)

          0 -> AA-000-AA
          1 -> AA-001-AA
        999 -> AA-999-AA
       1000 -> AA-000-AB
    675 999 -> AA-999-ZZ
    676 000 -> AB-000-AA
456 975 999 -> ZZ-999-ZZ

2
উইকিপিডিয়া থেকে আরও কিছু প্রয়োজনীয়তা এখানে রইল, যদি আপনি আরও কঠোর প্রকরণ তৈরি করতে চান: "এই চিত্রটিতে তিনটি অক্ষর ব্যবহার করা হয়নি যা I, O এবং U যথাক্রমে 1, 0 এবং V এর সাথে বিভ্রান্ত হতে পারে। এটি এসএস সংমিশ্রণটিও বাদ দেয় কারণ এটি অস্থায়ী প্লেটের ইঙ্গিত করার কারণে চিঠিগুলির প্রথম গ্রুপে এটি নাজি সংগঠন এবং ডাব্লুডাব্লুয়ের স্মরণ করিয়ে দেয় ""
এরিক ডুমিনিল

4
@ এরিকডুমিনিল আমি উদ্দেশ্যমূলকভাবে এটিকে বাদ দিয়েছি কারণ এটি কেবলমাত্র চ্যালেঞ্জের ক্ষেত্রে অপ্রাপ্ত বাধা যুক্ত করেছে। তবে এটি সত্য যে এটি করা আকর্ষণীয় হতে পারে তবে "বোনাস পয়েন্ট" সত্ত্বেও আমি সন্দেহ করি যে এই নিয়মগুলি কার্যকর করা কার্যকর হবে
এলকান

উত্তর:


17

খাঁটি বাশ (কোনও বাহ্যিক ব্যবহার নেই), 64

  • 2 বাইট সংরক্ষণ করেছেন @ নাহুয়েলফৌইলুলকে ধন্যবাদ
x={A..Z}
eval f=($x$x-%03d-$x$x)
printf ${f[$1/1000]} $[$1%1000]

এটি অনলাইন চেষ্টা করুন! - 7 টি টেস্টকেসগুলি চালাতে 10 সেকেন্ড সময় লাগে।

  • লাইন # 1 একটি ভেরিয়েবলের স্ট্রিংয়ের একটি সাধারণ অ্যাসাইনমেন্ট
  • লাইন # 2 হ'ল প্রিন্টফ ফর্ম্যাট স্ট্রিংগুলির একটি অ্যারে তৈরি করার জন্য একটি ব্রেস প্রসারণ যা 456,976 টি সম্ভাব্য অক্ষরের সংমিশ্রণের জন্য একটি, অঙ্কগুলি এখনও নির্দিষ্ট করা হয়নি। evalতা নিশ্চিত করার জন্য (এক্স এর) পরিবর্তনশীল সম্প্রসারণ বক্রবন্ধনী সম্প্রসারণ সামনে ঘটে প্রয়োজন।
  • লাইন # 3 উপযুক্ত বিন্যাসের স্ট্রিং পেতে অ্যারেটিকে সূচি দেয় এবং অঙ্কগুলির অংশটিকে তার পরামিতি হিসাবে গ্রহণ করে।


13

পার্ল 5 (-ap), 47 বাইট

$_=AAAA000;$_++while$F[0]--;s/(..)(\d+)/-$2-$1/

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


পিএইচপি , 74 বাইট

for($a=AAAA000;$argn--;$a++);echo preg_replace('/(..)(\d+)/','-$2-$1',$a);

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


2
পিএইচপি এর জন্য +1, আমি জানতাম যে আমরা পিএইচপি-তে চিঠিগুলি বৃদ্ধি করতে পারি, তবে আমি জানতাম না যে আমরা চিঠি এবং অঙ্কগুলির সংমিশ্রণ বৃদ্ধি করতে পারি। পিএইচপি আমাকে প্রতিদিন অবাক করে! এবং ধন্যবাদ আমি নতুন কিছু শিখেছি।
রাত 2

8

পাইথন 3 , 79 78 77 বাইট

lambda n:f"%c%c-{n%1000:03}-%c%c"%(*(65+n//1000//26**i%26for i in[3,2,1,0]),)

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

আমি একরকম কখনই বুঝতে পারি নি যে f"string"ব্ল্যাক আউল কাইয়ের উত্তর না পাওয়া পর্যন্ত ফর্ম্যাট শর্টকাট বিদ্যমান।


দ্বারা প্রতিস্থাপন tupleদ্বারা 78 বাইট(*...,)
ব্ল্যাক আউল কাই

f"string"ব্যবহারটি আপনার উত্তর পাইথনকে 3.6+ একচেটিয়া করে তোলে, তাই আপনি সচেতন হন। ভাল কাজ যদিও!
কানেক্টিওরচার্জার

8

রুবি, 61 59 55 বাইট

->n{s='AA-AA000-';eval's.succ!;'*n;s[2]+=s[5,4];s[0,9]}

এছাড়াও 55 বাইট:

->n{s='AA-AA000-';eval's.succ!;'*n;s[2]+=s.slice!5,4;s}

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

এটি একটি কাউন্টারকে আরম্ভ করে AA-AA000-, এটি nবার বাড়িয়ে তোলে (কোডটির একটি স্ট্রিংকে এন এবং evalআইং দিয়ে এমন করে দেয় ) এবং তারপরে 3 তম পরে শেষ 4 টি অক্ষর স্থানান্তরিত করে।


->n{s=('AA-AA000-'..?Z*9).step.take(n)[-1];s[2]+=s.slice!5,4;s}এটি দীর্ঘতর তবে আমি যদি এটি সংক্ষিপ্ত করা সম্ভব হয় তবে অবাক করি।
এরিক ডুমিনিল

তত্ত্বের ভিত্তিতে, ->n{s=[*'AA-AA000-'..?Z*9][n];s[2]+=s.slice!5,4;s}কাজ করা উচিত এবং এটি কেবল 50 বাইট দীর্ঘ, তবে এটি প্রথম প্রতিটি প্লেট তৈরি করে। : - /
এরিক ডুমিনিল

1
"s + = s.slice! 3,2" 50 বাইটের জন্য
জিবি

তারপরে এটিও কাজ করা উচিত: 45 বাইট
GB

7

পিএইচপি , 96 84 79 বাইট

-5 বাইট ইসমাইল মিগুয়েল এর দুর্দান্ত মন্তব্যে ধন্যবাদ ।

for($s=AAAA;$x++^$argn/1e3;)$s++;printf('%.2s-%03u-'.$s[2].$s[3],$s,$argn%1e3);

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

আমি পিএইচপি-তে চিঠিগুলি বাড়িয়ে দিতে পারব এই সুযোগটি আমি গ্রহণ করি! তাই AAAA++হয়ে যাবে AAABএবং AAAZ++হয়ে যাবে AABA। আমি পূর্ণসংখ্যার অংশ পেয়ে কতবার চিঠিগুলি বাড়িয়ে দিতে হয় তা গণনা করি input/1000। তারপরে চারটি অক্ষরের দৈর্ঘ্যের বহুগুণ বৃদ্ধি করুন এবং এর প্রথম দুটি এবং শেষ দুটি অক্ষর স্বয়ংক্রিয়ভাবে প্লেটের বাম এবং ডানদিকে পরিণত হবে।

উদাহরণস্বরূপ 675999বর্ণের সংখ্যার ইনপুট দেওয়ার জন্য (int)(675999 / 1000) = 675, তাই AAAAহয়ে যাবে AAZZ

অবশেষে, মধ্যম সংখ্যা দ্বারা গণনা করা হয় input%1000এবং সবকিছু সাহায্যে নির্দিষ্ট বিন্যাসে ছাপা হয় printf,%.2sস্ট্রিংয়ের প্রথম দুটি অক্ষর মুদ্রণ করে, %03u3 টি জিরো দিয়ে বামে সংখ্যাটি প্যাড করে।


2
@ এলকান দুঃখিত, 12 বাইট ব্যয়ে সমস্যাগুলি সমাধান করুন। আমার
গণ্ডগোলের

1
পরিবর্তে %0.2sআপনি লিখতে পারেন %.2s। এটি আপনাকে 1 বাইট বাঁচায়। (একটি ছোট্ট টিপ হিসাবে: আপনি যদি নির্দিষ্ট দশমিক জায়গার দশমিক সংখ্যা আউটপুট করতে চান তবে আপনি %.2fএকইভাবে কাজ করতে পারেন (বা অন্য কোনও সংশোধক) করতে পারেন )
ইসমাইল মিগুয়েল

1
@ ইসমাইল মিগুয়েল ধন্যবাদ, জানতাম না যে আমরা এটিকে ফেলে দিতে পারি 0। সম্পাদনা করুন: ডকুমেন্টেশনগুলি দেখে মনে হচ্ছে এটির প্রথম স্থানেও আমার দরকার নেই: পি
নাইট 2

1
ওহ, হ্যাঁ, আপনি এগুলি ফেলে দিতে পারেন। এছাড়াও, আপনি $x++^$argn/1e3পরিবর্তে করতে পারেন $x++<(0^$argn/1e3)এবং আপনার 4 বাইট সংরক্ষণ করা উচিত। এই ইচ্ছার লুপ পর্যন্ত ($x++^$argn/1e3) === 0, এবং এটা 0যখন $xএবং $argn/1e3একই পূর্ণসংখ্যা নম্বর (ব্যবহার ^পূর্ণসংখ্যা সংখ্যার নিক্ষেপ হবে)। আপনি এটি স্যান্ডবক্স.অনলাইনপ্পফুনিউশনস
ইসমাইল মিগুয়েল

1
@ ইসমাইল মিগুয়েল আবারও ধন্যবাদ, খুব চতুর ধারণা। আপনি এই উত্তরটি
জেএসের

7

সি, 88 86 বাইট

# ডিফাইন ডি (বি) এ / বি / 1000% 26 + 65
চ (ক) {printf, ( "% গ% সি% 03d-% গ% গ", ঘ (17576), ঘ (676), একটি% 1000, ঘ (26), ঘ (1));}

খুব সহজ, এটি ক্ষেত্রগুলি নিষ্কাশনের জন্য বিভাগ এবং মডুলাস ব্যবহার করে, অক্ষরগুলিকে ASCII অক্ষরগুলিতে ম্যাপ করার জন্য 'A' যুক্ত করে এবং সংখ্যার জন্য প্রিন্টফ ফর্ম্যাট করে।

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



6

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

Au2ããs₄‰`UèX₄+¦'-.øý

-২ বাইট (এবং পুরো তালিকাটি তৈরি না করে পারফরম্যান্স বাড়িয়েছে) @ গ্রিমিকে ধন্যবাদ ।

0 ভিত্তিক সূচক।

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

ব্যাখ্যা:

Au            # Push the lowercase alphabet, and uppercase it
  2ã          # Create all possible pairs by taking the cartesian product with itself:
              #  ["AA","AB","AC",...,"ZY","ZZ"]
    ã         # Get the cartesian product of this list with itself:
              #  [["AA","AA"],["AA","AB"],...,["ZZ","ZZ"]]
s             # Swap to push the (implicit) input
 ₄‰           # Take the divmod-1000 of it
              #  i.e. 7483045 becomes [7483,45]
    `         # Push these values separated to the stack
     U        # Pop and store the remainder part in variable `X`
      è       # Index the integer part into the list of letter-pairs we created earlier
              #  i.e. 7483 will result in ["AL","BV"]
X             # Push the remainder part from variable `X` again
 ₄+           # Add 1000 to it
   ¦          # And remove the leading 1 (so now the number is padded with leading 0s)
              #  i.e. 45 becomes 1045 and then "045"
    '-.ø     '# Surround this with "-" (i.e. "045" becomes "-045-")
        ý     # Join the two pairs of letters by this
              #  i.e. ["AL","BV"] and "-045-" becomes "AL-045-BV"
              # (after which the top of the stack is output implicitly as result)

শেষ অংশটি ( সমান-বাইট বিকল্পের জন্য s₄‰`UèX₄+¦'-.øý) হতে পারে I₄÷èI₄+3.£.ý'-ý:
এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

I₄÷           # Push the input, integer-divided by 1000
   è          # Use it to index into the letter-pairs we created earlier
              #  i.e. 7483045 becomes 7483 and then ["AL","BV"]
I₄+           # Push the input again, and add 1000
   3.£        # Only leave the last three digits
              #  i.e. 7483045 becomes 7484045 and then "045"
            # Intersperse the pair with this
              #  i.e. ["AL","BV"] and "045" becomes ["AL","045","BV"]
        '-ý  '# And join this list by "-"
              #  i.e. ["AL","045","BV"] becomes "AL-045-BV"
              # (after which the top of the stack is output implicitly as result)

1
20 সহ Au2ããI₄‰`UèX₄+¦'-.øýবা Au2ããI₄÷èI₄+3.£'-.øý
গ্রিমি

1
@ গ্রিমি ধন্যবাদ! এবং এখন এটি পুরোপুরি তালিকায় উত্পন্ন না করে এবং তৈরি করেও অনেক দ্রুত। :)
কেভিন ক্রুইজসেন

6

জে , 56 49 46 বাইট

226950 A.'--',7$_3|.4,@u:65 48+/(4 3#26 10)#:]

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

-3 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য

পুরো জিনিসটি 7 নেস্টেড ট্রেন ছাড়া কিছুই নয় - যদি তা মজা না করে তবে কী?

  ┌─ 226950                                            
  ├─ A.                                                
  │        ┌─ '--'                                     
──┤        ├─ ,                                        
  │        │      ┌─ 7                                 
  └────────┤      ├─ $                                 
           │      │   ┌─ _3                            
           └──────┤   ├─ |.                            
                  │   │    ┌─ 4                        
                  └───┤    │     ┌─ ,                  
                      │    ├─ @ ─┴─ u:                 
                      └────┤                           
                           │     ┌─ 65 48              
                           │     ├─ / ───── +          
                           └─────┤                     
                                 │       ┌─ '4 3#26 10'
                                 └───────┼─ #:         
                                         └─ ]         

1
শান্ত! ফলস্বরূপ স্ট্রিংটি ফর্ম্যাট করার জন্য প্যুমুটেশন ব্যবহার করা একটি দুর্দান্ত উপায়।
গ্যালেন ইভানভ


ধন্যবাদ @ ফ্রাউনফ্রোগ!
যোনা



5

আর , 101 বাইট

b=0:3;a=scan()%/%c(10^b,1e3*26^b)%%rep(c(10,26),e=4);intToUtf8(c(a[8:7],-20,a[3:1]-17,-20,a[6:5])+65)

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

কেবল প্রয়োজনীয় গাণিতিক গণনা করে। আমি ভেল্টারে aএকটি বেহুদা মান অন্তর্ভুক্ত করে 5 বাইট সংরক্ষণ করেছি a[4], আমাকে সাহায্যকারী ভেক্টরটিকে পুনরায় ব্যবহার করতে দিয়েছি b

উদাহরণস্বরূপ দ্বিতীয় অক্ষর ( Bইন AB-012-CD) বিবেচনা করুন। এই চরিত্রটি প্রতি পরিবর্তিত হয়26×26×1000=676000nn %/% 676000 %% 26%/%%%


4

জেলি ,  26  22 বাইট

ØAṗ2,`ØDṗ3¤ṭŒp⁸ị2œ?j”-

একটি পূর্ণসংখ্যার লিঙ্ক একটি পূর্ণসংখ্যাকে (1-ইনডেক্সড) গ্রহণ করে যা অক্ষরের একটি তালিকা দেয় ... ক্রেজি ধীরে ধীরে এটি প্রথমে সমস্ত প্লেট তৈরি করে!

এটি অনলাইন চেষ্টা করুন! (শেষ হবে না)
বা হ্রাস বর্ণমালা সংস্করণ চেষ্টা করুন(অক্ষরগুলির জন্য কেবল "ABC")।


কোডের জন্য যা সময়োপযোগে সম্পূর্ণ হয় এখানে একটি 32 বাইট পূর্ণ-প্রোগ্রাম (0-সূচিযুক্ত) দেওয়া হয়েছে যা মডুলার গাণিতিক এবং সংখ্যার ভিত্তিক সংক্ষিপ্তকরণের পরিবর্তে একক প্লেট তৈরি করে:

dȷ+“©L§“£ż’µḢṃØAṙ1¤ḊŒHW€jDḊ€$j”-

আর একবার চেষ্টা কর!


মনে হয় এমন ড্যাশগুলি মিস করে, সুতরাং আপাতত এটি চ্যালেঞ্জের নিয়মের সাথে খাপ
খায় না

1
আহ, আমি তাদের একধরণের বিভাজন হিসাবে সম্পূর্ণ উপেক্ষা করেছি! এই পদ্ধতিগুলির জন্য বেশ পার্থক্য তৈরি করে :(
জোনাথন অ্যালান

এর জন্য দুঃখিত: সি এখনও জেলিতে এটি করা দেখে খুব সুন্দর!
এলকান

এগুলিতে যুক্ত করতে 7 বাই যুক্ত করা হয়েছে, নিশ্চিত যে এখন একটি সংক্ষিপ্ত সামগ্রিক পদ্ধতি রয়েছে ...
জোনাথন অ্যালান

ওফস, গ্রিমিকে ধন্যবাদ - আমি এখানে থাকাকালীন 3 দ্বারা গল্ফও করতে পারি: পি - জোনাথন অ্যালান 1 মিনিট আগে
জোনাথন অ্যালান


3

কাঠকয়লা , 33 বাইট

Nθ¹✂I⁺θφ±³≔⪪⍘⁺X²⁶¦⁵÷θφα²η¹⊟ηM⁹←⊟η

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Nθ

নম্বরটি ইনপুট করুন।

¹

মুদ্রণ a -

✂I⁺θφ±³

সংখ্যাটিতে 1000 যুক্ত করুন, তারপরে ফলাফলটি স্ট্রিংয়ে দিন এবং শেষ তিনটি সংখ্যা মুদ্রণ করুন।

≔⪪⍘⁺X²⁶¦⁵÷θφα²η

সংখ্যাটি 1000 দ্বারা ভাগ করুন, তারপরে 26⁵ যুক্ত করুন, সুতরাং বড় আকারের বর্ণমালা ব্যবহার করে কাস্টম বেসে রূপান্তরকরণের ফলে দৈর্ঘ্যের 6 টি স্ট্রিং আসে, যার পরে অক্ষরের জোড়ায় বিভক্ত হয়।

¹

মুদ্রণ a -

⊟η

শেষ জোড়া চিঠি মুদ্রণ করুন।

M⁹←

নম্বর প্লেটের শুরুতে যান।

⊟η

বাকি কাঙ্ক্ষিত অক্ষরগুলি মুদ্রণ করুন।



3

এক্সেল, 183 167 155 147 বাইট

-16 বাইট @ নীল ধন্যবাদ। (ব্যবহার করে E3))

-12 বাইটস @ কিটাকে ধন্যবাদ। ( TRUNCপরিবর্তে QUOTIENT)

-8 বাইটস @ জোনাথান লারউচে ( INTপরিবর্তে TRUNC) ধন্যবাদ

=CHAR(65+INT(A1/17576E3))&CHAR(65+MOD(INT(A1/676E3),26))&"-"&TEXT(MOD(A1,1E3),"000")&"-"&CHAR(65+MOD(INT(A1/26E3),26))&CHAR(65+MOD(INT(A1/1E3),26))

5 অংশ সংযুক্ত করে:

CHAR(65+INT(A1/17576E3))
CHAR(65+MOD(INT(A1/676E3),26))
TEXT(MOD(A1,1E3),"000")
CHAR(65+MOD(INT(A1/26E3),26))
CHAR(65+MOD(INT(A1/1E3),26))

না MOD(QUOTIENT(A1,1E3),26)কাজ না? এছাড়াও, কেন 1E3জন্য 1000কিন্তু না 26E3ইত্যাদি?
নীল

পুরোপুরি টিআরএনসি অপসারণ করে এবং বিভাগকে এমওডির ভিতরে নিয়ে যাওয়ার মাধ্যমে আরও বেশি সঞ্চয় করুন। = CHAR (65 + + ক 1 / 17576E3) & CHAR (65 + + MOD এর (ক 1 / 676E3,26)) & "-" & টেক্সট (MOD এর (A1,1E3), "000") & "-" & CHAR (65 + + MOD এর (ক 1 / 26E3,26)) এবং CHAR (65 + এমওডি (এ 1 / 1E3,26)) এটিকে 127 বাইটে নামিয়ে আনছে।
কেতা

আমি বোঝাচ্ছি কোটেন্ট সরিয়েছি। মূলত আমি কমেটের পরিবর্তে / এর সাথে ভাগফলকে ট্রাঙ্কে পরিবর্তিত করার পরামর্শ দিচ্ছিলাম।
কেতা

@ চিতা, আপনার 127 বাইট সমাধানটি কিছু মানগুলির জন্য ব্যর্থ: যেমন 456 975 996->[Z-996-ZZ
ওয়ার্নিশ

@ কিিতা, মনে হচ্ছে CHAR(65+)নিঃশব্দে দশমিক দশক কেটে যায় %.9999997614649। এর চেয়ে বড়টি গোল হয়ে গেছে। তুলনা CHAR(65+24.9999997614649)এবং CHAR(65+24.999999761465)
ওয়ার্নিশ


2

জাপট , 21 বাইট

অশ্লীল ধীরে! সিরিয়াসলি, এটি চালানোর চেষ্টাও করবেন না!

গতরাতে এই কাজটি করার জন্য লড়াই করার সময় আমি কোথায় ভুল হয়ে গিয়েছিলাম তা উপলব্ধি করার জন্য কেভিনের কাছে টুপিটির টিপ ।

;gBï ï ïq#d0o ùT3 û-5

এটি ব্যবহার করে দেখুন - সংখ্যার সীমাটি এতে সীমাবদ্ধ করে 000-005

;gBï ï ïq#d0o ùT3 û-5     :Implicit input of integer
 g                        :Index into
; B                       :  Uppercase alphabet
   ï                      :  Cartesian product with itself
     ï                    :  Cartesian product of the result with itself
       ï                  :  Cartesian product of that with
         #d0              :    1000
            o             :    Range [0,1000)
              ùT3         :    Left pad each with 0 to length 3
                  û-5     :    Centre pad each with "-" to length 5
        q                 :  Join the first element (the 2 pairs of letters) with the second (the padded digit string) 

2

ফোর্থ (গফার্থ) , 94 বাইট

: x /mod 65 + emit ; : f dup 1000 / 17576 x 676 x ." -"swap 0 <# # # # #> type ." -"26 x 1 x ;

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

0-ইন্ডেক্স। স্ট্যাকের শীর্ষ থেকে ইনপুট নেওয়া হয়

কোড ব্যাখ্যা

\ extract out some common logic
: x             \ start a new word definition
  /mod          \ divide first argument by second and get both quotient and remainder
  65 +          \ add 65 (ascii A) to quotient
  emit          \ output
;               \ end word definition

: f             \ start a new word definition
  dup 100 /     \ duplicate input and divide by 1000
  17576 x       \ divide by 26^3 and output ascii char
  676 x         \ divide by 26^2 and output ascii char
  ." -"         \ output "-"
  swap 0        \ grab original number and convert to double-cell number
  <# # # # #>   \ convert last 3 chars of number to a string
  type ." -"    \ output string followed by "-"
  26 x          \ divide result of last mod by 26 and output ascii char
  1 x           \ output ascii char for remaining amount
;               \ end word definition




1

পাইথন 3 , 89 বাইট

lambda n:h(n//676)+f"-{n%1000:03}-"+h(n)
h=lambda x:'%c%c'%(x//26000%26+65,x//1000%26+65)

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

-1 বাইট মাইপেটলিয়নকে ধন্যবাদ


1
1 বাইট সংরক্ষণ chr(x//26000%26+65)+chr(x//1000%26+65)করতে পরিবর্তন করুন '%c%c'%(x//26000%26+65,x//1000%26+65)
মাইপেটলিয়ন

1

ম্যাটল্যাব , 113 বাইট

c=@(x,p)char(mod(idivide(x,1000*26^p),26)+65);
s=@(n)[c(n,3),c(n,2),num2str(mod(n,1000),'-%03d-'),c(n,1),c(n,0)]

ব্যাখ্যা:

প্রথম লাইন একটি ফাংশন যা CHAR (থেকে উত্পাদন করা হবে সংজ্ঞায়িত Aকরতে Z, 2 ইনপুট ফাংশন)। xপ্লেট সংখ্যায় রূপান্তর করতে সূচক নম্বর এবং একটি পূর্ণসংখ্যা pযা 26 (অর্থাত 26^p) এর ব্যয়কারী হিসাবে ব্যবহৃত হবে । এই দ্বিতীয় ইনপুটটি প্রথম বর্ণানুক্রমিক প্লেটের অঙ্কের জন্য গণনাগুলি p=3শেষ এক ( p=0) এর নিচে সামঞ্জস্য করতে দেয় ।

উদাহরণস্বরূপ, দ্বিতীয় অঙ্কের জন্য, প্রতি 1000 * 26 * 26 পুনরাবৃত্তিকে সাইকেল চালানো, অপারেশন: mod(idivide(x,1000*26^2),26)0 এবং 25 এর মধ্যে একটি সূচক ফেরত দিন, যা পরে char65 যুক্ত করে একটি এসসিআইআইতে রূপান্তরিত হয় (কারণ সূচকটি 0ভিত্তিক)

দ্বিতীয় লাইনটি কেবল অক্ষরকে একত্রে একত্রিত করে। প্রতিটি বর্ণানুক্রমিক অক্ষরটি ফাংশনটির ব্যবহারের সাথে গণনা করা হয় c(x,p), সংখ্যার চরিত্রটি কেবল একটি moduloঅপারেশন দিয়ে গণনা করা হয় এবং স্ট্রিংয়ে রূপান্তরিত হয়।

প্লেট নম্বর রচনা করে স্ট্রিংয়ের প্রতিটি উপাদান নীচে রয়েছে:

digit #     |    how often is it cycled             |  code
----------------------------------------------------------------
digit 1     | cycle every 1000*26*26*26=1000*26^3   | c(n,3) 
digit 2     | cycle every 1000*26*26   =1000*26^2   | c(n,2) 
digit 3,4,5 | cycle every iteration                 | num2str(mod(n,1000),'-%03d-')
digit 6     | cycle every 1000*26      =1000*26^1   | c(n,1) 
digit 7     | cycle every 1000         =1000*26^0   | c(n,0) 

যেহেতু আমি আপনাকে অনলাইনে ম্যাটল্যাব চেষ্টা করতে পারছি না ( সম্পাদনা করুন: আসলে আপনি এটি অনলাইনে চেষ্টা করতে পারেন ), তাই আমি ম্যাটল্যাব ব্যবহারকারীদের পরীক্ষার কেসগুলি যাচাই করার সম্ভাবনাটি দেব:

% chose some test cases
n = uint32([0;1;999;1000;675999;676000;456975999]) ;

% work out their plate numbers
plates = s(n) ;

% display results
fprintf('\n%10s | Plate # \n','Index')
for k=1:numel(n)
    fprintf('%10d : %s\n',n(k),plates(k,:))
end

আউটপুট:

     Index | Plate # 
         0 : AA-000-AA
         1 : AA-001-AA
       999 : AA-999-AA
      1000 : AA-000-AB
    675999 : AA-999-ZZ
    676000 : AB-000-AA
 456975999 : ZZ-999-ZZ

বৈকল্পিক: নোট করুন যে নম্বরটি অক্ষর রূপান্তর করতে দেওয়া sprintfবা fprintfতার যত্ন নেওয়ার বিকল্পটি সম্ভব। এটি ফাংশনটি সরল করার অনুমতি দেয় cতবে সামগ্রিকভাবে এই বাস্তবায়নে আরও কয়েকটি বাইটের ফলাফল হয় (১১৯ বাইট):

c=@(x,p)mod(idivide(x,1000*26^p),26)+65 ;
s=@(n)sprintf('%c%c-%03d-%c%c\n',[c(n,3),c(n,2),mod(n,1000),c(n,1),c(n,0)]')

1

q , 78 বাইট

{sv["-","0"^-4$($:[x mod 1000]),"-"]2 2#(|).Q.A mod[x div 1000*26 xexp(!)4]26}

                                                    x div 1000*26 xexp(!)4     / input (floor) divided by 1000*26 ^ 0 1 2 3
                                                mod[                      ]26  / mod 26
                                           .Q.a                                / alphabet uppercase, indexed into by preceeding lines, for x=1000, we'd get "BAAA"
                                    2 2#(|)                                    / reverse and cut into 2x2 matrix ("AA";"AB")
               ($:[x mod 1000]),"-"                                            / string cast x mod 1000 and append "-"
            -4$                                                                / left pad to length 4, "  0-"
    "-","0"^                                                                   / fill nulls (" ") with "0" and prepend "-"
 sv[              x                ]y                                          / join elems of y by x

1

সি (জিসিসি) , 136 106 105 বাইট

#define P(i)s[i]=65+x%26;x/=26;
z;s[]=L"  -%03d-  ";f(x){z=x%1000;x/=1e3;P(9)P(8)P(1)P(0)wprintf(s,z);}

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

সেলিংক্যাট এর সমাধান থেকে -7 বাইট , এটি দ্বারা অনুপ্রাণিত অতিরিক্ত -23 সহ

-1 ceilingcat থেকে বাইট সমাধান পরিবর্তন করে char[]করার জন্য একটি wchar_t[]পরোক্ষভাবে কাস্টint[]

0-ভিত্তিক সূচক ব্যবহার করে।

ব্যাখ্যা / Ungolfed:

int s[] = L"  -%03d-  "; // Pre-made wide-string with dashes and ending null byte
                         // and wprintf directive for digits
int z;                   // Temporary variable to store the digit part
void f(int x) {
    z = x % 1000;        // The digits represent x % 1000
    x /= 1000;           
    s[9] = 'A' + x % 26; // Place least significant letter
    x /= 26;             // Divide off least significant letter
    s[8] = 'A' + x % 26; // Place second letter
    x /= 26;             // Divide off second letter
    s[1] = 'A' + x % 26; // Place third letter
    x /= 26;             // Divide off third letter
    s[0] = 'A' + x;      // Place fourth letter (Don't need to % 26 because x < 26 now)
    wprintf(s, z); // Print finished string (with x%1000 replacing %03d)
}

ধন্যবাদ! যে ধারণা ব্যবহার আমি মুছে aএবং bম্যাক্রো থেকে পরামিতি এবং নিচে 106 বাইট
pizzapants184



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