我一直在开发一些程序,其中包括我使用Alpha-2国家代码从url中获取一个向量(比如日本的GET /jp.svg )。除了,哦,不!我电脑上所有的国家数据都使用Alpha-3!那可不行..。
任务很简单:取一个Alpha-3国家代码(例如UKR)并返回它的Alpha-2等价物(例如UA)。因为我的硬盘比梵蒂冈小(因为这是密码-高尔夫),所以程序必须尽可能小。
代码可以找到这里
和下面。
[["AFG", "AF"],["ALA", "AX"],["ALB", "AL"],["DZA", "DZ"],["ASM", "AS"],["AND", "AD"],["AGO", "AO"],["AIA", "AI"],["ATA", "AQ"],["ATG", "AG"],["ARG", "AR"],["ARM", "AM"],["ABW", "AW"],["AUS", "AU"],["AUT", "AT"],["AZE", "AZ"],["BHS", "BS"],["BHR", "BH"],["BGD", "BD"],["BRB", "BB"],["BLR", "BY"],["BEL", "BE"],["BLZ", "BZ"],["BEN", "BJ"],["BMU", "BM"],["BTN", "BT"],["BOL", "BO"],["BIH", "BA"],["BWA", "BW"],["BVT", "BV"],["BRA", "BR"],["VGB", "VG"],["IOT", "IO"],["BRN", "BN"],["BGR", "BG"],["BFA", "BF"],["BDI", "BI"],["KHM", "KH"],["CMR", "CM"],["CAN", "CA"],["CPV", "CV"],["CYM", "KY"],["CAF", "CF"],["TCD", "TD"],["CHL", "CL"],["CHN", "CN"],["HKG", "HK"],["MAC", "MO"],["CXR", "CX"],["CCK", "CC"],["COL", "CO"],["COM", "KM"],["COG", "CG"],["COD", "CD"],["COK", "CK"],["CRI", "CR"],["CIV", "CI"],["HRV", "HR"],["CUB", "CU"],["CYP", "CY"],["CZE", "CZ"],["DNK", "DK"],["DJI", "DJ"],["DMA", "DM"],["DOM", "DO"],["ECU", "EC"],["EGY", "EG"],["SLV", "SV"],["GNQ", "GQ"],["ERI", "ER"],["EST", "EE"],["ETH", "ET"],["FLK", "FK"],["FRO", "FO"],["FJI", "FJ"],["FIN", "FI"],["FRA", "FR"],["GUF", "GF"],["PYF", "PF"],["ATF", "TF"],["GAB", "GA"],["GMB", "GM"],["GEO", "GE"],["DEU", "DE"],["GHA", "GH"],["GIB", "GI"],["GRC", "GR"],["GRL", "GL"],["GRD", "GD"],["GLP", "GP"],["GUM", "GU"],["GTM", "GT"],["GGY", "GG"],["GIN", "GN"],["GNB", "GW"],["GUY", "GY"],["HTI", "HT"],["HMD", "HM"],["VAT", "VA"],["HND", "HN"],["HUN", "HU"],["ISL", "IS"],["IND", "IN"],["IDN", "ID"],["IRN", "IR"],["IRQ", "IQ"],["IRL", "IE"],["IMN", "IM"],["ISR", "IL"],["ITA", "IT"],["JAM", "JM"],["JPN", "JP"],["JEY", "JE"],["JOR", "JO"],["KAZ", "KZ"],["KEN", "KE"],["KIR", "KI"],["PRK", "KP"],["KOR", "KR"],["KWT", "KW"],["KGZ", "KG"],["LAO", "LA"],["LVA", "LV"],["LBN", "LB"],["LSO", "LS"],["LBR", "LR"],["LBY", "LY"],["LIE", "LI"],["LTU", "LT"],["LUX", "LU"],["MKD", "MK"],["MDG", "MG"],["MWI", "MW"],["MYS", "MY"],["MDV", "MV"],["MLI", "ML"],["MLT", "MT"],["MHL", "MH"],["MTQ", "MQ"],["MRT", "MR"],["MUS", "MU"],["MYT", "YT"],["MEX", "MX"],["FSM", "FM"],["MDA", "MD"],["MCO", "MC"],["MNG", "MN"],["MNE", "ME"],["MSR", "MS"],["MAR", "MA"],["MOZ", "MZ"],["MMR", "MM"],["NAM", "NA"],["NRU", "NR"],["NPL", "NP"],["NLD", "NL"],["ANT", "AN"],["NCL", "NC"],["NZL", "NZ"],["NIC", "NI"],["NER", "NE"],["NGA", "NG"],["NIU", "NU"],["NFK", "NF"],["MNP", "MP"],["NOR", "NO"],["OMN", "OM"],["PAK", "PK"],["PLW", "PW"],["PSE", "PS"],["PAN", "PA"],["PNG", "PG"],["PRY", "PY"],["PER", "PE"],["PHL", "PH"],["PCN", "PN"],["POL", "PL"],["PRT", "PT"],["PRI", "PR"],["QAT", "QA"],["REU", "RE"],["ROU", "RO"],["RUS", "RU"],["RWA", "RW"],["BLM", "BL"],["SHN", "SH"],["KNA", "KN"],["LCA", "LC"],["MAF", "MF"],["SPM", "PM"],["VCT", "VC"],["WSM", "WS"],["SMR", "SM"],["STP", "ST"],["SAU", "SA"],["SEN", "SN"],["SRB", "RS"],["SYC", "SC"],["SLE", "SL"],["SGP", "SG"],["SVK", "SK"],["SVN", "SI"],["SLB", "SB"],["SOM", "SO"],["ZAF", "ZA"],["SGS", "GS"],["SSD", "SS"],["ESP", "ES"],["LKA", "LK"],["SDN", "SD"],["SUR", "SR"],["SJM", "SJ"],["SWZ", "SZ"],["SWE", "SE"],["CHE", "CH"],["SYR", "SY"],["TWN", "TW"],["TJK", "TJ"],["TZA", "TZ"],["THA", "TH"],["TLS", "TL"],["TGO", "TG"],["TKL", "TK"],["TON", "TO"],["TTO", "TT"],["TUN", "TN"],["TUR", "TR"],["TKM", "TM"],["TCA", "TC"],["TUV", "TV"],["UGA", "UG"],["UKR", "UA"],["ARE", "AE"],["GBR", "GB"],["USA", "US"],["UMI", "UM"],["URY", "UY"],["UZB", "UZ"],["VUT", "VU"],["VEN", "VE"],["VNM", "VN"],["VIR", "VI"],["WLF", "WF"],["ESH", "EH"],["YEM", "YE"],["ZMB", "ZM"],["ZWE", "ZW"]]输入/输出可以是字符串、字符列表或字符代码列表。文本案例不重要
USA -> US     # United States
AUS -> AU     # Australia
BIH -> BA     # Bosnia and Herzegovina
ISL -> IS     # Iceland
FSM -> FM     # Micronesia
SYC -> SC     # SeychellesUMI -> UM     # US Minor Outlying Islands
SPM -> PM     # Saint Pierre and Miquelon
GUF -> GF     # French Guiana
ATF -> TF     # French Southern Territories
HKG -> HK     # Hong Kong
IOT -> IO     # British Indian Ocean Territory发布于 2022-05-02 07:59:56
@MatthewJensen保存了1个字节
期望大写的字符串。返回由2个字符组成的数组。
s=>["TKKYKGPR"[i="ATFCOMCYMMYTPRKSGSSPMSRBALAATABLRBENBIHMACESTGNBIRLISRSVNUKR".search(s)/3]||s[0],"FMYTPSMSXQYJAOEWELIA"[i]||s[2-Buffer(`Z&:^*Wf&*/1*EKe'(1#/.534aq>HI*"#0551(C=J@75%,.I>"!G0"2#1)%)(2p#/4@!&<`).every(n=>q-=n-32,q=parseInt(s,36)*5%1601)]]或具有不可打印字符的250个字节:
我们将Alpha-2代码分为4组:
AFG→AF (156个条目)。ATG→AG (71个条目)。UKR→UA (12个条目)。CYM→KY (8个条目)。我们首先测试输入是否属于第3组或第4组,方法是将其位置i查找到以下查找字符串(没有空格),除以3:
ATF COM CYM MYT PRK SGS SPM SRB ALA ATA BLR BEN BIH MAC EST GNB IRL ISR SVN UKR
\_____________________________/ \_____________________________________________/
            group 4                                 group 3对于第一封信,我们试图得到:
"TKKYKGPR"[i] // lookup string for group 4如果这是未定义的,我们使用输入的第一个字母。
关于第二封信,我们试图得到:
"FMYTPSMSXQYJAOEWELIA"[i] // lookup string for groups 4 and 3如果这是未定义的,我们需要弄清楚我们应该使用输入的第二个或第三个字母。
我们将以下哈希函数应用于输入字符串:
q = parseInt(s, 36) * 5 % 1601并通过从0中减去相应数据字符串的32减去ASCII代码,测试我们是否能够精确地达到q:
`Z&:^*Wf&*/1*EKe'(1#/.534aq>HI*"#0551(C=J@75%,.I>"!G0"2#1)%)(2p#/4@!&<`这是对属于组2的条目进行编码。
例如,parseInt("JAM", 36)是25006,这将导致:
使用数据字符串的前四个字符Z&:^,我们发现这是以下之和:
这意味着"JAM"属于第2组,正确的答案是"JM"。
发布于 2022-05-02 15:50:30
原来什么东西都有内置的!有一个限制使用互联网连接,所以我不确定是否允许内置数据,但如果是,它是最短的。
If[#=="HMD"||#=="ANT"||#=="PSE",#~StringTake~2&,Association[#@"UNCode"->#@"CountryCode"&/@EntityList@"Country"]]@#&由于使用Mathematica的库,这个代码在TIO上不能正常工作。运行也需要相当长的时间,但是对每个测试用例都有效,尽管我必须在If语句中看到的三种情况下进行硬编码。
下面是一个云笔记本,上面有代码:https://www.wolframcloud.com/obj/romanp/Published/CountryCodeConvert
它最终应该返回正确的值,但如果不返回,您可以复制代码,并在较小的测试用例上或在个人安装中在云中进行测试。
发布于 2022-05-15 03:52:43
Ṫ⁰y_«⌐ƈḣAɾǑP««∷Þ≤¦HU¤żǑ₄°ṅ›⌐7İḊṖİAs§dĖy'ΠA‹Ḃ»&ḃO꘍∴øð∷|6@¢⌊⁰ė‟~R¨ėṁPO∨{P
∵ḊĠɾm≬¾hṁw⁰Ṫ±√≠a›λḣY꘍≥jzm2⁋]Ẇ+₆↔√„eK⟩Ǒo→ġ≬e¦ŀMEt@y≬Dḭ^₀P≤∆₌»-⇩&λƈḟf!ßǎsGʁż℅÷}yǎġ∴fǒ¥¶ẇæ¬‛C↵⟩ḃXʀ£ƒz~≤ḃuȧ⌊«3ẇ⁰ɽḟk1%:£i⁰hp«∞τjḊ§«2ẇ¥i⁰ḢW¥»?Ṫ4»₁τ<∑i⇧05AB1E港
Ṫ⁰y_«⌐ƈḣAɾǑP««∷Þ≤¦HU¤żǑ₄°ṅ›⌐7İḊṖİAs§dĖy'ΠA‹Ḃ»&ḃO꘍∴øð∷|6@¢⌊⁰ė‟~R¨ėṁPO∨{P
∵ḊĠɾm≬¾hṁw⁰Ṫ±√≠a›λḣY꘍≥jzm2⁋]Ẇ+₆↔√„eK⟩Ǒo→ġ≬e¦ŀMEt@y≬Dḭ^₀P≤∆₌»-⇩&λƈḟf!ßǎsGʁż℅÷}yǎġ∴fǒ¥¶ẇæ¬‛C↵⟩ḃXʀ£ƒz~≤ḃuȧ⌊«3ẇ⁰ɽḟk1%:£i⁰hp«∞τjḊ§«2ẇ¥i⁰ḢW¥»?Ṫ4»₁τ<∑i⇧
                # ^ full program
Ṫ               # Remove the last character of the (implicit) input
 ⁰              # Push the input again
  y             # Uninterleave, push a[::2] and a[1::2] to the stack
   _            # Pop so a[1::2] is removed. Stack: a[:-1], a[::2]
    «⌐ƈḣAɾǑP«   # Push compressed string "aaeeijloqwxy"
«∷Þ≤¦HU¤żǑ₄°ṅ›⌐7İḊṖİAs§dĖy'ΠA‹Ḃ»&ḃO꘍∴øð∷|6@¢⌊⁰ė‟~R¨ėṁPO∨{P
∵ḊĠɾm≬¾hṁw⁰Ṫ±√≠a›λḣY꘍≥jzm2⁋]Ẇ+₆↔√„eK⟩Ǒo→ġ≬e¦ŀMEt@y≬Dḭ^₀P≤∆₌»-⇩&λƈḟf!ßǎsGʁż℅÷}yǎġ∴fǒ¥¶ẇæ¬‛C↵⟩ḃXʀ£ƒz~≤ḃuȧ⌊«
                # Push compressed string "atfmytspmsgscymcomprksrbatagnbalablrbihukrestirlsvnbenisrmacabwagoandarearmatgautbdibgdbhsblzbrbbrncafchlchncodcogcokcpvdnkeshflkfrofsmginglpgnqgrdgrlgufguyirqjamkazkorlbrlbymafmdgmdvmexmltmnemnpmozmtqniupakpcnplwpngpolprtprypyfsenslbslvsursvksweswzsyctcdtkmtunturtuvurywlf"
3ẇ              # Split into chunks of 3: ["atf", "myt", "spm", ..., "ury", "wlf"]
  ⁰ɽ            # Push the input and lowercase it
    ḟ           # Find its index in the list (-1 if not found)
     k1%        # Modulo 1000 to convert -1 to 999
        :£      # Store in the register without popping
          i     # Index this into the string pushed earlier ("aaeeijloqwxy")
           ⁰h   # Push the first character of the input
             p  # Prepend it
«∞τjḊ§«         # Push compressed string "kykmkprs"
       2ẇ       # Split into chunks of two
         ¥      # Push the contents of the register
          i     # Index this into the list
           ⁰Ḣ   # Push the input without the first character
W               # Wrap these five values on the stack into a list
 ¥              # Push the contents of the register
  »?Ṫ4»         # Push compressed integer 4082091
       ₁τ       # Convert to base 100 list: [4, 8, 20, 91]
         <      # For each item, is the register (pushed earlier) less than it?
          ∑     # Sum this to get the amount of integers that the register is less than
           i    # Index this into the list pushed earlier
            ⇧   # Uppercasehttps://codegolf.stackexchange.com/questions/246777
复制相似问题