প্লেট থেকে রাজ্যে


16

এটি মূলত কোনও মার্কিন লাইসেন্স প্লেট জেনারেটের বিপরীত

চ্যালেঞ্জ: নীচের লাইসেন্স প্লেট ফর্ম্যাটগুলির মধ্যে একটির সাথে মেলে এমন স্ট্রিং দেওয়া হয়েছে, যে ফর্ম্যাটিংয়ের সাথে মেলে এমন সমস্ত সম্ভাব্য রাজ্য আউটপুট দেয়। নীচের টেবিলটিতে অন্তর্ভুক্তির মাধ্যমে 0একটি একক অঙ্কের জন্য দাঁড়ায় এবং সমেতের মাধ্যমে একটি একক বর্ণের জন্য দাঁড়ায় । এই চ্যালেঞ্জের উদ্দেশ্যে, আমরা জটিল ফর্ম্যাট নিয়ম (যেমন ডেলাওয়্যার, যার পরিবর্তনশীল সংখ্যা রয়েছে) এর সাথে রাষ্ট্রগুলিকে উপেক্ষা করছি এবং বর্ণমালা অক্ষর (যেমন, এবং ) অপসারণকে উপেক্ষা করছি ।09AAZI1

AAA 000: AK, IA, MS, MP, VT
0000: AS
AAA0000: AZ, GA, WA
000 AAA: AR, KS, KY, LA, ND, OR
0AAA000: CA
AA-00000: CT
AA-0000: DC
AAA A00: FL
AA 00000: IL
000A,000AA,000AAA,AAA000: IN
0AA0000: MD
AAA 0000,0AA A00,AAA 000: MI
000-AAA: MN
00A-000: NV
000 0000: NH
A00-AAA: NJ
000-AAA,AAA-000: NM
AAA-0000: NY, NC, PA, TX, VA, WI
AAA 0000: OH
000AAA: OK
AAA-000: PR
000-000: RI
AAA 000,000 0AA: SC
A00-00A: TN
A00 0AA: UT

উদাহরণ:

B32 9AG
[UT]

1YUC037
[CA]

285 LOR
[AR, KS, KY, LA, ND, OR] (in any order)

285-LOR
[MN, NM] (in any order)

285LOR
[IN, OK] (in any order)

বিধি এবং ব্যাখ্যা

  • ইনপুট স্ট্রিংটি খালি-খালি গ্যারান্টিযুক্ত এবং উপরের ফর্ম্যাটগুলির মধ্যে একটিতে গ্যারান্টিযুক্ত
  • উপরেরটি বাদে অন্য কোনও ফর্ম্যাট দেওয়া থাকলে আচরণটি অপরিজ্ঞাত
  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক পদ্ধতি দ্বারা দেওয়া যেতে পারে
  • আপনি ফলাফলটি মুদ্রণ করতে বা এটিকে কোনও কার্য ফলাফল হিসাবে ফিরিয়ে দিতে পারেন
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়

উত্তর:


15

জাভাস্ক্রিপ্ট (ES6),  203 202 201  200 বাইট

@ নাহুয়েলফৌইলুলকে 1 বাইট সংরক্ষণ করা হয়েছে

s=>'xMiAZGAWaMIOhNvInxMNNmARKSKYLANDOrNMPrAKIAMIMSMPSCVtAsMdxScRiNhUtDcCtxFlxNYNCPATXVAWiInIlINOkNjCaTn'.match(/[A-Z]*./g)[s.replace(/./g,c=>c<'!'?0:1/c?9:6-~(c+1))*3%47%30].toUpperCase().match(/../g)

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

কিভাবে?

ইনপুট রূপান্তর

এন নিম্নলিখিত বিকল্পগুলি প্রয়োগ করে পরিণত করি:

  • স্পেস দিয়ে প্রতিস্থাপন করা হয় 0
  • অঙ্কগুলি প্রতিস্থাপন করা হয় 9
  • অক্ষর প্রতিস্থাপন করা হয় 7
  • হাইফেন দিয়ে প্রতিস্থাপন করা হয় 6

জেএস কোড হিসাবে:

c < '!' ?        // if c is a space:
  0              //   replace it with 0
:                // else:
  1 / c ?        //   if c is a digit:
    9            //     replace it with 9
  :              //   else:
    6 - ~(c + 1) //     if c is a hyphen, this gives:
                 //       6 - ~('-1') --> 6 - 0 --> 6
                 //     if c is a letter (e.g. 'A'), this gives:
                 //       6 - ~('A1') --> 6 - ~NaN --> 6 - (-1) --> 7

হ্যাশ ফাংশন

তারপরে আমরা নিম্নলিখিত হ্যাশ ফাংশনটি প্রয়োগ করি:

(এন)=((3×এন)গেলিক ভাষার47)গেলিক ভাষার30

[1..29]000AAAAA00024 তবে এই প্লেট ফর্ম্যাটগুলি ইন্ডিয়ায় একচেটিয়াভাবে ব্যবহৃত হয় বলে এটি পুরোপুরি ঠিক fine

 format     | n        | * 3       | mod 47 | mod 30 | states
------------+----------+-----------+--------+--------+----------------------
  'AAA 000' |  7770999 |  23312997 |   10   |   10   | AK,IA,MI,MS,MP,SC,VT
     '0000' |     9999 |     29997 |   11   |   11   | AS
  'AAA0000' |  7779999 |  23339997 |   32   |    2   | AZ,GA,WA
  '000 AAA' |  9990777 |  29972331 |    8   |    8   | AR,KS,KY,LA,ND,OR
  '0AAA000' |  9777999 |  29333997 |   28   |   28   | CA
 'AA-00000' | 77699999 | 233099997 |   19   |   19   | CT
  'AA-0000' |  7769999 |  23309997 |   18   |   18   | DC
  'AAA A00' |  7770799 |  23312397 |   21   |   21   | FL
 'AA 00000' | 77099999 | 231299997 |   25   |   25   | IL
     '000A' |     9997 |     29991 |    5   |    5   | IN
    '000AA' |    99977 |    299931 |   24   |   24   | IN
   '000AAA' |   999777 |   2999331 |   26   |   26   | IN,OK
   'AAA000' |   777999 |   2333997 |   24   |   24   | IN
  '0AA0000' |  9779999 |  29339997 |   12   |   12   | MD
 'AAA 0000' | 77709999 | 233129997 |   33   |    3   | MI,OH
  '0AA A00' |  9770799 |  29312397 |    1   |    1   | MI
  '000-AAA' |  9996777 |  29990331 |    7   |    7   | MN,NM
  '00A-000' |  9976999 |  29930997 |   34   |    4   | NV
 '000 0000' | 99909999 | 299729997 |   46   |   16   | NH
  'A00-AAA' |  7996777 |  23990331 |   27   |   27   | NJ
  'AAA-000' |  7776999 |  23330997 |    9   |    9   | NM,PR
 'AAA-0000' | 77769999 | 233309997 |   23   |   23   | NY,NC,PA,TX,VA,WI
  '000-000' |  9996999 |  29990997 |   15   |   15   | RI
  '000 0AA' |  9990977 |  29972931 |   44   |   14   | SC
  'A00-00A' |  7996997 |  23990991 |   29   |   29   | TN
  'A00 0AA' |  7990977 |  23972931 |   17   |   17   | UT

রাজ্য এনকোডিং

সমস্ত রাষ্ট্রীয় নিদর্শনগুলি একক স্ট্রিংয়ে একত্রে যুক্ত হয়, প্রতিটি প্যাটার্ন একটি নিম্ন কেস লেটার দিয়ে শেষ হয়। খালি স্লট একটি অবাধ ভরা x

[ [], [ 'MI' ], [ 'AZ', 'GA', 'WA' ], [ 'MI', 'OH' ], ... ] --> 'xMiAZGAWaMIOh...'

match(/[A-Z]*./g)(এন)

অবশেষে, প্যাটার্নটি নিজেই পুরো বড় হাতের অক্ষরে রূপান্তরিত হয় এবং 2 টি অক্ষরের গ্রুপে বিভক্ত হয়।


2
আমি পছন্দ করি আপনি কীভাবে সর্বদা স্ট্রিং সম্পর্কিত সমস্যার মতো মার্জিত গাণিতিক সমাধান নিয়ে আসেন। :)
অ্যাডমবর্কবার্ক

ডি আহা! আমার আজ খুব ভাল দিন কাটছে না, আমি ?!
শেগি

খুব চালাক পদ্ধতি! দুটি প্লেট ফর্ম্যাট যেগুলির সংঘর্ষ হয় সেগুলি ইলিনয় নয়, ইন্ডিয়ানা।
ব্র্যাডিসি

[A-Z]*.পরিবর্তে .*?[a-z]একটি বাইট সংরক্ষণ করা উচিত
নাহুয়েল ফিউইলুল

@ নাহুয়েলফুয়েলুল আমি আগে এই ভুলটি করেছি ... ধন্যবাদ!
আর্নল্ড

2

টি-এসকিউএল, 475 বাইট

SELECT STUFF(value,1,8,'')
FROM STRING_SPLIT('000 0000NH|000 055 SC|000 555 AR,KS,KY,LA,ND,OR|0000    AS|000-000 RI|0005    IN|00055   IN|000555  IN,OK|000-555 MN,NM|005-000 NV|055 500 MI|0550000 MD|0555000 CA|500 055 UT|500-005 TN|500-555 NJ|55 00000IL|55-0000 DC|55-00000CT|555 000 AK,IA,MI,MS,MP,SC,VT|555 0000MI,OH|555 500 FL|555000  IN|555-000 NM,PR|5550000 AZ,GA,WA|555-0000NY,NC,PA,TX,VA,WI','|')
,i WHERE v LIKE TRIM(REPLACE(REPLACE(LEFT(value,8),5,'[A-Z]'),0,'[0-9]'))

লাইন বিরতি কেবল পঠনযোগ্যতার জন্য।

TRIMফাংশনটি ব্যবহার করে এসকিউএল 2017 বা তারও বেশি সীমাবদ্ধ । এসকিউএল 2016 (এর জন্য প্রয়োজনীয় STRING_SPLIT), সম্ভবত RTRIM1 বাইটের পরিবর্তে বিকল্প দ্বারা ituting

আমিবনাম

আমি মূলত একটি বিপরীত LIKEম্যাচ করছি: আমি প্রতিটি প্লেটের প্যাটার্নটিকে একটি পূর্ণ ওয়াইল্ডকার্ড প্যাটার্ন মেলানো স্ট্রিংয়ে প্রসারিত করি মতো'[A-Z][0-9][0-9] [0-9][A-Z][A-Z]' , তারপরে ইনপুট মানের সাথে তুলনা করি এবং ম্যাচিং স্টেটগুলি (যা একক ক্ষেত্রে একত্রিত করা হয়) ফিরিয়ে আনছি।

লম্বা স্ট্রিং জিজেআইপি'র মাধ্যমে আরও কিছু জায়গা বাঁচাতে সক্ষম হতে পারে; আমি যদি এটি সাহায্য করে ...


2

পার্ল 5 (-p) , 165 বাইট

@ আর্নৌল্ডের জাভাস্ক্রিপ্টের উত্তর, বন্দরটিও তাকে উজ্জীবিত করেছে।

y/0-8/9/;y/- A-Z/607/;$_=('xMiAZGAWaMIOhNvInxMNNmARKSKYLANDOrNMPrAKIAMIMSMPSCVtAsMdxScRiNhUtDcCtxFlxNYNCPATXVAWiInIlINOkNjCaTn'=~/[A-Z]*./g)[$_*3%47%30];s/../\U$& /g

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


2

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

§⪪”}∧▶⧴βμÞ∕×peH✂d‽n➙MR⁶↙↷◨5⁶;πNM﹪θW:¡✂⧴O^(P↷kⅉχR⁺≔º↶∨§º⊞B⎚×p↔L\`²‖6'⁶⁹‴XüR⦃N4U⊙YF⁻ZMχLS⁸CX\hγ”;⌕⪪”{⊟“◨⦄»U>⌕⁻9“]±R▷Q↔θü&$▷l⁹Z⁼¡⁷×À›¶aA*βZ³δ¡⟲²Y«№⌕TμN»πX·SΣ"εl⊙=3✂S?K”;⭆S⎇№αιA⎇Σι⁰ι

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

                 S              Input string
                ⭆               Map over characters and join
                  ⎇             If
                     ι          Current character
                   №α           Is an uppercase letter
                      A         Then literal string `A`
                       ⎇        Else if
                         ι      Current character
                        Σ       Is non-zero
                          ⁰     Then digit `0`
                           ι    Else original character
        ⌕                       Find index in
          ”...”                 Compressed string of plates
         ⪪     ;                Split on semicolons
§                               Index into
  ”...”                         Compressed string of states
 ⪪     ;                        Split on semicolons
                                Implicitly print

সমস্ত পরীক্ষার কেস চেষ্টা করে দেখুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। (একাধিক ক্ষেত্রে প্রক্রিয়া করার জন্য কিছুটা আলাদা কোড দরকার needed)

আশ্চর্যজনকভাবে @ আরনাউল্ডের দ্রবণগুলির একটি বন্দর কেবল 121 বাইটে খুব খাটো:

§⪪”}∧↨¦↑↧‴q⁰mπi3JE⪫³yS⪪c)?0≦·ê⊞Þ«ⅉ⁺&±<pARιaγ1A↑1L¶⟧/)Vº;Π∧,b✂≦¤ⅉαX⊕|″IνB[w∕¦H´Gγ§ν⟲^π!⪪¶ςbFü⊟»2”;﹪׳I⭆S⎇№αι⁷⎇⁼ι ⁰⎇⁼ι-⁶9⁴⁷

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 30 দ্বারা দ্বিতীয় মডিউল অ্যারেতে সূচীকরণের অন্তর্ভুক্ত।


0

পাইথন 3 , 382 378 বাইট

import re;f=lambda p,l='[A-Z]',r=re.sub,f=re.findall:f(l+'{2}',f(r(l,'1',r('[0-9]','0',p))+l+'+','0000AS0001IN00011IN000111INOK111000IN000 011SC000 111ARKSKYLANDOR000-000RI000-111MNNM001-000NV011 100MI0110000MD0111000CA100-001TN100-111NJ11-0000DC111 100FL111 000AKIAMIMSMPSCVT111-000NMPR1110000AZGAWA11 00000IL11-00000CT111 0000MIOH111-0000NYNCPATXVAWI1100 011UT000 0000NH')[0])

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

এর সাথে সংখ্যাগুলি 0এবং অক্ষরগুলি প্রতিস্থাপন করে 1, তারপরে প্লেটের জন্য স্ট্রিংটি অক্ষরের একটি স্ট্রিং পরে অনুসন্ধান করে। তারপরে এটি স্ট্রিংয়ের প্রতিটি অ-ওভারল্যাপিং জোড়া অক্ষরকে সহজেই ফিরিয়ে দেয়।

সর্বাধিক বাইট দক্ষ নয়, তবে একটি ভাল শুরু (সম্ভবত)।

আমি এমন তথ্যের ভিত্তিতে চ্যালেঞ্জ উপভোগ করি যা কেবল উত্পন্ন করা যায় না।


0

05 এ বি 1 ই , 176 বাইট

•1–ºʒÉQ÷¦PαN]lā?¨ìÎ₆™@ΔîÅλEŸʒ»ú<ŧa–½ã…ôkƒ¼½Ü%-ò∊aÍÙ•44374в4вε©gIgQi…'-Q'd'a„ðQ)VIεY®Nèè.V}Pë0].•=#îYn«ÈO4êʒIWj∊bÛˆ_ãZÑ"yŠótм‰иÔN–HδÖc°ìSJ9Ç\}ζÎäǝÑïÒ∞V.÷ζkÚ"¿Õнα£!ɪB…žä•#sÏ`2ô

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

•1–ºʒÉQ÷¦PαN]lā?¨ìÎ₆™@ΔîÅλEŸʒ»ú<ŧa–½ã…ôkƒ¼½Ü%-ò∊aÍÙ•44374в4в
                        push all patterns as base 4 integers (0="-", 1=number, 2=letter, 3=" ")

ε                       for each pattern
  ©                       copy it for later use inside another for for-loop
  gIgQi                   if it has the same length, as input
    …'-Q'd'a„ðQ)V           store ["'-Q", "d", "a", "ðQ"] in Y (05AB1E codes for "equals '-', is positive, is letter and equals ' ')
    Iε                      for each letter of input
      Y®Nèè                   get the 05AB1E code corresponding to the current index of the pattern
      .V                      run it
    }
    P                       check if all positions of that pattern were true
  ë                       else
    0                       push false
]

.•=#îYn«ÈO4êʒIWj∊bÛˆ_ãZÑ"yŠótм‰иÔN–HδÖc°ìSJ9Ç\}ζÎäǝÑïÒ∞V.÷ζkÚ"¿Õнα£!ɪB…žä•#
                        push list of states matching the pattern

sÏ                      get the entry of that list, that is true in the other list
`2ô                        split into groups of 2 letters and print
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.