[ব্রাঃ] কোড গল্ফ খাওয়া [বা] ডি


20

নিম্নলিখিত স্ট্রিং বিবেচনা করুন:

Tin Snips

এই স্ট্রিংটিতে পর্যায় সারণীতে বেশ কয়েকটি পারমাণবিক চিহ্ন রয়েছে । আমরা তাদের কয়েকটি সনাক্ত করতে এই স্ট্রিংটি পুনরায় লিখতে পারি:

[Ti][N] [Sn][I][P][S]

অবশ্যই, আমরা এটিও এভাবে লিখতে পারি:

T[In] [S][Ni][P][S]

ইনপুট পুনর্লিখনের নিয়মগুলি নিম্নরূপ:

  1. ইনপুটটির ক্ষেত্রে পারমাণবিক প্রতীকগুলির মিলের ক্ষেত্রে কিছু আসে যায় না।
  2. যদি কোনও উপাদান একটি পারমাণবিক প্রতীক হিসাবে ব্যবহৃত হয় তবে এর ক্ষেত্রে অবশ্যই পরিবর্তন হওয়া উচিত তাই প্রতীকটি সঠিক। প্রাক্তন: hহয়ে যাবে [H]
  3. সমস্ত উপাদান চিহ্নগুলি ASCII বর্গক্ষেত্র বন্ধনীতে আবদ্ধ করা হয়েছে [এবং ]
  4. হোয়াইটস্পেস সংরক্ষিত: Big ego"জি" এবং "ই" একত্রিত করতে পারে না [Ge]
  5. সমস্ত ইনপুট অক্ষরকে পারমাণবিক প্রতীকের সাথে একত্রিত করার প্রয়োজন হয় না: যদি কোনও ইনপুট অক্ষরকে একটি প্রতীক হিসাবে স্থাপন না করা হয় তবে এটি যেমন হয় তেমনটি পাস হয় (কেস কোনও ব্যাপার নয়)।
  6. যদি একটি প্রতীক তৈরি করা যায় তবে এটি তৈরি করা আবশ্যক । অন্য কথায়, Tinউপরের উদাহরণে আউটপুট দেওয়ার অনুমতি নেই কারণ এই শব্দটিতে কমপক্ষে একটি প্রতীক তৈরি করা সম্ভব। কেবলমাত্র যখন অক্ষরটি অব্যবহৃত হয়ে যায় তখনই যখন এটি পারমাণবিক চিহ্ন তৈরি করতে ব্যবহার করা যায় না।
  7. এই চ্যালেঞ্জের উদ্দেশ্যে, হাইড্রোজেন (1) থেকে ওগেনেসন (118) পর্যন্ত সমস্ত উপাদান বৈধ। কোনও উচ্চতর উপাদান বৈধ নয়।
  8. কিছু উচ্চতর উপাদানগুলির দ্ব্যর্থক নাম এবং চিহ্ন রয়েছে: এই চ্যালেঞ্জের উদ্দেশ্যে উইকিপিডিয়ায় সংস্করণ ব্যবহার করা হবে। সুবিধার্থে মঞ্জুরিযোগ্য পারমাণবিক প্রতীকগুলি এখানে রয়েছে: এইচ, হি, লি, বি, বি, সি, এন, ও, এফ, নে, না, এমজি, আল, সি, পি, এস, ক্ল, আর, কে, সিএ, এসসি, তি, ভি, সিআর, এমএন, ফে, কো, নি, কিউ, জেডএন, গা, জি, আস, সে, ব্র, কেআর, আরবি, এসআর, ওয়াই, জেআর, এনবি, মো, টিসি, রু, আরএইচ, পিডি, এগ্র, সিডি, ইন, স্ন, এসবি, তে, আই, এক্স, সিএস, বা, লা, সি, প্র, এনডি, পিএম, এসএম, ইইউ, জিডি, টিবি, ডি, হো, এর, টিএম, ওয়াইবি, লু, এইচএফ, তা, ডাব্লু, রে, ওস, ইর, পেন্ট, আউ, এইচজি, টি, পি, বি, বি, পো, এট, আরএন, ফ্র, রা, এসি, থ, প, ইউ, এনপি, পু, এম, সিএম, বি কে, সিএফ, এস, এফ, মো, না, এলআর, আরএফ, ডিবি, এসজি, ভি, এইচ, এমটি, ডিএস, আরজি, সিএন, এনএইচ, ফ্ল, ম্যাক, এলভি, এস, ওগ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা কোনও একক সরবরাহিত ইনপুট থেকে সমস্ত সম্ভাব্য আউটপুট তৈরি করে। ইনপুট এবং আউটপুট উভয়ই আপনার পছন্দের কোনও ফর্ম হতে পারে। এটি স্ট্রিং, অক্ষরের অ্যারে বা অন্য কোনও ডেটা স্ট্রাকচার হতে পারে: যা কিছু সুবিধাজনক এবং স্পষ্টভাবে ইনপুট এবং আউটপুটকে উপস্থাপন করে। আপনার কোডের বাইরে / আউটপুট উভয়ই ইনপুট এবং আউটপুট পাস হতে পারে তবে আপনি বেছে নিন: স্ট্যান্ডার্ড ইন / আউট, ফাংশন আর্গুমেন্ট / রিটার্ন, বা অন্য কিছু।

  • ইনপুটটি সালিসী ক্ষেত্রে এবং স্থানের কেবলমাত্র ASCII অক্ষরযুক্ত ধনাত্মক দৈর্ঘ্যের একটি স্ট্রিং (পূর্ববর্তী অনুচ্ছেদ দেখুন) হবে (0x20 ) অক্ষর থাকবে।
  • আপনার কোডকে অবশ্যই সমস্ত আউটপুট স্ট্রিং তৈরি করতে হবে যা উপরের ইনপুট নিয়ম ব্যবহার করে তৈরি করা যেতে পারে।
  • আউটপুট ক্রম বাস্তবায়ন সংজ্ঞায়িত হয়। একমাত্র প্রয়োজনীয়তা এই সমস্ত আউটপুট স্ট্রিং উপস্থিত।
  • যদি কোনও বৈধ ইনপুট স্ট্রিং সহ উপস্থাপন করা হয় যা কোনও পারমাণবিক চিহ্ন ধারণ করে না, কেবল ইনপুট স্ট্রিংটিকে আউটপুট দেয়।
  • যদি উপরের নিয়ম অনুসারে বৈধ নয় এমন একটি ইনপুট স্ট্রিং উপস্থাপন করা হয় (নাল, শূন্য অক্ষর, অবৈধ অক্ষর রয়েছে ইত্যাদি) আপনার প্রোগ্রামে কিছু করতে পারে (ক্রাশ, ফাঁকা আউটপুট ইত্যাদি)
  • আউটপুট পর্যায় সারণীর সাথে মেলে প্রয়োজন পারমাণবিক প্রতীক ছাড়া কেস-সংবেদনশীল।
  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।

পরীক্ষার কেস:

Tin Snips
[Ti][N] [Sn][I][P][S]
[Ti][N] [S][Ni][P][S]
[Ti][N] [S][N][I][P][S]
T[In] [Sn][I][P][S]
T[In] [S][Ni][P][S]
T[In] [S][N][I][P][S]
T[I][N] ...

Quack
Q[U][Ac][K]
Q[U]a[C][K]

hehe
[H]e[H]e
[H]e[He]
[He][H]e
[He][He]

Stack Exchange
[S][Ta][C][K] Ex[C][H]a[N][Ge]
[S]t[Ac][K] Ex[C][H]a[N][Ge]

এটি কোড গল্ফ, তাই আমাকে আপনার সংক্ষিপ্ততম কোডটি দেখতে দিন!


1
প্রতি @ রাসারদের মন্তব্যে টিন টি হবে T[I][N]না [T][I][N]কারণ টি উপাদান নয়। আমার প্রশ্ন (এবং সম্ভবত রাসারের) হ'ল: আমাদের কি কেবল ১ দিতে হবে? কেবলমাত্র আউটপুট যেখানে এলিমেন্ট সাবসিটিমেন্টের সর্বাধিক সংখ্যক সংখ্যা তৈরি করা হয়? ২. শুধু ন্যূনতম পরিমাণ? (হাইড্রোজেন সহ HeHe এর উত্তরটির কোনও উত্তর নেই) ৩. সমস্ত আউটপুট যেখানে ম্যাচগুলি সম্পূর্ণ নিঃশেষ হয়ে যায়? ( এক্ষেত্রে T[I][N]পাশাপাশি বৈধও T[In]হবে)) আমি মনে করি সঠিক ব্যাখ্যাই ৩
লেভেল রিভার সেন্ট


1
সুতরাং কোয়াকের জন্য 2 সম্ভাবনা রয়েছে: Q[U][Ac][K]এবং Q[U]a[C][K]। ঠিক আছে?
রুটটো দুই

1
সমস্ত মামলা যাচাই করা হয়েছে।
ক্যালকুলেটরফলাইন

1
@ চ্যালেঞ্জার 5 "আপনার কোডটিকে অবশ্যই সমস্ত আউটপুট স্ট্রিং তৈরি করতে হবে যা উপরের ইনপুট নিয়ম ব্যবহার করে তৈরি করা যেতে পারে"
জোনাথন অ্যালান

উত্তর:


5

পাইথন 3, 289 263 বাইট

পাইপিতে আরও একটি সম্পূর্ণ গ্রন্থাগার পাওয়া গেছে: mendeleev

from mendeleev import*
Z={element(i).symbol for i in range(1,119)}
L,R='[]'
def f(h,r=''):t=h.title();return((Z&{t[0]}and f(h[1:],r+L+t[0]+R)or[])+(Z>{(t+L)[:2]}and f(h[2:],r+L+t[:2]+R)or[])+(not{(r[-1:]+t[0]).title(),t[0]}&Z and f(h[1:],r+h[0])or[]))if h else[r]

পুরানো উত্তর:

from elements import*
Z={e.symbol for e in ELEMENTS}|{*'Cn Ds Fl Lv Mc Nh Og Rg Ts'.split()}
L,R='[]'
def f(h,r=''):t=h.title();return((Z&{t[0]}and f(h[1:],r+L+t[0]+R)or[])+(Z>{(t+L)[:2]}and f(h[2:],r+L+t[:2]+R)or[])+(not{(r[-1:]+t[0]).title(),t[0]}&Z and f(h[1:],r+h[0])or[]))if h else[r]

Http://www.lfd.uci.edu/~gohlke/code/elements.py.htmlelements.py থেকে একটি লাইব্রেরি ব্যবহার করে । এটি ১১০ থেকে ১১৮ টি উপাদান অনুপস্থিত রয়েছে, তবে এটি আমার সর্বাধিক আধুনিক গ্রন্থাগার ছিল। অনুপস্থিত উপাদানগুলি যুক্ত করতে 40 বাইট খরচ হয়।

সবচেয়ে জটিল অংশটি হ'ল যুক্তি ছিল যখন কোনও উপাদান চিহ্নের অংশ না হয়ে কোনও চরিত্রটি অতিক্রম করা যায়।


1
উহ অপেক্ষা করুন, mendeleevএকজন ব্যবহারকারী ছিলেন না , গ্রন্থাগার ছিল না ?
ম্যাথু রোহ

3

জেলি ,  192  191 বাইট

-1 ব্যবহার করে Ɗ(একটি উন্নত দ্রুত)

“¦UV2ḤF2ı½ṅḶḊ⁼5JI5MẇvẋẊẊ¬Ḥḳ'ƈ<ḷėƤ7*⁾ṾxMæS⁺`?^Ƭb¦ɗDß⁼pþɲOṃ⁽2Ė>,Ḣ(ḞŒƊOGƤ×⁺ṇṂ®ȤT0y°^Ẇ⁺:Þ]ṢṬ¶ịṪḂƇ ñAƬCṫ$wÆĿĖỴỴƇẓƊqḌ@;ẏ`ṃFƥḣ⁽²»ḟ⁶s2;“¤²R.ȯ7ŒL£ɦ»Œt
Œte¢
ŒṖµL€=1oÇ€ṂµÐfµṡ2;€ÇÐfÇ€€S€¬SµÐḟ⁾[]jŒtƊ¹Ç?€€

এটি অনলাইন চেষ্টা করুন! - "স্ট্যাক এক্সচেঞ্জ" পরীক্ষার কেসটি 60 এর সীমাতে পূরণের পক্ষে খুব অযোগ্য (এটি অফলাইনে চালানো 2 মিনিটের মধ্যে সঠিক ফলাফল দেয়)।

কিভাবে?

কোডের প্রথম লাইনটি সমস্ত 118 উপাদান চিহ্ন সহ একটি তালিকা তৈরি করতে নীলাদিক লিঙ্ক। এটি করার জন্য এটি দুটি তালিকাকে সম্মতি দেয়, প্রথমটিতে সমস্ত দৈর্ঘ্যের 2 টি অক্ষরের তালিকা থাকে (অর্থাত্ স্ট্রিং) দ্বিতীয়টি অক্ষরের তালিকা এবং শিরোনামের ক্ষেত্রে ফলাফলের তালিকা থাকে। দুটি তালিকাগুলি নিজেই তৈরি করেছে বেশিরভাগ একক স্ট্রিং তৈরির জন্য জেলির অভিধানে শব্দগুলি অনুসন্ধান করে।

এই সংকোচনের প্রথমটি হ'ল:

“¦UV2ḤF2ı½ṅḶḊ⁼5JI5MẇvẋẊẊ¬Ḥḳ'ƈ<ḷėƤ7*⁾ṾxMæS⁺`?^Ƭb¦ɗDß⁼pþɲOṃ⁽2Ė>,Ḣ(ḞŒƊOGƤ×⁺ṇṂ®ȤT0y°^Ẇ⁺:Þ]ṢṬ¶ịṪḂƇ ñAƬCṫ$wÆĿĖỴỴƇẓƊqḌ@;ẏ`ṃFƥḣ⁽²»

যা ফলন দেয়

" biznagas sepmag ratbag catchflies paracmes mdse bharal ramcat monopteros irrepressibilities lunarnauts geniculate hopbinds rutabaga potlache broghs bergamas crossbirth purblind xebecs nonhardy classism fleurets moneybag scarce corf Mg Sr Zr CD HG CF FM Lr SG TM Gd Bk Fr Rh Fe Sn lv cndbmnnbkrmtpdnp"

যেখানে চূড়ান্ত এন্ট্রি ব্যতীত (স্পেস দ্বারা বিভক্ত) জেলি এর অভিধানে প্রবেশ রয়েছে ries স্পেসগুলি দিয়ে ফিল্টার করা হয় ḟ⁶এবং তারপরে ফলাফলটি দুটি বিভক্ত হয়:

["bi","zn","ag","as","se","pm","ag","ra","tb","ag","ca","tc","hf","li","es","pa","ra","cm","es","md","se","bh","ar","al","ra","mc","at","mo","no","pt","er","os","ir","re","pr","es","si","bi","li","ti","es","lu","na","rn","au","ts","ge","ni","cu","la","te","ho","pb","in","ds","ru","ta","ba","ga","po","tl","ac","he","br","og","hs","be","rg","am","as","cr","os","sb","ir","th","pu","rb","li","nd","xe","be","cs","no","nh","ar","dy","cl","as","si","sm","fl","eu","re","ts","mo","ne","yb","ag","sc","ar","ce","co","rf","Mg","Sr","Zr","CD","HG","CF","FM","Lr","SG","TM","Gd","Bk","Fr","Rh","Fe","Sn","lv","cn","db","mn","nb","kr","mt","pd","np"]

দ্বিতীয়,

“¤²R.ȯ7ŒL£ɦ»

"ফিঞ্চ", "পাব", "আকাশ" এবং "ব্রত" (শূন্যস্থান ব্যতীত) শব্দের সংমিশ্রণ থেকে গঠিত এবং এরূপ অক্ষরের একটি তালিকা:

['f','i','n','c','h','p','u','b','s','k','y','v','o','w']

দুটি তালিকা একত্রিত হয় ;এবং প্রতিটি এন্ট্রি শিরোনাম-কেসযুক্ত ব্যবহার করে Œt, ফলন করে:

["Bi","Zn","Ag","As","Se","Pm","Ag","Ra","Tb","Ag","Ca","Tc","Hf","Li","Es","Pa","Ra","Cm","Es","Md","Se","Bh","Ar","Al","Ra","Mc","At","Mo","No","Pt","Er","Os","Ir","Re","Pr","Es","Si","Bi","Li","Ti","Es","Lu","Na","Rn","Au","Ts","Ge","Ni","Cu","La","Te","Ho","Pb","In","Ds","Ru","Ta","Ba","Ga","Po","Tl","Ac","He","Br","Og","Hs","Be","Rg","Am","As","Cr","Os","Sb","Ir","Th","Pu","Rb","Li","Nd","Xe","Be","Cs","No","Nh","Ar","Dy","Cl","As","Si","Sm","Fl","Eu","Re","Ts","Mo","Ne","Yb","Ag","Sc","Ar","Ce","Co","Rf","Mg","Sr","Zr","Cd","Hg","Cf","Fm","Lr","Sg","Tm","Gd","Bk","Fr","Rh","Fe","Sn","Lv","Cn","Db","Mn","Nb","Kr","Mt","Pd","Np","F","I","N","C","H","P","U","B","S","K","Y","V","O","W"]

প্রয়োজন অনুসারে সমস্ত 118 উপাদান প্রতীকযুক্ত একটি তালিকা (সেখানে সদৃশ রয়েছে, তবে এটি দুর্দান্ত)।

কোডের দ্বিতীয় লাইনটি হ'ল মোনাডিক লিঙ্ক (একটি ইনপুট নেওয়ার জন্য ডিজাইন করা সাহায্যকারী ফাংশন) যা উপরের তৈরি তালিকায় ইনপুট, শিরোনামযুক্ত কেসড উপস্থিত থাকলে এবং অন্যথায় 0 হয় তবে 1 প্রদান করে।

কোডের তৃতীয় লাইনটি মূল লিঙ্কটি, একটি মোনাডিক ফাংশন যা একটি স্ট্রিং নেয় এবং অক্ষরের তালিকার একটি তালিকা (যেমন স্ট্রিংগুলি) প্রয়োজনীয় হিসাবে ফেরত দেয়:

ŒṖµL€=1oÇ€ṂµÐfµṡ2;€ÇÐfÇ€€S€¬SµÐḟ⁾[]jŒtƊ¹Ç?€€ - Main link: s
ŒṖ                                           - all partitions of s
  µ        µÐf                               - filter keep:
   L€=1                                      -     length €ach equals (vectorises) 1
       o                                     -     or
        ǀ                                   -     last link as a monad (is an element when title-cased)
          Ṃ                                  -     minimum 
                                             - (i.e. all partitions that are all single characters OR are strings that when title-cased are elements)
              µ              µÐḟ             - filter discard:
               ṡ2                            -     slices of length 2
                 ;€                          -     concatenate €ach
                    Ðf                       -     filter keep:
                   Ç                         -         last link as a monad (is an element when title-cased)
                      Ç€€                    -     last link as a monad for €ach for €ach
                         S€                  -     sum €ach
                           ¬                 -     logical not
                            S                -     sum
                                             - (i.e. discard any partitions that contain a run of two that joined together and title-cased ARE an element but separately NEITHER are)
                                         ?€€ - if then else for €ach (partition) for €ach (part):
                                        Ç    -     IF: last link as a monad (is an element when title-cased)
                                             -   THEN:
                                      Ɗ      -         last three links as a monad:
                                ⁾[]                      "[]"
                                   j         -           joined by:
                                    Œt       -           title case the part
                                             -   ELSE:
                                       ¹     -         the part itsef (¹ is the identity atom)

1

সি ++ 11, 944 928 বাইট

এখানে সত্যই ভয়ঙ্কর কোডের একটি অংশ রয়েছে, তবে এটি কার্যকর হওয়া উচিত। এখনও সম্ভবত আরও খাটো করা যেতে পারে।

#import<iostream>
#import<set>
using namespace std;int r,i;set<string>O;S(string&s){s[0]-=s[0]>90?32:0;if(s[1])s[1]+=s[1]<91?32:0;char*l="HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLaCePrNdPmSmEuGdTbDyHoErTmYbLuHfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAcThPaUNpPuAmCmBkCfEsFmMdNoLrRfDbSgBhHsMtDsRgCnNhFlMcLvTsOg";for(r=0;*l++;)if(*l>90){if(*(l++-1)==s[0]&&*(l-1)==s[1])r=1;}else if(*(l-1)==s[0]&&!s[1])r=1;}P(set<string>*V,string s,string o,int b,int l=0,int m=0){if(!s[b])O.insert(o);else if(l)P(V,s,o,b+1);else if(V[b].size()==0)P(V,s,o+s[b],b+1);else for(auto t:V[b]){P(V,s,o+"["+t+"]",b+1,t.length()-1);if(t.length()>1&&V[b].size()==1&&V[b+1].size()>0&&!m)P(V,s,o+s[b],b+1,0,1);}}F(string s){set<string>V[s.length()];for(i=0;s[i++];){string t="";t+=s[i-1];S(t);if(r)V[i-1].insert(t);t+=s[i];S(t);if(r&&s[i])V[i-1].insert(t);}P(V,s,"",0);for(auto o:O)cout<<o<<"\n";O.clear();}

সাথে কল করুন:

int main()
{
    F("Tin Snips");cout << "\n";
    F("Quack");cout << "\n";
    F("hehe");cout << "\n";
    F("Stack Exchange");
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.