একটি প্রাথমিক চ্যালেঞ্জ


16

এই চ্যালেঞ্জটি এই অলিভার স্যাকস উদ্ধৃতি দ্বারা অনুপ্রাণিত:

"১১ এ, আমি বলতে পারি যে 'আমি সোডিয়াম' (এলিমেন্ট ১১), এবং এখন at৯ বছর বয়সে আমি সোনার।" - অলিভার স্যাকস

আমি চাই আপনি একটি স্ট্রিংয়ের মধ্যে নম্বরগুলি সন্ধান করুন এবং তাদের সংশ্লিষ্ট উপাদানগুলির প্রতীকগুলি দিয়ে প্রতিস্থাপন করুন। (1 হ'ল, 2 হি, 3 তিনি লি, ইত্যাদি) অনুসরণ করার জন্য কয়েকটি বিধি রয়েছে:

  • একক এবং ডাবল ডিজিটগুলি স্বাভাবিক হিসাবে তাদের সম্পর্কিত উপাদানগুলির সাথে প্রতিস্থাপিত হয়। সংখ্যার শুরুতে 0 টি উপেক্ষা করুন। যদি কোনও সংখ্যায় মাত্র 0 টি থাকে তবে এটিকে উপেক্ষা করুন। যেমন 1 01 10 0 00হয়ে যায়H H Ne 0 00
  • 2 টিরও বেশি সংখ্যক একসাথে 2 টি গ্রুপে বিভক্ত হয়ে যায় An একটি বিজোড় সংখ্যার শেষে অতিরিক্ত একক সংখ্যা থাকা উচিত। উদাহরণস্বরূপ , এই নিয়মের কারণে 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
জন সিনা পিপিসিজিতে একজন মডারেটর? ;-)
স্তরের নদী সেন্ট

5
দয়া করে আমাদের নতুন মডারেটর জন সিএনএ সংগীত এবং এয়ারহর্নস ব্লারিং শুরু
একটি স্প্যাগেটো

instantcena.com
DanTheMan

উত্তর:


7

গণিত, 96 94 89 বাইট

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

এমএমএর বেশ কয়েকটি ডেটাসেট রয়েছে ...


অবশ্যই একটি অন্তর্নির্মিত ডেটাসেট একটি 139-বাইট সংক্ষেপিত স্ট্রিংটিকে পরাজিত করবে। ;)
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশনস আমি কেবল অবাক হয়েছি যে এটি 9 ঘন্টা সবচেয়ে সংক্ষিপ্ত উত্তর ছিল। সাধারণত, এই জায়গাটি সিজেম এবং পাইথের জন্য সংরক্ষিত রয়েছে: ডি
লিজিওন ম্যামাল 978

ভাল, আসুন দেখুন: 89 বাইটকে হারাতে হলে একটিতে 184 টি প্রয়োজনীয় বর্ণানুক্রমিক অক্ষরকে সুপার-কনডেন্স করা দরকার — এবং এটিকে ডিকোড করার জন্য একটি প্রোগ্রাম তৈরি করতে হবে - 89 বাইটের নীচে (খুব খুব সম্ভাবনা নেই), অথবা অন্যটি ভাষা খুঁজে বের করুন যা একটি বিল্ট আছে যথাযথ উপাদানগুলির ডেটাসেটে (সিজেএম বা পাইথ নয়)। সুতরাং এটি সম্ভবত বিজয়ী হিসাবে শেষ হবে।
ETH প্রোডাকশনগুলি

3

জাভাস্ক্রিপ্ট (ES6), 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জন্য; এটি প্রতিটি মূল অক্ষরের সাথে মেলে, allyচ্ছিকভাবে একটি ছোট হাতের অক্ষর পরে। প্রথম রেজেক্স, ইনপুটটিতে /\d\d?/g2 (বা 1) অঙ্কের প্রতিটি সংখ্যার সাথে মেলে , সুতরাং এটি সংখ্যার প্রতিটি সংখ্যার এনকে সূচক এন- এ উপাদানটির সাথে ডিকম্প্রেসড, ম্যাচিং স্ট্রিংয়ের সাথে প্রতিস্থাপন করবে ।

এখানে অন্য যে কেউ এটি ব্যবহার করতে চাইলে মূল স্ট্রিংটি এখানে রয়েছে: ( Aপ্রান্তের অংশগুলি ফিলার্স হয়)

AHHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLaCePrNdPmSmEuGdTbDyHoErTmYbLuHfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAcThPaUNpPuAmCmBkCfEsA

প্রশ্ন এবং পরামর্শ স্বাগত!


1
কি Uusএবং Uuo?
কনর ও'ব্রায়েন

3
@ সিও'বা - প্রশ্নটির জন্য কেবলমাত্র 99 টি উপাদান রয়েছে যা আইনস্টাইনিয়াম (এস), তাই অসমর্থিত উপাদানগুলির (যার চূড়ান্ত নাম নেই, এবং তিনটি অক্ষর দিয়ে লেখা হয়) মোটেও কারণ হয় না।
গ্লেন ও

খুশী হলাম। আমি মনে করি আপনি +y?...:...অঙ্কের গ্রুপগুলি প্রতিস্থাপন করায় আপনার চেকের দরকার নেই
edc65

@ edc65 ধন্যবাদ নিয়মগুলির মধ্যে একটি হ'ল ইনপুটটিতে যে কোনও 00 এর অপরিবর্তনীয় হওয়া দরকার, যাতে চেক করা আবশ্যক।
ETH প্রচারগুলি

এখন আমি দেখি. তবুও আপনি এর [y]পরিবর্তে ব্যবহার করতে পারেন [+y]এবং 1 বাইট সংরক্ষণ করতে পারেন
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')আয় 'এইচ নে এস এস' পরিবর্তে 'এইচ নে 0 00' । যাইহোক, আমি আমার পাইথন 2 সমাধানে স্রেফ আপনার বর্ধিত স্লাইসিং পদ্ধতির ব্যবহার করেছি। ধন্যবাদ!
cr3

@ ক্র 3: স্থির 0 এবং 00.
কেনেটিএম

ভাল, আপনি আমাকে 19 বাইট দ্বারা পরাজিত!
cr3

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)])

এই এক একটি ফাংশন তৈরি করে যা আর্গুমেন্ট হিসাবে সংখ্যার একটি স্ট্রিং নেয় এবং সংশ্লিষ্ট স্ট্রিং ফেরৎ উপাদান প্রতীক প্রতিস্থাপিত হয়।

ফাংশনটি এক থেকে দুই অঙ্কের ( '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.'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.