एक प्रारंभिक चुनौती


16

यह चुनौती इस ओलिवर सैक्स उद्धरण से प्रेरित है:

"11 साल की उम्र में, मैं 'मैं सोडियम हूं' (तत्व 11), और अब 79 पर कह सकता हूं, मैं सोना हूं।" - ऑवर रैक

मैं चाहता हूं कि आप एक स्ट्रिंग में संख्याएं खोजें और उन्हें उनके संबंधित तत्वों के प्रतीकों के साथ बदल दें। (1 एच है, 2 है, 3 है, ली है, आदि) का पालन करने के लिए कुछ नियम हैं:

  • एकल और दोहरे अंक सामान्य के रूप में अपने संबंधित तत्वों के साथ बदल जाते हैं। संख्याओं की शुरुआत में 0s पर ध्यान न दें। यदि किसी संख्या में सिर्फ 0s हैं, तो इसे अनदेखा करें। उदाहरण के लिए1 01 10 0 00 बन जाता हैH H Ne 0 00
  • 2 से अधिक अंक एक साथ 2 के समूहों में विभाजित हो जाते हैं। विषम संख्या में अंकों के अंत में अतिरिक्त एकल अंक होना चाहिए। उदाहरण 0153 5301 153बन जाएगा HI IH PLiक्योंकि इस नियम के लिए, आप केवल 1 से 99 के लिए तत्व जानने की आवश्यकता होगी
  • नंबरों को उसी तरह से माना जाएगा चाहे कोई भी चरित्र उन्हें घेरे हो और कॉमा और दशमलव अंक संख्याओं के भाग नहीं हैं। P90X 42,800 3.14159बन जाएगाPThX Mo,Hg0 Li.SiPF

उदाहरण इनपुट / आउटपुट (I / O):

I: 32289216
O: GeNiUS

I: J08017 5811
O: JOHN CeNa

I: M18227 0592tt10r
O: MArTiN BUttNer

I: De072816
O: DeNNiS

I: D088r1907085
O: DOOrKNOB

I: 13ex A.
O: Alex A.

इनपुट एक स्ट्रिंग के निकटतम प्रारूप में होगा जो आपकी भाषा में है।

संदर्भ के लिए एक आवर्त सारणी:

यह , इसलिए आपके प्रोग्राम को बाइट्स में स्कोर किया जाएगा।


17
PPCG में जॉन सीना एक मॉडरेटर है? ;-)
लेवल रिवर सेंट

5
हमारे नए मॉडरेटर जॉन सेना का गर्मजोशी से स्वागत दे संगीत और airhorns blaring शुरू
एक spaghetto

instantcena.com
DanTheMan

जवाबों:


7

गणितज्ञ, 96 94 89 बाइट्स

StringReplace[#,n:DigitCharacter~Repeated~2/;(d=FromDigits@n)>0:>d~ElementData~"Symbol"]&

मम्मा के पास कई डेटासेट हैं ...


बेशक एक अंतर्निहित डेटासेट एक 139-बाइट संपीड़ित स्ट्रिंग को हरा देगा। ;)
ETHproductions

@ETHproductions मुझे आश्चर्य है कि यह 9 घंटे का सबसे छोटा जवाब है। आमतौर पर, यह स्थान CJam और Pyth के लिए आरक्षित है: D
LegionMammal978

ठीक है, देखते हैं: 89 बाइट्स को हराने के लिए, 184 आवश्यक वर्णमाला वर्णों को सुपर-संक्षेप करने की आवश्यकता होगी — और इसे डिकोड करने के लिए एक कार्यक्रम बनाएं - 89 बाइट्स के तहत (बहुत ही असंभावित), या एक अन्य भाषा खोजें जो एक निर्मित है उचित तत्वों के -in डाटासेट (न तो CJam या Pyth)। तो यह संभवतः विजेता होने का अंत होगा।
ETHproductions

3

जावास्क्रिप्ट (ईएस 6), 202 बाइट्स

x=>x.replace(/\d\d?/g,y=>+y?btoa`(139 bytes; see hexdump below)`.match(/[A-Z][a-z]?/g)[+y]:y)

छोड़े गए स्ट्रिंग में अनपेक्षित वर्ण होते हैं, इसलिए यहाँ एक (उम्मीद के विपरीत) हेक्सडंप है:

00000000: 0071 de2e 205e 0423 4e14 d78d 68c8 0095 288f  .qÞ. ^.#N.×.hÈ..(.
00000012: 4829 40ac a09a 49c4 e254 2acc 9c57 82a0 d882  H)@¬ .IÄâT*Ì.W. Ø.
00000024: b999 c668 6780 b127 81ac aad1 6d2a d866 b35b  ¹.Æhg.±'.¬ªÑm*Øf³[
00000036: 3284 dc46 e461 3dd0 2009 d227 4a74 9b4d e217  2.ÜFäa=Ð .Ò'Jt.Mâ.
00000048: 782b 0168 b682 78fa cd74 f992 984b 8675 36c3  x+.h¶.xúÍtù..K.u6Ã
0000005a: c87a 04ad 3998 6cbb 877d 3696 45e3 ac22 b3ed  Èz..­9.l».}6.Eã¬"³í
0000006c: 02e1 e04e 53db 0623 e802 d467 16b4 5a01 c4e1  .áàNSÛ.#è.Ôg.´Z.Äá
0000007e: 3da5 0da4 fb80 9829 8190 27c4 b0              =¥.¤û..)..'Ä°

यहाँ तकनीक को एक स्ट्रिंग में सभी तत्व संक्षिप्तीकरण करना था, जिसे कुछ भी नहीं के द्वारा अलग किया गया था - यही दूसरा रेगेक्स /[A-Z][a-z]?/gके लिए है; यह प्रत्येक कैपिटल लेटर से मेल खाता है, वैकल्पिक रूप से लोअरकेस अक्षर द्वारा। पहला रेगेक्स, /\d\d?/gइनपुट में 2 (या 1) अंकों के प्रत्येक सेट से मेल खाता है, इसलिए यह अंक एन के प्रत्येक सेट को डिकम्प्रेस्ड, मिलान स्ट्रिंग में इंडेक्स एन के तत्व के साथ बदलता है ।

यहां मूल स्ट्रिंग है, अगर कोई और इसका उपयोग करना चाहेगा: ( Aछोर पर भराव हैं)

AHHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLaCePrNdPmSmEuGdTbDyHoErTmYbLuHfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAcThPaUNpPuAmCmBkCfEsA

सवाल और सुझाव का स्वागत है!


1
के बारे में Uusऔर क्या Uuo?
कॉनर ओ'ब्रायन

3
@ C @O'Bʀɪᴇɴ - प्रश्न केवल तत्व 99 तक की आवश्यकता है, जो आइंस्टीनियम (Es) है, इसलिए अपुष्ट तत्व (जिसमें अंतिम नाम नहीं हैं, और तीन वर्णों के साथ लिखे गए हैं) बिल्कुल भी कारक नहीं हैं।
ग्लेन ओ

अच्छा लगा। मुझे लगता है कि आपको चेक +y?...:...समूहों की आवश्यकता नहीं है क्योंकि आप
edc65

@ edc65 धन्यवाद। नियमों में से एक यह है कि इनपुट में किसी भी 00 को अपरिवर्तित रहने की आवश्यकता है, ताकि जांच आवश्यक हो।
ETHproductions

अब मैं देखता हूॅं। फिर भी आप 1 बाइट [y]का उपयोग कर सकते हैं [+y]और
edc65

1

पायथन 3, 278 285 बाइट्स

import re;f=lambda a:re.sub('(?!00)\d\d?',lambda m:'0HHLBBCNOFNNMASPSCAKCSTVCMFCNCZGGASBKRSYZNMTRRPACISSTIXCBLCPNPSEGTDHETYLHTWROIPAHTPBPARFRATPUNPACBCE  eie     eagli  lr aci rneoiunaeserrbr rbocuhdgdnnbe esaaerdmmudbyormbufa esrtuglbiotnracha pummkfs'[int(m.group())::100].strip(),a)

परीक्षण के मामलों:

>>> f('32289216')
'GeNiUS'
>>> f('J08017 5811')
'JOHN CeNa'
>>> f('M18227 0592tt10r')
'MArTiN BUttNer'
>>> f('De072816')
'DeNNiS'
>>> f('D088r1907085')
'DOOrKNOB'
>>> f('13ex A.')
'Alex A.'
>>> f('P90X 42,800 3.14159')
'PThX Mo,Hg0 Li.SiPF'
>>> f('1 01 10 0 00')
'H H Ne 0 00'

f('P90X 42,800 3.14159')रिटर्न 'PThX मो, HGS Li.SiPF' के बजाय 'PThX मो, Hg0 Li.SiPF' और f('1 01 10 0 00')रिटर्न 'एचएच Ne रों s' के बजाय 'एचएच Ne 0 00' । वैसे, मैंने सिर्फ अपने पायथन 2 समाधान में आपके विस्तारित स्लाइसिंग दृष्टिकोण का उपयोग किया है। धन्यवाद!
cr3

@ cr3: फिक्स्ड 0 और 00.
kennytm

अच्छा, आपने मुझे 19 बाइट्स से हराया!
3

0

पायथन 2, 312 304 बाइट्स

import re
f=lambda a:''.join([j or'0HHLBBCNOFNNMASPSCAKCSTVCMFCNCZGGASBKRSYZNMTRRPACISSTIXCBLCPNPSEGTDHETYLHTWROIPAHTPBPARFRATPUNPACBCE0 eie     eagli  lr aci rneoiunaeserrbr rbocuhdgdnnbe esaaerdmmudbyormbufa esrtuglbiotnracha pummkfs'[int(i)::100].strip() for i,j in re.findall('(\d\d|[1-9])|(.)',a)])

यह एक फ़ंक्शन f बनाता है जो तर्क के रूप में संख्याओं की एक स्ट्रिंग लेता है और बदले हुए तत्व प्रतीकों के साथ संबंधित स्ट्रिंग लौटाता है।

फ़ंक्शन एक से दो अंकों ( '1' , '01' , '10' , '00' पर नहीं बल्कि '0' ) या एक वर्ण ( 'a' , '0' नहीं बल्कि '1' ) के स्ट्रिंग्स पर निर्भर करता है । अंकों के मामले में, स्ट्रिंग को एक पूर्णांक में बदल दिया जाता है और तत्व प्रतीकों के एक संघातक स्ट्रिंग में देखा जाता है, जहां प्रत्येक प्रतीक को दो वर्णों में रखा जाता है। वर्णों के मामले में, स्ट्रिंग का उपयोग केवल लुकअप के बिना किया जाता है।

प्रश्न में प्रत्येक उदाहरण के लिए परीक्षण सभी पास:

assert f('P90X 42,800 3.14159') == 'PThX Mo,Hg0 Li.SiPF'
assert f('1 01 10 0 00') == 'H H Ne 0 00'
assert f('0153 5301 153') == 'HI IH PLi'
assert f('32289216') == 'GeNiUS'
assert f('J08017 5811') == 'JOHN CeNa'
assert f('M18227 0592tt10r') == 'MArTiN BUttNer'
assert f('De072816') == 'DeNNiS'
assert f('D088r1907085') == 'DOOrKNOB'
assert f('13ex A.') == 'Alex A.'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.