"পারমাণবিক" কোড গল্ফ - একটি আইসোটোপে নিউট্রনের সংখ্যা নির্ধারণ করুন


9

আপনার কাজটি হ'ল ইনপুট হিসাবে কোনও এলিমেন্টের আইসোটোপযুক্ত একটি স্ট্রিং গ্রহণ করুন, পরমাণুর সংখ্যার সাথে নিম্নলিখিত উদাহরণের মতো এনকোডযুক্ত যার পরে একটি স্থান এবং IUPAC রাসায়নিক চিহ্নটির জন্য উপাদান থাকে:

162 Dy

এবং সেই আইসোটোপের পরমাণুতে নিউট্রনের সংখ্যাটি ফিরিয়ে দিন ।

উপরের উদাহরণে, ডাইসপ্রোসিয়াম -162 এর মধ্যে 96 নিউট্রন রয়েছে (162 মোট নিউক্লিয়ন, বিয়োগ 66 প্রোটন কারণ এটি ডিসপ্রোজিয়াম), তাই আউটপুট হওয়া উচিত 96

আপনি ধরে নিতে পারেন যে প্রদত্ত উপাদানটি বর্তমানে আইইউপিএসি দ্বারা স্থায়ী নাম দেওয়া 114 টি উপাদানের মধ্যে একটি (ফ্লিরোভিয়াম এবং লিভারমোরিয়াম সহ) হবে এবং জেনেরিক নাম যেমন Uus"ইউনসেপটিয়াম" নয় be আপনি ধরেও নিতে পারেন যে আইসোটোপের পারমাণবিক সংখ্যা 1000 এর বেশি হবে না বা উপাদানটির প্রোটনের সংখ্যার চেয়ে কম হবে না।

প্রোটন বা নিউট্রন সংখ্যক উপাদানগুলির তথ্য পুনরুদ্ধার করতে আপনি বিল্ট-ইনগুলি ব্যবহার করতে পারবেন না বা আপনার কোডের মধ্যে এমন কোনও ফাংশন ব্যবহার করতে পারেন যা কোনও স্ট্রিং বা নম্বর টোকেনকে নিজের কোড হিসাবে মূল্যায়ন করে।

যে কোনও ভাষার ভাষাতে এটি করতে সবচেয়ে কম টোকেন ব্যবহার করার প্রোগ্রাম। তবে, এই চ্যালেঞ্জের উদ্দেশ্যে, একটি স্ট্রিংয়ের প্রতিটি অক্ষর বা একটি পরিবর্তনশীল নাম একটি স্ট্রিংয়ে রূপান্তরিত হয়, একটি টোকেন হিসাবে গণনা করে।

রেফারেন্সের জন্য উপাদানগুলির তালিকা এবং তাদের পারমাণবিক সংখ্যা:


আহা ঠিক আছে, শুধু ট্যাগ উইকি পড়ুন। দেখে মনে হচ্ছে যে ট্যাগটি কী ছিল তা আমি ভুল বুঝেছি।
Sp3000

1
সাধারণভাবে, ভাষাগুলির মধ্যে ন্যায়বিচারের ক্ষেত্রে কোড গল্ফের চেয়ে অ্যাটমিক কোড গল্ফ আরও ভাল কারণ এটি সিজেম বা গল্ফস্ক্রিপ্টের মতো গল্ফিং-নির্দিষ্ট ভাষার পক্ষে না।
জো জেড।

2
সংখ্যাগুলি কি একক টোকেন হিসাবে বিবেচিত হয়? আমার উত্তরের মতো, 65একটি টোকেন নাকি 2 টোকেন?
অপ্টিমাইজার

4
"সাধারণভাবে ভাষার মধ্যে ন্যায্যতার ক্ষেত্রে কোড গল্ফের চেয়ে পারমাণবিক কোড গল্ফ আরও ভাল কারণ এটি সিজেম বা গল্ফস্ক্রিপ্টের মতো গল্ফিং-নির্দিষ্ট ভাষার পক্ষে নয়।" নাকি তা করে? ;)
মার্টিন ইন্ডার

1
যদি বিল্ট- f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]
ইনদের

উত্তর:


5

সিজেম, 120 6 বা 116 টোকেন

যদি সংখ্যাগুলি একক টোকেন হয়, তবে আমাদের কাছে 6 টি টোকেন হিসাবে পুরো কোড রয়েছে:

212065132249371573644124577121541653292994215804249878509033804566332949723850494006885998432589817663973272353884582668784347806472090795216938149345570424681103578762377771127645936569136562173556524971260383556793671988140498193154122873972644190003488894117491373991987567199279175132071186860926217964652052981868515510731685503564515183920386542420190587555479397630718313762477968862282786518176572529906744217608955037610524188966159703528812103601771438848515748286560373093942224945233978303729665751831532717 128b:c~

যেখানে টোকেন রয়েছে

212065132249371573644124577121541653292994215804249878509033804566332949723850494006885998432589817663973272353884582668784347806472090795216938149345570424681103578762377771127645936569136562173556524971260383556793671988140498193154122873972644190003488894117491373991987567199279175132071186860926217964652052981868515510731685503564515183920386542420190587555479397630718313762477968862282786518176572529906744217608955037610524188966159703528812103601771438848515748286560373093942224945233978303729665751831532717
128
b
:
c
~

এই কোডটি উপরের কোডের বড় সংখ্যার স্ট্রিং সংস্করণ সম্বলিত নীচের কোডের সমান। তবে একটি স্ট্রিংয়ের কারণে, নীচের কোডটিতে 116 টোকেন রয়েছে:

ri"ᘭ᛭绊ڏ晍嬨塐弶⛡ᠸ庐ᖩે槑湘ࡊ㚋䊌栕ᄂỗ∘抁埵ໂČ槩唹ᘇ穗≧ṷ㴛勤烓≿Ⲳ㇭Ȋ嬅͙獚簜䱡数㍉㉦䩛爈拴矍㚴燌㾄䱮⃜⢴ⶏ㯗႒ݘ੡䅄瞟⮘㢧⳻⮵∼䚽珯ほֹ㳰櫣ݰ牜᫦殙ᆌ穟䖻ᄭⓚ獙஧༧撒咛啺"2F#b57b65f+:cr2*2<#2/)-

টোকেন (ব্যাখ্যা সহ) হয়

r                           "Read the first input";
i                           "and convert it to integer";
"
91 character string         "Then this base converted string";
"
2
F
#                           "'s ASCII representation of each character gets converted";
b                           "to base 2**15";
57                          "which gets converted to";
b                           "base 57";
65                          "and we add 65 to each element in the base 57 array";
f
+
:
c                           "and convert each array element to character.";
r                           "Then read the next input string, which is atom's IUPAC";
2                           "double it";
*
2                           "and take only first 2 characters";
<
#                           "Find the occurrence of these 2 characters in the big string";
2                           "and divide the index by 2";
/
)                           "increment the index to counter 0 offset";
-                           "and subtract this number, which is the atomic number from"
                            "the input number of nucleons";

উপরের স্ট্রিংটি চালানোর জন্য, এই লিঙ্ক থেকে কোডটি অনুলিপি করুন কারণ এসই উত্তর আপলোড করার সময় কিছু অক্ষর মুছে ফেলে।

এটি 109 টোকনেও হ্রাস করা যেতে পারে তবে এসই আমাকে আমার উত্তর আপলোড করতে দেবে না, ত্রুটিযুক্ত ইউআরআই ব্যতিক্রম ছুঁড়ে ফেলবে।

ইনপুট মত যায়

162 Dy

আউটপুট মত

96

অদ্ভুত স্ট্রিংটি কেবলমাত্র একটি বেস এনকোডেড স্ট্রিং যা তাদের সূচকগুলিতে সমস্ত আইইপিএসি নাম ধারণ করে Atomic number * 2 - 1

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


সংখ্যাগুলি কেন একটি টোকেন হবে না?
মার্টিন এন্ডার

@ মার্টিনবাটনার ওয়েল, যদি এই প্রশ্নের প্রয়োজনে স্ট্রিংগুলি একক টোকেন না হয় তবে সংখ্যাগুলি খুব বেশি নাও হতে পারে :)
অপ্টিমাইজার

1
এটি বোর্ন এবং ইন্ডিয়ামের জন্য ভুল ফলাফল দেয় কারণ দ্বি-উপাদানগুলির অক্ষর দিয়ে শুরু হয় Bএবং Iতাদের সামনে উপস্থিত হয়।
মার্টিন ইন্ডার

^ আপনার অর্থ বোরন এবং আয়োডিন। ইন্ডিয়াম হয় In
জো জেড।

ছেলেরাও। বি এবং আমি যে বাগটি ঠিক আছে।
অপ্টিমাইজার

1

এক্সিকিউটিভ সহ পাইথন 3, 17 টোকেন

exec(int.to_bytes(42580960806925240587487231677747050990110980939298529158008049507419456038066480774222358994792932281429500848123044123619998194774734911333011516763318834841258668032468977581617546825403043048781904307873076644287421190283925612029151422009703963147720234582458918676020358978146687598642493196719470433413287097024943497230356536978257362073205770196031226838532057690859535911353521203287284228407660035870497366713816359382867026152168356178620422021081074864815228071041303891869741111572003521808946355179139580269537828514345177247630946236685801543450404664783011350766913659964138280312012942354586269107632396118108534925651704031851802293836135007879834261627022944650861299698061444211422731907625,295,'big'))

পাইথন 3 এক্সিকিউট ছাড়াই, 35 টোকেন

m,n=input().split()
print(int(m)-(0x50000003c00000000000000000000000000000000000000000000000000000000000000000000000000000000008c00000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000116880005ad0000d002b832400000000000000000000000000000004c0000064f8000003806a0088015660000000000000000000000000000b00000000000ac0000000016efd12c0004b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017a700760005400f400000000000001700a56c000000000000000000000000000004c0000000000000000000000000000000000000000000000000000000000000000002ee6000000000700000029e00522c0000000000000000000000000003680000002a3200000000000c00032800000000000000000000000000000e91c000ce000000000000000c000000000000e400000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a000006200000000000000000000000000000000000000000000000000006c0000043000000000000509008000000000000000000000000000000000000000000000000000000000000082000007c0000000000000000000000000000000ae00000019390000000000068000000000000000000000000000000000fc06388000000000000000000000000000000000000000000000000108000000006e0000000000000000000000000000d2000000000000000000000000000074037300001be1808800000000c4e98000050000000000000000000000000000000046000000000061014f580001000000e0000000000000000000000000013eaa12400000017c680000002f0000059000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c04a2f7001000007880e0001300d408012000060a0000000000000000000>>7*int(n,36)&127))

রুবি ইওল সহ, 17 টোকেন

eval [22146635005300445083784033446026580324048447941091204274213253110537099437818224958820496527991920943430421799402248351995854377736142191462062582991150146209770141259010870255095388946677505144127700666745571877848513432112199556183753919673308110291261587736766001750331575554182707626697924148465335917814388410868486650419909619279250674754531982074694183257024218097391705830277480110741636037821082572926228904583257826932150641336017429157246896262085081972165351023141358378905645164343005169041637147077645200273099823888392038731180787177889720531999846231330677441270444855911286469030157575699579420898896870179419644019549285098577609138033580761786048462145007410.to_s(16)].pack('H*')

জাভাস্ক্রিপ্ট, 49 টোকেন

m=prompt().split(/ /);
alert(m[0]-(function(){
_H_He_Li_Be_B_C_N_O_F_Ne_Na_Mg_Al_Si_P_S_Cl_Ar_K_Ca_Sc_Ti_V_Cr_Mn_Fe_Co_Ni_Cu_Zn_Ga_Ge_As_Se_Br_Kr_Rb_Sr_Y_Zr_Nb_Mo_Tc_Ru_Rh_Pd_Ag_Cd_In_Sn_Sb_Te_I_Xe_Cs_Ba_La_Ce_Pr_Nd_Pm_Sm_Eu_Gd_Tb_Dy_Ho_Er_Tm_Yb_Lu_Hf_Ta_W_Re_Os_Ir_Pt_Au_Hg_Tl_Pb_Bi_Po_At_Rn_Fr_Ra_Ac_Th_Pa_U_Np_Pu_Am_Cm_Bk_Cf_Es_Fm_Md_No_Lr_Rf_Db_Sg_Bh_Hs_Mt_Ds_Rg_Cn_Uut_Fl_Uup_Lv_
}).toString().split(/_/).indexOf(m[1]))

পারমাণবিক-কোড-গল্ফে এন টোকেন হিসাবে কেবল বড়-ইনট / চিহ্ন / ভেরিয়েবল গণনা করুন :)


অস্বীকার evalএবং এর execবিরুদ্ধে কাজ করে না ?
জো জেড।

@JoeZ। "বড় পূর্ণসংখ্যা অনুসন্ধানের টেবিল" আক্রমণে এখনও দুর্বল, আপডেট দেখুন।
কেনেটিএম

দেখে মনে হচ্ছে এই সমস্যাটি শুরু থেকেই খারাপভাবে তৈরি হয়েছিল।
জো জেড।

0

জাভাস্ক্রিপ্ট, 42 টোকেন (?)

alert(parseInt(x=prompt().split(" "))-Object.getOwnPropertyNames({__H_HeLiBeB_C_N_O_F_NeNaMgAlSiP_S_ClArK_CaScTiV_CrMnFeCoNiCuZnGaGeAsSeBrKrRbSrY_ZrNbMoTcRuRhPdAgCdInSnSbTeI_XeCsBaLaCePrNdPmSmEuGdTbDyHoErTmYbLuHfTaW_ReOsIrPtAuHgTlPbBiPoAtRnFrRaAcThPaU_NpPuAmCmBkCfEsFmMdNoLrRfDbSgBhHsMtDsRgCn__Fl__Lv:0})[0].indexOf(x[1])/2)

PS: টোকেন গণনা করার জন্য আমি কোথায় কিছু স্ক্রিপ্ট পাব?

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