118 এর উপরে এলিমেন্টের নাম


46

আইইউপিএসি তাদের অপ্রত্যাশিত জ্ঞানের দ্বারা যে কোনও সদ্য নির্মিত উপাদানগুলির জন্য একটি নিয়মিত উপাদান নাম তৈরি করেছে। অবশেষে কোনও আসল নাম সম্পর্কে তাদের মন তৈরি না করা পর্যন্ত এটি কোনও উপাদানটির অস্থায়ী নাম। এটি এর মতো কাজ করে: একটি মৌলিক সংখ্যার প্রতিটি অঙ্ককে তার মানের উপর ভিত্তি করে একটি উপসর্গ বরাদ্দ করা হয়। উপসর্গগুলি শেষে 'আইম' দিয়ে সংযুক্ত করা হয়। এটি হয়ে গেলে এবং আপনি যদি দ্বিগুণ i (ii) বা ট্রিপল এন এর (এনএনএন) পান তবে তাদের একক আই এবং ডাবল এন এর সাথে প্রতিস্থাপন করুন। উপাদানটির প্রতীক হ'ল প্রতিটি উপসর্গের প্রথম অক্ষরটি সংযুক্ত এবং ফলাফলের মূলধন ব্যবহৃত হয়। ব্যবহৃত উপসর্গ নীচে আছে।

0 nil       5 pent
1 un        6 hex
2 bi        7 sept
3 tri       8 oct
4 quad      9 enn

সুতরাং এই গল্ফের জন্য, আপনার কোডকে কোনও ইতিবাচক পূর্ণসংখ্যার জন্য উপাদানটির নাম এবং এর প্রতীক উভয়ই উত্পন্ন করতে হবে। তাই আপনি যদি আপনার কোড 137 দেওয়া হয়েছিল, এটা stdout- এ বা রিটার্ন উভয় মুদ্রণ উচিত untriseptiumএবং Uts। এটি কমপক্ষে 118 থেকে 558 এর মধ্যে বৈধ হওয়া উচিত । কোনও উচ্চতর বৈধ যদি এটি আপনার কোডের দৈর্ঘ্য না বাড়ায়।

পাইথন উদাহরণ পদ্ধতি দেখায়:

def elename(n):
    '''Return name and symbol of new element for given element number.'''
    prefixes=['nil','un','bi','tri','quad','pent','hex','sept','oct','enn']
    nmeFixes, symFixes = [], []

    while n:  # each digit of element number is assigned a prefix
        n, i = divmod(n, 10)
        pf = prefixes[i]

        symFixes.append(pf[0])  # symbol uses only first letter of prefix
        nmeFixes.append(pf)

    # loop assembled prefixes in reverse order
    nmeFixes.reverse()
    symFixes.reverse()

    nmeFixes.append('ium')  # suffix
    name = ''.join(nmeFixes)
    symb = ''.join(symFixes).capitalize()

    # apply rule about too many n's or i's
    name = name.replace('nnn','nn')  # can happen with -90-
    name = name.replace('ii','i')  # -2ium or -3ium

    return name, symb

ক্যাডমিয়াম বাইটসের সাথে এরিক টাওয়ারসের জয়!


34
আমি বোরনকে তার আইইউপিএসি পদ্ধতিগত উপাদানটির নাম দিয়ে ডাকতে শুরু করতে যাচ্ছি: "পেন্টিয়াম"
মাইকেল


1
আমাদের কি সঠিক মামলা করা উচিত?
lirtosiast

6
@ বেটাডেকে কিন্তু এই "পঞ্চম উপাদান" মাল্টিপাস সমর্থন করে ?
দামিয়ান ইয়ারিক

উত্তর:


22

গণিত 10.1, ইন্ডিয়াম (49) ক্যাডমিয়াম (48)

এই সমাধানটিতে আইইউপিএসি নাম এবং সংক্ষিপ্তসার সহ উপাদান বৈশিষ্ট্যের অন্তর্নির্মিত গ্রন্থাগার ব্যবহার করা হয়। (আমি এটিকে কোনও গল্ফ এড়ানোর কৌশল হিসাবে দেখিনি encouraged এটি উত্সাহিত বলে মনে হচ্ছে But তবে এটি গ্রহণযোগ্যতার প্রান্তে হতে পারে - ম্যাথমেটিকা ​​এই লাইব্রেরিটি প্রয়োগ করে (এবং আরও অনেকগুলি) থেকে ডেটা ডাউনলোড করে ওল্ফ্রামের সার্ভারগুলি প্রথমবার আপনি এটি ব্যবহার করবেন (এবং আমি মাঝে মধ্যে আপডেটগুলির জন্য চেকের প্রস্তাব দিই।)

f=ElementData@@@{{#,"Abbreviation"},{#,"Name"}}&
(* 
Improved by @user5254 from 
f[n_]:=ElementData[n,#]&/@{"Abbreviation","Name"} 
*)

f[48]
(* {"Cd", "cadmium"} *)

f[118]
(* {"Uuo", "ununoctium"} *)

f[122]
(* {"Ubb", "unbibium"} *)

f[190]
(* {"Uen", "unennilium"} *)

f[558]
(* {"Ppo", "pentpentoctium"} *)

f[10^100-1]
(* {"Eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "ennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennennium"} *)

এটি কীভাবে পাইথনের উপাদান.পি বা পিরিয়ডিকটেবল.পি ব্যবহারের সাথে তুলনা করবে?

সম্পাদনা: কয়েক মাস পরে: লক্ষ্য করেছি আমি 122 এর জন্য সংক্ষিপ্তসার আউটপুট টাইপ করেছি I've আমি কোডটি আবার চালিয়েছি এবং যাচাই করেছি যে আমি এই ত্রুটিটি তৈরি করেছি, ম্যাথমেটিকাকে নয়।


9
আমি যখন চ্যালেঞ্জটি লিখছিলাম, তখন আমি ভেবেছিলাম "ফাংশনগুলিতে বিল্ট হওয়া আমার কি থামানো উচিত? না, এটি কোনও ভাষায় অন্তর্নির্মিত নয়। অপেক্ষা করুন, ম্যাথামেটিকায় এটি থাকতে পারে।" তবে আমি কীভাবে এটি চেক করব তা জানতাম না এবং তারপরে তাৎক্ষণিকভাবে ভুলে গিয়েছিলাম।
স্থিতি

7
হোলি প্যারেন্টিথিকালস, ব্যাটম্যান! এই অনুচ্ছেদে এমন কিছু দেখাচ্ছে যা আমি লিখতে পারতাম (আমিও আমার কৃপণতা প্রশমিত করার প্রয়াস হিসাবে প্যারেন্টেটিকালগুলি ব্যবহার করার জন্য দোষী - যদিও তারা সাধারণত এটি হয়ে যায়)।
কোলে

1
আপনি ভেতরের আবেদন ব্যবহার করে এবং করে আরও একটি বাইট সংরক্ষণ করতে পারবেন fনিজেই একটি বিশুদ্ধ ফাংশন: f=ElementData@@@{{#,"Abbreviation"},{#,"Name"}}&

যদি প্রশ্নটির উপাদানটি কোনও অফিসিয়াল নাম অর্জন করে তবে এই কোডটি 118 এর জন্য অকার্যকর হবে না?

1
@ আইস ৫৩৩: স্পেসিফিকেশন অনুসারে "সুতরাং এই গল্ফের জন্য, আপনার কোডকে প্রদত্ত ধনাত্মক পূর্ণসংখ্যার জন্য উপাদানটির নাম এবং চিহ্ন দুটিই উত্পন্ন করতে হবে।" যদি উপাদানটির একটি নাম বা চিহ্ন থাকে তবে সেই নাম বা প্রতীকটি প্রতিবেদন করা উচিত। আপনার মেট্রিকের মাধ্যমে, তবে এই পৃষ্ঠার প্রতিটি জমা দেওয়া স্পেসিফিকেশনটি পূরণ করতে ব্যর্থ হবে যদি পারমাণবিক সংখ্যা> = 118 এর সাথে কোনও উপাদান একটি নিয়মিত চিহ্ন বা নাম পায়।
এরিক টাওয়ার

27

পাইথন 3, আনহেক্সেসপটিয়াম (167) বাইট

h=x='';r=str.replace
for i in input():s=r('nubtqphsoeinirueeecnl  ianxptn    dt t'[int(i)::10],' ','');h+=s;x+=s[0]
print(r(r(h+'ium\n','ii','i'),'nnn','nn')+x.title())

এই ফলাফলগুলি যখন 1 থেকে 999 পর্যন্ত প্রতিটি সংখ্যায় চালিত হয় (অন্তর্ভুক্ত)


30
আপনার শিরোনাম আমাকে এখন সবাইকে বাইটের সংখ্যা সেইভাবে তালিকাবদ্ধ করতে চায়।
স্থিতি

4
@ স্ট্যাটাস শুনুন, শুনুন। এটি সেই পাইথ ছেলেদের খুব দু: খিত করে তুলছে ... :)
বেকার

1
@ বেকার আমি হতাশ হয়েছি যে আপনার প্রোফাইল পিকচারটি বেকার নয় ;)
বিটা ডিকায়

4
@ বেটাডেচে সম্পন্ন
বেকার

6
@ স্ট্যাটাস: যদি কেউ এটিকে 112 বাইটেরও কম সময়ে পরিচালনা করে তবে তাদের শিরোনামে একটি শাস্ত্রীয় উপাদানটির নাম থাকতে পারে :) রাদারফোর্ডিয়ামের মতো । বা সোনার
vsz

15

পিপ , থোরিয়াম অ্যাক্টিনিয়াম র‌্যাডন (86)

(এই প্রবেশটি নিঃশ্বাস ত্যাগ করবেন না, এটি আপনাকে ফুসফুস ক্যান্সার দেবে))

P(aR,tY"nil un bi tri quad pent hex sept oct enn"^s)."ium"R`ii|nnn`_@>1Yy@_@0MaUC:y@0y

কমান্ড-লাইন আর্গুমেন্ট হিসাবে উপাদান সংখ্যা নেয় এবং পৃথক লাইনে নাম এবং সংক্ষিপ্তসার আউটপুট দেয়।

ব্যাখ্যা (কিছুটা নাড়িত):

Y"nil un bi tri quad pent hex sept oct enn"^s  Build list of prefixes & store in y

    ,t                                         Range(10)
 (aR  y)                                       Replace each digit in input with
                                                 corresponding element in prefix list
        ."ium"                                 Append "ium"
              R`ii|nnn`_@>1                    Reduce too-long runs of letters
P                                              Print

 {y@a@0}Ma                                     For each digit in input, get first character
                                                 of corresponding prefix
Y                                              Store that list in y
          UC:y@0                               Uppercase the first item of y in place
                y                              Print y (items concatenated)

iiএবং nnnব্যবহারের একটি কলব্যাক ফাংশন (পিপ এর সাম্প্রতিকতম সংস্করণে যোগ করা হয়েছে) সঙ্গে একটি Regex প্রতিস্থাপন সামলাচ্ছে না: প্রতিটি ম্যাচের জন্য ii|nnn, সব কিন্তু নিতে প্রথম অক্ষর এবং রিপ্লেসমেন্ট হিসাবে ব্যবহার।


প্রতিলিপি: অন্যান্য এন্ট্রিগুলি শ্বাস নেওয়ার সময় আপনাকে ফুসফুসের ক্যান্সার না দিতে পারে , তবে এটি সম্ভবত আপনার স্বাস্থ্যের জন্য সেরা নয়।
সাইয়েস

14

জিএনইউ সেড, 171 (আনসেটুনিয়াম)

s/0/Nil/g
s/1/Un/g
s/2/Bi/g
s/3/Tri/g
s/4/Quad/g
s/5/Pent/g
s/6/Hex/g
s/7/Sept/g
s/8/Oct/g
s/9/Enn/g
s/$/ium/
h
s/[a-z]//g
G
s/./\L&/g
s/./\U&/
s/\n/ /
s/ii/i/g
s/nnn/nn/g

আমি ধরে নিলাম নাম এবং প্রতীকটি কী অর্ডারে ফিরে আসবে তা বিবেচ্য নয় Here এখানে, প্রতীকটি প্রথমে আসে:

$ seq 180 190 | sed -f iupac.sed 
Uon unoctnilium
Uou unoctunium
Uob unoctbium
Uot unocttrium
Uoq unoctquadium
Uop unoctpentium
Uoh unocthexium
Uos unoctseptium
Uoo unoctoctium
Uoe unoctennium
Uen unennilium
$ 

4
আমি মনে করি না যে শেষ দুটি প্রতিস্থাপনের প্রয়োজন g; শুধুমাত্র মামলা হবে biium/ triiumএবং ennnil, সব যা শুধুমাত্র 1000. অধীনে সংখ্যায় একবার ঘটতে পারে
PurkkaKoodari

8

গণিত, আনহেক্সুনিয়াম 163 161 বাইট

এখন প্রতীককে মূলধন করে

এটি অন্তর্নির্মিত ব্যতীত ম্যাথমেটিকা ElementData

f=StringReplace[##<>"ium, "<>{ToUpperCase@#1,##2}~StringTake~1&@@ToString/@nil[un,bi,tri,quad,pent,hex,sept,oct,enn][[IntegerDigits@#]],{"ii"->"i","nnn"->"nn"}]&

10 এলোমেলো সংখ্যার উপর পরীক্ষা:

# -> f[#]& /@ RandomInteger[{118, 558}, 10] // ColumnForm

155->unpentpentium, Upp
338->tritrioctium, Tto
477->quadseptseptium, Qss
261->bihexunium, Bhu
158->unpentoctium, Upo
164->unhexquadium, Uhq
266->bihexhexium, Bhh
331->tritriunium, Ttu
404->quadnilquadium, Qnq
389->trioctennium, Toe

8

জাভাস্ক্রিপ্ট (ES6) 164 (unhexquિયમ) 171

মূলধনটি একটি জটিল অংশ। (ফায়ারফক্সে পরীক্ষা)

3 বাইট সম্পাদনা করুন THX ব্যবহারকারী 2786485 টি সংরক্ষিত

f=n=>[([...n+(l='')].map(c=>(c='nil,un,bi,tri,quad,pent,hex,sept,oct,enn'.split`,`[c],n=l?n+c[0]:c[0].toUpperCase(),l+=c)),l+'ium').replace(/i(i)|n(nn)/g,'$1$2'),n]

function test() { O.innerHTML=f(+I.value) }

test()

for(o='',i=99;i++<999;)o+=i+' '+f(i)+'\n';P.innerHTML=o
<input id=I onchange="test()" value="164"><span id=O></span><pre id=P></pre>


যে কোনও কিছুর *eniumপরিবর্তে ফিরে আসে*ennium*9
ড্যাঙ্কমিমেস

আনহেক্সেক্সিয়াম সংস্করণ: n => [([[... n]। মানচিত্র (সি =>) (সি = 'শূন্য, আন, দ্বি, ত্রি, চতুর্থাংশ, পেন্ট, হেক্স, সেপ্ট, অক্ট, এনএন'স্প্লিট, `[ গ], i = গ [0], s = এস এস + I:। i.toUpperCase (), গ) s = ''।) join`` + ium ') প্রতিস্থাপন (/ আ | NNN / ছ , r => r.slice (1)), s]
মামা ফান রোল

@ মোলারম্যানফুল [...n]একটি ইনট প্যারামিটারের জন্য ব্যর্থ হবে। চ্যালেঞ্জটি হচ্ছেa given positive integer
edc65

আপনি যদি আপনার 'প্রতিস্থাপন'-এ কলটি প্রতিস্থাপন করেন তবে আপনি আনহেক্সোকটিয়াম পেতে পারেনreplace(/i(i)|n(nn)/g,'$1$2')
আশা করি আমি

@ user2786485 thx আমি ক্যাপচারগুলি ব্যবহারের কথা ভেবেছিলাম কিন্তু সঠিক
উপায়টি

7

রুবি - 163 156 147 143 134 (আনট্রিকুইডিয়াম) বাইটস

o=u='';gets.bytes{|c|k=%w[Nil un bI trI quad pent hex sept oct enN Ium][c%48];o+=k;u+=k[0]};puts o.tr_s('IN','in'),u[0..-2].capitalize

আমি এইভাবে নিচে গল্ফ আশা করছি

সম্পাদনা করুন: 9 বাইট বন্ধ শেভ করার জন্য @ স্টিভভারিলের জন্য ধন্যবাদ!

সম্পাদনা 2: আবার আরও 4 টি বাইটের জন্য @ স্টিভভারিলের জন্য ধন্যবাদ! (সত্যিই চতুর সমাধান!)


1
1. পরিবর্তে each_charআপনি ব্যবহার করতে পারেন chars। সরকারী রুবি ডকুমেন্টেশন এই "অবচিত" হয় মতে (কিন্তু codegolf নেই!) আপনি সম্ভবত সাথে উন্নত করতে চাই each_byteবা bytesতারপর c.to_iউদাহরণস্বরূপ হয়ে i%48। ২. এছাড়াও \nসুযোগক্রমে এসকি কোড 10 রয়েছে, সুতরাং সম্ভবত আপনি এটিকে ছাড়িয়ে আপনার অ্যারেতে chopঅন্তর্ভুক্ত করতে পারেন ium(উপাদানটির নামের জন্য দুর্দান্ত কাজ iকরে তবে উপাদান প্রতীকটিতে একটি উত্সাহী যোগ করে ))
স্তর নদী সেন্ট

1
আপনি এর tr_sমতো আরও 5 টি বাইট সংরক্ষণ করতে পারেন :o=u='';gets.bytes{|c|k=%w[Nil un bI trI quad pent hex sept oct enN Ium][c%48];o+=k;u+=k[0]};puts o.tr_s('IN','in'),u[0..-2].downcase.capitalize
স্তর নদী সেন্ট

u.chopতুলনায় খাটো u[0..-2]। হয়তো আমার নিজের উত্তর পোস্ট করা উচিত ছিল, তবে আমার প্রাথমিক ধারণাটি হ'ল আপনি যেমন করেছেন ঠিক তেমনই এটি করা। যদিও এটি আপনাকে গল্ফকে সহায়তা করে মজাদার। আমি পুরোপুরি মিস করেছি যে আপনার downcaseআগে প্রয়োজন নেই capitalize
স্তর নদী সেন্ট

7

পাইথ, 67 বাইট (হলিয়াম)

rshMJ@Lcs@LGjC"]ß!âÿeóÑiSÑA¼R¬HE"24\fjQT3-"ium"epj"nn"csJ*\n3

পাইথ কম্পাইলার / এক্সিকিউটারে অনলাইনে চেষ্টা করে দেখুন ।

কিভাবে এটা কাজ করে

            jC"…"24       Convert the string from base 256 to base 24.
        s@LG              Select the letter that corresponds to each digit.
       c           \f     Split at 'f'.
     @L              jQT  Select the chunk that corresponds to each input digit.
    J                     Save in J.
 shM                      Form a string of the first letters of the chunks.
r                       3 Capitalize the first character.
                          Print. (implicit)

             csJ*\n3      Split the flattened J at "nnn".
        j"nn"             Join, separating by "nn".
       p                  Print.
-"ium"e                   Remove the last character ('i'?) from "ium".
                          Print. (implicit)

6

জাভাস্ক্রিপ্ট (ES6), 210 202 বাইট ( বিউনিলিয়াম বিনিলবিয়াম)

মাইনাস অক্টিয়াম (8) বাইট, @ এডসি 65 এর জন্য ধন্যবাদ!

130 159 147 বাইট (আনট্রেনিলিয়াম আনপেনটেনিয়াম আনকোয়াডসেপটিয়াম)

f=z=>(c=(b=(z+"").split``.map(x=>"nil.un.bi.tri.quad.pent.hex.sept.oct.enn".split`.`[+x])).join``.replace(/nnn/g,"n"))+(c[c.length-1]!="i"?"i":"")+"um,"+(a=b.map(x=>x[0])).shift().toUpperCase()+a.join``

ইনপুট পছন্দ f(324)। ওহ, আমি খুব গল্ফ-ওয় অনুভূত।


@ edc65 তিনটি সমস্যা স্থির করে।
কনর ও'ব্রায়েন

1
ফাইন। এখন, টেমপ্লেট স্ট্রিংগুলি ব্যবহার করে আপনি কিছু বন্ধনী এড়াতে পারেন এবং সম্ভবত 8 বাইট কোডগল্ফ.স্ট্যাককেক্সচেঞ্জ.com
a/

6

সিজেম, 74 72 71 70 69 বাইট (থুলিয়াম)

r:i"ؾaÈÁaÎE<Ä+&:¬úD±"380b24b'af+)/f=_:c(euoS@s'n3*/"nn"*)"ium"|

নোট করুন যে কোডটিতে অপ্রিন্টযোগ্য অক্ষর রয়েছে।

আমার প্রাথমিক পুনর্বিবেচনায় একটি ত্রুটি নির্দেশ করে এবং )/পদ্ধতির পরামর্শ দেওয়ার জন্য @ এসপি 3000 কে ধন্যবাদ জানাই ।

মধ্যে অনলাইনে এটিকে পরখ করে CJam অনুবাদক:

কিভাবে এটা কাজ করে

r:i     e# Read a token and push the array of its character codes.
"…"     e# Push a string of unprintable characters.
380b24b e# Convert it from base 380 to base 24.
'af+    e# Add the character 'a' to each base-24 digit.
        e# This pushes "bijtrijquadjpentjhexjseptjoctjennjniljunj".
)/      e# Pop the last character and split the string at the remaining occurrences.
f=      e# For each character code in the input, select the correspoding chunk.
_:c     e# Push a copy and cast each string to character.
(euo    e# Shift out the first character, convert to uppercase, and print.
S@      e# Push a space and rotate the array of string on top of it.
s       e# Flatten the array of string.
'n3*/   e# Split at occurrences of "nnn". 
"nn"*   e# Join, using "nn" as separator.
)"ium"| e# Pop the last character and perform setwise union with "ium".
        e# If the last character is, e.g., 't', this pushes "tium".
        e# If the last character is 'i', this pushes "ium".

3
মজাদার ঘটনা: স্বর্ণের তুলনীয় এবং এর তুলনামূলক স্বল্পতার কারণে চরম ঘনত্বের কারণে টুংস্টেন প্রায়শই নকল সোনার বার এবং মুদ্রায় ব্যবহৃত হয়।
lirtosiast

1
লুতেটিয়াম একটি উপাদানের জন্য একটি অযৌক্তিক শীতল নাম।
টি। সর - মনিকা

@ থলেসপিয়েররা ইয়েটারবিয়ামের চেয়েও শীতল?
বিটা ক্ষয়

মজাদার ঘটনা: এরবিয়াম, টের্বিয়াম, ইয়টরিয়াম এবং ইটারবিয়াম সব একই জায়গার নামানুসারে করা হয়েছে
lirtosiast

5

মতলব, 170 (আনসেটনিলিয়াম)

আপনি যে পরিমাণ ইনপুটগুলি এটিকে নিক্ষেপ করতে পারবেন তেমন কাজ করে, niliumযতদূর আপনি যতটা যেতে আগ্রহী। আমি ennennennennennennennennennennennennennennennennennennennennennennium9 কী টিপতে ছাড়ার আগেই পেয়েছিলাম ।

l=['nubtqphsoe';'inirueeecn';'l  ianxptn';'    dt t  '];i=input('','s')-47;s=l(1,i);s(1)=s(1)-32;a=l(:,i);disp([strrep(strrep([a(a>32)' 'ium '],'nnn','nn'),'ii','i') s]);

এবং একটি ব্যাখ্যা:

%Create a 2D array of the prefixes transposed
l=['nubtqphsoe';'inirueeecn';'l  ianxptn';'    dt t  '];
%Grab the input number
i=input('','s')     %Request the input and convert to string
               -47; %Convert from ASCII into an array of indecies (1 indexed)
%Generate the short form
s=l(1,i);
%Capitalise first letter in short form
s(1)=s(1)-32;
%Extract required prefixes for long form
a=l(:,i);
%Now the fun bit:
                     a(a>32)'                                    %Combine the prefixes removing spaces and transpose into a string
                    [         'ium ']                            %Append 'ium ' to the string (the space is to separate the short form)
             strrep(                 ,'nnn','nn')                %Replace 'nnn' with 'nn'
      strrep(                                    ,'ii','i')      %Replace 'ii' with 'i'
disp([                                                     s]); %And display both full and short form strings together

5

টিআই-বেসিক, 223 218 বাইট

Input N
"nil un  bi  tri quadpenthex septoct enn→Str4
"int(10fPart(N/10^(X→Y₁
"sub(Str4,1+4Y₁,int(3fPart(e^(Y₁)1.5154)+2^not(X=2 and .9=fPart(N%) or X=1 and 1=int(5fPart(.1N→Y₂
"ium,"+sub("UBTQP",int(N%),1
For(X,1,3
Y₂+Ans+sub(Y₂(3-X),1,1
End
sub(Ans,1,length(Ans)-1

এলিমেন্ট সংখ্যা এন এর 90 এর মধ্যে শেষ হলে কেবল একটি ট্রিপল "এন" থাকতে পারে এবং শেষ সংখ্যাটি 2 বা 3 হলে কেবল একটি ডাবল "আই" থাকতে পারে আমরা এই কেসগুলি পরীক্ষা করতে গণিত ব্যবহার করি।

ম্যাজিক নম্বর 1.5154, যা প্রতিটি উপসর্গ দৈর্ঘ্য সঞ্চয় করে, দৈর্ঘ্য সব দশমিক ≤7 ফাংশন ব্যবহার করে অনুসন্ধান করতে একটি পাইথন স্ক্রিপ্ট ব্যবহার করে পাওয়া গেছে cosh(, cos(এবং e^(

এখনও গল্ফিং করা হয়নি, তবে টিআই-বেসিকের দুই-বাইট ছোট ছোট অক্ষর এবং স্ট্রিং ম্যানিপুলেশন কমান্ডের অভাব, বরাবরের মতো, এই প্রোগ্রামটির স্কোরকে আঘাত করবে।


আমি এটি নিচে গল্ফ উপর কাজ করব। ^ _ ^ আমি আপনাকে জানাতে পারি যে আমি কী নিয়ে এসেছি।
কনর ও'ব্রায়েন

কারও পক্ষে এটি 118 বা তারও কম হওয়া সম্ভব বলে আমি মনে করি না, তবে কেউ যদি পরিচালনা করে তবে আমি 500 জন প্রতিনিধি দেব।
lirtosiast

দুটি প্রশ্ন: এন% কী এবং "" এবং "" কী?
কনর ওব্রায়েন

@ CᴏɴᴏʀO'Bʀɪᴇɴ দুঃখিত,% হ'ল দুটি বাইট টোকেন যা আপনি আপনার ক্যালকুলেটরটিতে টাইপ করতে পারবেন না। সেমেটেকের সোর্স কোডার বা টিআই-এর সরঞ্জামগুলিকে উত্সে সম্পাদনা করতে ব্যবহার করুন বা আমার সরবরাহ করা ফাইলটি ব্যবহার করুন।
lirtosiast

@ CᴏɴᴏʀO'Bʀɪᴇɴ সাবস্ক্রিপ্ট 10; আমি এটি নিয়মিত 10 দিয়ে প্রতিস্থাপন করেছি
লিটারোসিয়াসট

2

পাইথন 3, আনপেন্টকোডিয়াম ( 156 155 154) বাইট

n=e=""
for c in input():s="nil un bi tri quad pent hex sept oct enn".split()[int(c)];n+=s[c<"1"<"nn"==n[-2:]:];e+=s[0]
print(n.strip("i")+"ium",e.title())

পরিবর্তে প্রতিস্থাপন iiসঙ্গে iআমরা কোনো rstrip iগুলি আগে আমরা কর্মপ্রণালী ium, যেহেতু যে ডবল একমাত্র সম্ভব উৎস iগুলি। একইভাবে, আমরা কেস nপরীক্ষা করে এস স্ট্রিপ করি enn/nil


2

রেটিনা, 206 196 186 179 (আনসেটেনিয়াম) বাইট ( এটি অনলাইনে চেষ্টা করুন )

আমাকে এই ভাষা শেখানোর জন্য @ মার্টিনব্যাটনার ( https://codegolf.stackexchange.com/users/8478/martin-b%C3%Bbberner ) কে ধন্যবাদ

7 ফ্রাইট কেটে দেওয়ার জন্য @ ফ্রাইআমডেজিমনকে ধন্যবাদ জানাই

T`d`nubtq\p\hs\oe
.+
$&, $&
(?<=,.*n)
il
(?<=,.*e)n?
nn
(?<=,.*u)
n
(?<=,.*b)
i
(?<=,.*t)
ri
(?<=,.*q)
uad
(?<=,.*p)
ent
(?<=,.*h)
ex
(?<=,.*s)
ept
(?<=,.*o)
ct
r`i?$
ium
T`l`L`^.

উহ-বাইট সংস্করণ: এখানে

বিএনএইচ-বাইট সংস্করণ: এখানে


2

সিজেম, 95 বাইট

liAbA,"nil un bi tri quad pent hex sept oct enn"S/er_:c(eu\+_1>"en"={\W"il"t\}&S@:+)_'i=!*"ium"

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

এটি বিভাগে প্রতিদ্বন্দ্বিতা করে "রেজেক্স ছাড়াই ভাষা এবং কেবল মুদ্রণযোগ্য অক্ষর ব্যবহার করে।" ;) এটি ইতিমধ্যে পোস্ট করা কয়েকটি সমাধানের মতো সংক্ষিপ্ত হওয়ার আশা করে দেখেনি, তবে আমি কৌতূহল ছিলাম যে এটি কতক্ষণ শেষ হবে। এবং যেহেতু আমি এখন এটি পেয়েছি তাই আমি এটি পোস্টও করতে পারি।

ব্যাখ্যা:

li      Get input and convert to int.
Ab      Encode in decimal.
A,      Build list [0 .. 9].
"..."   String with prefixes.
S/      Split at spaces.
er      Transliterate. We now have a list of the prefix for each digit.
_:c     Copy and take first character of each, for short form.
(       Pop off first character.
eu      Convert it to upper case.
\+      Put it back in place. Done with short form.
_1>     Remove first character.
"en"=   Compare with "en", corresponding to the 90 special case.
{       Handle 90 case, replace 
  \       Swap full prefix list to top.
  W"il"t  Replace "nil" by "il" to avoid "nnn".
  \       Swap short form back to top.
}&      End of 90 case.
S       Push space between short form and full name.
@       Swap prefix list to top.
:+      Concatenate all the prefixes.
)       Pop off the last letter.
_'i=    Compare it with 'i.
!*      Multiply letter with comparison result. This gets rid of letter if it's 'i.
"ium"   Add the final part of the output.

1
কেবলমাত্র রেফারেন্সের জন্য, ডেনিস কেবল সেই সমস্ত বেস এনকোডিং সহ 6 বাইট সংরক্ষণ করে: পি
স্প 3000

1

যান, 322 বাইট (ট্রিবিবিয়াম)

package main
import("os"
"strings"
"fmt")
func main(){p,n,s:="nil un  bi  tri quadpenthex septoct enn ","",make([]byte,0)
b:=make([]byte,3)
os.Stdin.Read(b)
var d byte=32
for _,r:=range b{i:=r-48
n+=p[4*i:4*i+4]
s,d=append(s,p[4*i]-d),0}
fmt.Printf("%sium %s",strings.NewReplacer(" ","","ii","i","nnn","nn").Replace(n),s)}

STDIN থেকে তিনটি অক্ষর পড়ে, আরও উপেক্ষা করা হয়, ক্রাশের কম ফলাফল। সুতরাং এটি প্রতিটি সংখ্যার মধ্যে unnilniliumএবং এর মধ্যে কাজ করে ennennennium


এছাড়াও, 322 বাইটের উপাদানটি ট্রিবিবিনিয়াম হওয়া উচিত নয়? 321 হ'ল ট্রিবিউনিয়াম।
মাটোন 1

বাজে, আমি "আই" যুক্ত করার পরে সেটিকে মিস করেছি। এখন সবকিছু
যথাযথভাবে

1

পাওয়ারশেল, 170 168 165 (আনহেক্সিপেনসিয়াম)

-join($a="$input"[0..9]|%{(($x=(-split'Nil Un Bi Tri Quad Pent Hex Sept Oct Enn')["$_"]).ToLower(),$x)[!($y++)]})+'ium'-replace'(nn)n|(i)i','$1$2'
-join($a|%{$_[0]})

মোটামুটি সোজা এবং এখানে কোনও আশ্চর্যের কিছু নেই। কেবলমাত্র ব্যতীত যে আমি প্রথম অংশটি ছাড়াও ছোট ছোট কেসিংয়ের মাধ্যমে এবং মূল অংশটি ইতিমধ্যে শিরোনামের ক্ষেত্রে পৃথক অংশগুলি রেখে মূলধনের সমস্যাটি সমাধান করেছি। বেয়ার ভেরিয়েবল অ্যাসাইনমেন্টের জন্য অক্ষরগুলি হারাতে এড়াতে আগ্রাসনীয়ভাবে ইনলাইনড।

শেষ পরিবর্তনের পরে বোনাস: এখন দীর্ঘ উপাদান সংখ্যার জন্যও কাজ করে:

> echo 1337| powershell -noprofile -file "element.ps1"
Untritriseptium
Utts

1

X86, 192 এ সি (আনেনবিয়াম)

int c,s,a[8],x,main(){while((c=getchar()-48)>=0)x="nil\0un\0\0bi\0\0tri\0quadpenthex\0septoct\0enn"+4*c,strncat(a,x+(c<s-8),4),strncat(a+5,x,1),s=c;printf("%s%s %s",a,"ium"+((s&14)==2),a+5);}

থেকে অঙ্কগুলি পড়ে stdinএবং ফলাফলগুলি মুদ্রণ করে stdout। উপর নির্ভর করে sizeof(char*) == sizeof(int)

অবরুদ্ধ সংস্করণ:

int c, s, // Current and last digit, initially zero (0-9, not '0'-'9')
    a[8], // Buffer to write to (type doesn't matter when passed by pointer)
    x; // Int-pointer into lookup table

main() {
    while ((c = getchar() - 48) >= 0) { // 48 == '0'
        x = "nil\0un\0\0bi\0\0tri\0quadpenthex\0septoct\0enn" + 4*c;
        strncat(a, x+(c<s-8), 4); // Write digit, skip first char if c==0 && s==9
        strncat(a+5, x, 1); // Write first digit character somewhere else
        s = c;
    }
    printf("%s%s %s", a, "ium"+((s&14)==2), a+5); // Append "ium" (or "um" if s==2||s==3)
}

1

হাস্কেল, বাইপেন্টবিয়াম ( 305 271 269 265 261 259 253 252 বাইট)

import Data.Char
main=getLine>>=putStr.a
m=map toLower
a n=(r.m$p)++(k.filter isUpper$p)where p=(n>>=(words"Nil Un Bi Tri Quad Pent Hex Sept Oct Enn"!!).digitToInt)++"ium "
r('n':'n':'n':x)="nn"++r x
r('i':'i':x)='i':r x
r(x:z)=x:r z
r x=x 
k(h:t)=h:m t

নিমিকে ধন্যবাদ 34 বাইট শ্যাভড


1
আপনি হার্ডকোড করতে nnnএবং iiমধ্যে মামলা r, অর্থাত্ r('i':'i':a)='i':r a;r('n':'n':'n':a)="nn"++r a;r(x:a)=x:r a;r x=xএবং আর্গুমেন্ট ছাড়া সেটিতে কল: t=r.m.p
নিমি

@ নিনি চিয়ার্স!
jkabrg

1
সংরক্ষণ করতে আরো কিছু বাইট: concatMapহয় >>=, অর্থাত্p n=(n>>=(words"..."!!))++"ium "
nimi

@ নিমি চিয়ার্স আবার।
jkabrg

1

জিএনইউ সেড, আনসেক্সুনিয়াম (১1১ বাইট)

h
y/0123456789/nubtqphsoe/
s/./\u&/
x
s/$/ium/
:
s/0/nil/
s/1/un/
s/2/bi/
s/3/tri/
s/4/quad/
s/5/pent/
s/6/hex/
s/7/sept/
s/8/oct/
s/9/enn/
s/nnn/nn/
s/ii/i/
t
G

আমি প্রথমে প্রতীকটি তৈরি করি, তারপরে এটি স্থান আটকে রেখে নামটি তৈরি করি। /gচার বা ততোধিক প্রতিস্থাপন ব্যবহার করার চেয়ে একটি লুপ গল্ফিয়র (আমাদের কেবল একটি iiএবং / অথবা একটি থাকতে পারে nnn, তাই তাদের লুপের অভ্যন্তরে থাকার দরকার নেই, তবে এতে কোনও ক্ষতি হয় না)। অবশেষে, অনুষ্ঠিত প্রতীকটি পুনরুদ্ধার করুন এবং সংযোজন করুন।

(এনবি যখন আমি এটি লিখেছিলাম তখন বিদ্যমান বিদ্যমান উত্তরগুলি দেখিনি)

পরীক্ষার মামলা

এগুলি iiএবং nnnবিশেষ নিয়মগুলি অনুশীলন করে :

$ seq 100 89 1000 | ./60208.sed
unnilnilium
Unn
unoctennium
Uoe
biseptoctium
Bso
trihexseptium
Ths
quadpenthexium
Qph
pentquadpentium
Pqp
hextriquadium
Htq
septbitrium
Sbt
octunbium
Oub
ennilunium
Enu
ennennilium
Een

এবং একটি হাস্যকর, শারীরিক বিশ্বের তুলনায় এই কোডটি আরও কী দেয় তা দেখায়:

$ ./60208.sed <<<281039817
bioctunniltriennoctunseptium
Bounteous

1

টি-এসকিউএল 329 বাইট

creat proc x(@a char(3))as select replace(replace((select a.b as[text()]from(select left(@a,1)a union select substring(@a,2,1)union select right(@a,1))z join(values(0,'nil'),(1,'un'),(2,'bi'),(3,'tri'),(4,'quad'),(5,'pent'),(6,'hex'),(7,'sept'),(8,'oct'),(9,'enn'))a(a,b)on z.a=a.a for xml path(''))+'ium','ii','i'),'nnn','nn')

বিন্যাসকৃত:

create proc x(@a char(3))as 
select replace(replace(
(select a.b as[text()]from
    (
    select left(@a,1)a 
    union select substring(@a,2,1)
    union select right(@a,1))z 
join(values(0,'nil'),(1,'un'),(2,'bi'),(3,'tri'),(4,'quad'),(5,'pent'),(6,'hex'),(7,'sept'),(8,'oct'),(9,'enn')
    )a(a,b)on z.a=a.a 
for xml path('')
)+'ium','ii','i'),'nnn','nn')

1

পিএইচপি, 152 153 163 বাইট, আনপেন্টবিয়াম

ভাল, কমপক্ষে পিএইচপি এই সময় গড় প্রায় কোথাও হয়।

while(null!=$x=$argv[1][$i++]){$a.=$y=[nil,un,bi,tri,quad,pent,hex,sept,oct,enn][$x];$b.=$y[0];}echo str_replace([ii,nnn],[i,nn],$a.'ium ').ucfirst($b);

ফর্ম কমান্ড লাইনের মতো চালায়:

pentium.php 163

আউটপুট:

unhextrium Uht

Ungolfed

$y = array('nil','un','bi','tri','quad','pent','hex','sept','oct','enn');

while (null != ($x = $argv[1][$i++])) {
    $a .= $y[$x];
    $b .= $y[$x][0];
}

echo str_replace(
        array('ii','nnn'),
        array('i','nn'),
        $a . 'ium ')
     .ucfirst($b);

সম্পাদন করা

  • সমস্ত (শুধুমাত্র এক দ্বারা প্রতিস্থাপিত 10 বাইট সংরক্ষিত duh ) array()সঙ্গে -initializer[]
  • 'ium 'অতিরিক্ত কন্ডাক্টেশন ব্যবহারের পরিবর্তে সাদা বাক্স যুক্ত করে 1 বাইট সংরক্ষণ করা হয়েছে.' '.

0

পার্ল, 109 (আনইনিলেনিয়াম) বাইটস

108 কোড + 1 সুইচ

perl -pe 's!.!qw{Nil Un Bi Tri Quad Pent Hex Sept Oct Enn}[$&]!ge;s!nnN!nN!g;s!i?$!ium!;$_=lc$_.y!a-z!!dr;s!\b.!\U$&!g'

STDIN থেকে প্রতি লাইনে এক নম্বর হিসাবে ইনপুট নেয়।


আপনার মানে আন এন ইলসিপটিয়াম :)
কম্পিশিপ

আহ, এটি নির্দেশ করার জন্য ধন্যবাদ :) এটি এখনই ঠিক করুন
এসভিএসডি

0

জাভা 8 216 বাইটস

String f(int i){
String[] s = {"nil","un","bi","tri","quad","pent","hex","sept","oct","enn"};
return ((""+i).chars().mapToObj(y->s[y-48]).collect(Collectors.joining())+"ium").replace("ii","i").replace("nnn","n");
}

3
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! 1. আপনার কোড, একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন আকারে, একটি পূর্ণসংখ্যা ইনপুট হিসাবে গ্রহণ করা উচিত এবং সঠিক নাম উত্পন্ন করা উচিত। ২. এটি প্রশ্নে বর্ণিত হিসাবে অ্যাকাউন্ট করে না iiএবং nnn। ৩. কোড গল্ফের উদ্দেশ্যটি কোডটি যতটা সম্ভব সংক্ষিপ্ত করা make উত্তরের শিরোনামে এটির স্কোর থাকা উচিত। আপনি সাদা স্থানটি বাদ দিয়ে এবং পরিবর্তনশীল নামটি সংক্ষিপ্ত করে আপনার স্কোর হ্রাস করতে পারবেন।
ডেনিস

@ ডেনিস ধন্যবাদ! তবে কেন সাদা জায়গা গণনা? এটি কেবল কোডটিকে আরও বেশি অপঠনযোগ্য করে তোলে।
আরনেট

3
@ রনেট লক্ষ্যটি কোড পাঠযোগ্য নয়। ;) এছাড়াও কিছু শ্বেত স্পেস উল্লেখযোগ্য হতে পারে, তাই কোন স্বর্ণের স্থান গণনা করা উচিত এবং কোনটি নয় তা স্পষ্ট নয়। অতএব, উত্তরের যতটা সম্ভব শ্বেতস্পেস সরিয়ে নেওয়া উচিত এবং কেবল সেই সংস্করণটির বাইটগুলি গণনা করা উচিত। আপনি যদি যথাযথ ইনডেন্টেশন সহ পাঠযোগ্য সংস্করণ সরবরাহ করতে চান তবে আপনি সর্বদা গণনা কোডের নীচে পৃথকভাবে এটি করতে পারেন। মেটা সম্পর্কিত প্রাসঙ্গিক sensকমত্য দেখুন।
মার্টিন ইন্ডার

0

সি # 229 (বিবিএনএনিয়াম) 198 ইউএনএনওকটিয়াম বাইট

"N-'0 '" কৌশলটি ascii থেকে ইনটে রূপান্তর করার একটি উপায়। চর 9 = ASCII 57. চর 0 = ASCII 48, সুতরাং 57-48 = 9।

স্ট্যাটিক প্রাইভেট স্ট্রিং টেক্সট (ইনট ভি) {রিটার্ন (স্ট্রিং.জয়াইন ("", ভি। টোস্ট্রিং ()। নির্বাচন করুন ((চর এন) => "নীল আন দ্বি ত্রি ত্রি কোয়াড পেন্ট হেক্স সেপ্ট অষ্ট এনএন"। স্প্লিট () [এন -'0 '])) + "আইম")। ("এনএনএন", "এনএন") প্রতিস্থাপন করুন। ("আইআই", "আই") + "" + স্ট্রিং প্রতিস্থাপন করুন। যোগ দিন ("", ভি। টোস্ট্রিং () .Select ((char n) => "nubtqphsoe" [n-'0 '])); }

    static private string ToText(int  v)
    {
        string u,r="",t="";
        return v.ToString().Select((char n)=>{u="nil un bi tri quad pent hex sept oct enn".Split()[n-48];r+=u;t+=u[0];return r;}).Last()+"ium".Replace("nnn","nn").Replace("ii","i")+" "+t;
    }

এই পদ্ধতিটি ইনট নেয়, একটি স্ট্রিংতে রূপান্তর করে, তারপরে একটি ল্যাম্বডায় আগুন লাগিয়ে দেওয়া অক্ষরের একটি লিনকিউ নির্বাচন সম্পাদন করে।

উপসর্গগুলির স্ট্রিং বিভক্ত করে ল্যাম্বদা ফ্লাইতে একটি অ্যারে তৈরি করে (এটি সংজ্ঞায়িত করার চেয়ে কম অক্ষর)। এরপরে এটি বর্তমান চরিত্রের ইনট মান (উপরে উল্লিখিত এন-'0 'ট্রিক) ব্যবহার করে উপসর্গের সূচকটি টান দেয়।

যা কিছু স্ট্রিংয়ে আবৃত থাকে oin যোগদান করুন যা সমস্ত লিনকিউ ফলাফলকে এক সাথে সম্মতি দেয়। "Ium" টি টেক করুন, তারপরে একটি দু'টি। Nnn এবং ii সাফ করার জন্য শেষে বিবৃতি প্রতিস্থাপন করুন।

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


পরিবর্তে n-'0', কেন না n-30?
আন্ডারগ্রাউন্ডোমোনাইল

ভাল কল, তবে এটি চরিত্রের সেটের উপর নির্ভর করে। 48 যদিও আমার জন্য কাজ করে;)
রিক ওয়ে

0

সি, 210 204 আনেনেনিয়াম (199) বাইট

এটি রানটাইম চরিত্রের সেট হিসাবে ASCII প্রয়োজন।

f(char*n,char*s){char*c="NilUnBiTriQuadPentHexSeptOctEnn",*p,*o=n,i,j;for(;*n;){for(j=i=*n-48,p=c;*p&32||i--;++p);for(*s++=*n=*p+32;*++p&32;)*s++=*p;s-=*n++-j==39||j/2-*n==1;}*o-=32;strcpy(s,"ium");}

আমি একটি পুনরাবৃত্ত সমাধান সমাধান করতে চেষ্টা করেছি (যা এর প্রয়োজন pএবং এড়ানো হয় o) তবে এটি আর দীর্ঘস্থায়ী হয়।

আমি বিশেষ করে গর্বিত regexp জন্য মিলকারীর লজ্জিত নই / 90|[23]$, যা উপর নির্ভর 9এবং 0হচ্ছে সর্বাধিক দূরে পৃথক সংখ্যা (এবং শুধুমাত্র যুগল 9 দ্বারা পৃথক - 39কোডে একটি ফল jএকটি পূর্ণসংখ্যা মান হচ্ছে এবং *nএখনও একটি হওয়া ASCII চরিত্র) এবং এটি 2এবং 3কেবল সর্বশেষ বিটে পৃথক, তাই 2 দ্বারা বিভাজনগুলি তাদের সংশ্লেষ করে।

প্রসারিত কোড:

void f(char *n,                 /* input number / output symbol */
       char *s)                 /* output name */
{
    char *c = "NilUnBiTriQuadPentHexSeptOctEnn", /* digit names */
        *p,
        *o = n,                 /* first char of input */
        i, j;                   /* current digit value */
    for (;*n;) {
        j = i = *n-48;
        for (p=c;  *p&32 || i--;  ++p) /* Find the i'th capital letter in c */
                ;
        for (*s++ = *n++ = *p++ + 32;  *p&32;  ) /* Downcase and copy following lowercase */
            *s++ = *p++;
        s -= *n-j==39 || j/2-*n==1;   /* backup one if 9 is followed by 0, or if 2 or 3 is at end of input */
    }
    *o -= 32;                   /* Capitalise symbol */
    strcpy(s,"ium");            /* Finish name */
}

পরীক্ষার জোতা:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    char buf[1024];
    while (*++argv) {
        f(*argv, buf);
        printf("%s %s\n", *argv, buf);
    }
    return EXIT_SUCCESS;
}

0

আর, 278 বাইট

g<-function(x){k<-data.frame(c("nil","un","bi","tri","quad","pent","hex","sept","oct","enn"));row.names(k)<-0:9;n<-unlist(strsplit(as.character(x),""));return(sub("nnn","nn",sub("ii","i",paste(c(as.vector(k[n,]),"ium"," ",sapply(k[n,],function(x)substr(x,1,1))),collapse=""))))}

সেরা নয় ... তবে আমি এখনও আর শিখছি তাই আমি ভেবেছিলাম আমার চেষ্টাটি পোস্ট করব। এটিকে আরও উন্নত করতে কোনও পরামর্শ? এখন যেহেতু আমি এটির বিষয়ে ভাবছি সম্ভবত সারিটির নাম তৈরি করে স্থান নষ্ট করার চেয়ে নবম -১ সারিতে সাবসেট করা সম্ভব।

ব্যবহারের উদাহরণ

> g(118)
[1] "ununoctium uuo"
> g(999)
[1] "ennennennium eee"
> g(558)
[1] "pentpentoctium ppo"
> g(118)
[1] "ununoctium uuo"
> g(90)
[1] "ennilium en"
> g(2)
[1] "bium b"

Ungolfed

g <- function(x) {
    k <- data.frame(c("nil","un","bi","tri","quad","pent","hex","sept","oct","enn"))
    row.names(k) <- 0:9
    n <- unlist(strsplit(as.character(x),""))
    return(
        sub("nnn", "nn", sub("ii", "i", paste(c(as.vector(k[n,]),"ium"," ", sapply(k[n, ],function(x)substr(x,1,1))), collapse = ""))))
}
  1. একটি কী তৈরি করুন, ডেটা ফ্রেমে রূপান্তর করুন এবং ভেরিয়েবল হিসাবে সেট করুন k
  2. 0-9সহজ সনাক্তকরণ হিসাবে সারি নাম সেট করুন
  3. ইনপুট নিন x, চরিত্রে রূপান্তর করুন , এটি বিভক্ত করুন (উদাহরণস্বরূপ 137 থেকে "1" "3" "7")
  4. kবিভক্ত নম্বর ইনপুট উপর ভিত্তি করে সাবসেট এবং এন্ট্রি ফিরে
  5. তাদের একত্রে সংযুক্ত করে যুক্ত করুন -ium
  6. kম্যাচের প্রথম বর্ণটি টানতে সাবস্ট্রিং ব্যবহার করে সাবসেট করুন । এটি তাদের মধ্যে ফাঁকা স্থান সহ 5 ধাপের আউটপুটকে সংযুক্ত করে
  7. এবং নিদর্শনগুলি sub()প্রতিস্থাপন করতে ব্যবহার করুনnnnii

আপনি প্রতীকের প্রথম অক্ষরটি মূলধন করতে ভুলে গেছেন। উদাহরণস্বরূপ, এটি "Uuo", নয় "uuo", 118. করা উচিত
আলেকজান্ডার Revo

0

জাভাস্ক্রিপ্ট - 169 বাইট

n=>eval(`q='nil0un0bi0tri0quad0pent0hex0sept0oct0enn'.split(0);for(b of (_=$='')+n){c=q[b];$+=q[b];_+=(_?c:c.toUpperCase())[0]}$.replace(/i$()|n(nn)/g,'$1$2')+'ium '+_`)

উদ্ভটভাবে, আমার মানচিত্র ব্যবহারের চেষ্টাগুলি লুপের চেয়ে দীর্ঘ ছিল ।

সম্পাদনা: ওফস, তারিখটি পরীক্ষা করতে ভুলে গেছি।



-1

পাইথন, 154 বাইট

import re
n=input('')
for c in n:
 print(re.sub('ii','i',re.sub('nnn','nn',['nil','un','bi','tri','quad','pent','hex','sept','oct','enn'][int(c)]+'ium')))

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