ऋणावेशित सूक्ष्म अणु का विन्यास


17

में परमाणु भौतिकी और क्वांटम रसायन शास्त्र , इलेक्ट्रॉन विन्यास का वितरण है इलेक्ट्रॉनों एक के परमाणु में परमाणु कक्षाओं । उदाहरण के लिए, नियॉन परमाणु का इलेक्ट्रॉन विन्यास 1s 2 2s 2 2p 6 है( डॉ। से )

चुनौती

आपकी चुनौती एक तत्व की परमाणु संख्या का प्रतिनिधित्व करने वाली संख्या को लेना है और उस तत्व के इलेक्ट्रॉन विन्यास को आउटपुट करना है जैसा कि औफबौ सिद्धांत द्वारा परिभाषित किया गया है

आयरन (26) में इलेक्ट्रॉन विन्यास है 1s2 2s2 2p6 3s2 3p6 3d6 4s2 । हालाँकि, सुपरस्पेशल अनावश्यक हैं; 26 के लिए आउटपुट की तर्ज पर होना चाहिए 1s2 2s2 2p6 3s2 3p6 3d6 4s2

विशिष्टता

  • आपको सीमा के बाहर किसी भी इनपुट को संभालने की आवश्यकता नहीं है 1 <= n <= 118
  • आपका आउटपुट परीक्षण मामलों कुछ ऐसा दिखाई देगा, लेकिन आप किसी भी गैर अंकों चरित्र / अक्षर (एक तरफ से उपयोग कर सकते हैं s, p, d, और f) विभिन्न कक्षाओं परिसीमित करने के लिए।
  • आपको कक्षीय नामों / मानों / डीलिटर्स युक्त स्ट्रिंग को वापस / प्रिंट करना होगा; आप किसी सरणी को केवल वापस नहीं कर सकते / प्रिंट नहीं कर सकते।
  • आपको औबाउ सिद्धांत के लिए किसी भी अपवाद को संभालने की आवश्यकता नहीं है; जहां अपवाद हैं, "गलत" कॉन्फ़िगरेशन को प्रिंट करना ठीक है।

उदाहरण:

Input -> Valid output            -> Invalid output
16    -> 1s2 2s2 2p6 3s2 3p4     -> 1s22s22p63s23p4
16    -> 1s2, 2s2, 2p6, 3s2, 3p4 -> [[1, 2], [2, 2], [2, 6], [3, 2], [3, 4]]
17    -> 1s2+2s2+2p6+3s2+3p5     -> 1s2s2s2s2p6p3s2s3p5

यहाँ सभी इलेक्ट्रॉनिक ऑर्बिटल्स की सूची दी गई है। वे अधिकतम मूल्य हो सकते हैं जो नाम से नीचे हैं:

name: 1s 2s 2p 3s 3p 3d 4s 4p 4d 5s 5p 4f 5d 6s 6p 5f 6d 7s 7p
max:  2  2  6  2  6  10 2  6  10 2  6  14 10 2  6  14 10 2  6

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

Input -> Output
1     -> 1s1
2     -> 1s2
16    -> 1s2 2s2 2p6 3s2 3p4
50    -> 1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 5s2 5p2
115   -> 1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 5s2 5p6 4f14 5d10 6s2 6p6 5f14 6d10 7s2 7p3

यहाँ एक पूरी सूची और प्रकारों का एक संदर्भ कार्यान्वयन है ( इसे ऑनलाइन आज़माएं! )

जीतने की स्थिति

जैसा कि यह , सबसे छोटा कोड जीतता है!


2
IIRC हर चुनौती जो निरंतर आउटपुट के साथ इनपुट के एक सीमित सेट पर चलती है, वह कोलमोगोरोव टैग के लिए एक उम्मीदवार है। अच्छी चुनौती है।
यूरिल

6
परीक्षण मामलों में, 3dपहले भरा जा रहा है 4s, 4dइससे पहले कि 5s, 6sके बाद 4fऔर 5dजो का उल्लंघन, Madelung नियम । क्या हमें गोल्फ प्रोग्राम करना चाहिए जो पास्टबिन पर गलत इलेक्ट्रॉन विन्यास को प्रिंट करते हैं?
जुंगह्वान मिन

5
इसके अलावा, Aufbau सिद्धांत (जैसे क्रोमियम (परमाणु संख्या 24) के 4s1 3d5बजाय होने) के अपवाद हैं 4s2 3d4। मैं देखता हूं कि यह सैंडबॉक्स पोस्ट में पूछा गया था लेकिन कभी जवाब नहीं दिया गया। क्या हम उस मुद्दे की अनदेखी करते हैं?
जुंगह्वान मिन

1
OMG मैं कसम खाता हूं कि मैं इसी सटीक सवाल को पोस्ट करने जा रहा था ... आज
FantaC

जवाबों:


2

जेली , 63 62 56 55 बाइट्स

ḊFµi@€QḤ’Ḥ
“ŒµḊuÆẓƙỊ’D,“çƥ÷£ḟ’ṃ“spdf”¤µxÇZ
¢ḣŒg'µQ€żL€K

इसे ऑनलाइन आज़माएं!

बेस डीकंप्रेसन के साथ 6 बाइट बचाने के लिए user202729 का धन्यवाद!

व्याख्या

पहले मैं दूसरे लिंक में [[1,2,2,3,3,3,4,4,4,5,5,4,5,6,6,5,6,7,7],'sspspdspdspfdspfdsp']कोड के साथ सूची का निर्माण करता हूं “ŒµḊuÆẓƙỊ’D,“çƥ÷£ḟ’ṃ“spdf”¤

  • “ŒµḊuÆẓƙỊ’1223334445545665677आधार संख्या में संकुचित संख्या 250 है।D यह अंकों की सूची में बदल जाता है।
  • “çƥ÷£ḟ’ṃ“spdf”बेस 250 नंबर “çƥ÷£ḟ’को बेस 4 में बदलता है और इसे स्ट्रिंग “spdf”उपज में इंडेक्स करता है 'sspspdspdspfdspfdsp'। यह user202729 द्वारा योगदान दिया गया था।

फिर सूची को मुट्ठी से लिंक करके ले जाएं Ç। पहला लिंक निम्न कार्य करता है:

ḊFµQiЀµḤ’Ḥ
ḊF           Dequeue then flatten yields 'sspspd...'. Ṫ doesn't work because it modifies the input.
  µ          New monadic link
   Q         Unique elements → 'spdf'
    iЀ      The index of each of 'sspspd...' into the string 'spdf' → [1,1,2,1,2,3...]
       µ     New monadic link. This prevents Ḥ from acting on the right argument of iЀ.
        Ḥ’Ḥ  Takes [1,1,2,1...] and computes 2(2l+1) → [2,2,6,2,6,10...]

अब दूसरे लिंक पर वापस जाएं। साथ हम में से प्रत्येक के sublist में तत्वों में से प्रत्येक को दोहराने के [[1,2,2,3...7],['sspspd...p']]लिए हमारी नई सूची में संख्याओं से [2,2,6...]। इससे पैदावार होती है [[1,1,2,2,2,2...],['sssspp...']]Zदो सबलिस्ट जो उपज देता है [[1,'s'],[1,'s'],[2,'s']...]

अब मुख्य लिंक पर। ¢दूसरे लिंक को कॉल करता है जो ऊपर वर्णित ट्यूपल्स की अंतिम सूची प्राप्त करता है। मान लें कि प्रोग्राम में इनपुट एक उदाहरण के रूप में 5 है।

¢ḣŒg'µQ€żL€K
¢             Calls the second link as a nilad which yields the final list of tuples described above
 ḣ            Takes the first 5 tuples → [[1,'s'],[1,'s'],[2,'s'],[2,'s'],[2,'p']]
  Œg'         Group together runs of equal elements → [[[1,'s'],[1,'s']],[[2,'s'],[2,'s']],[[2,'p']]]
     µ        New monadic link
      Q€      Unique elements of each of these runs
         L€   Length of each of these runs
        ż     Zip these together → [[[1,'s'],2],[[2,'s'],2],[[2,'p'],1]]
           K  Join this list with spaces → 1s2 2s2 2p1

sspspdspd...स्ट्रिंग को संपीड़ित करने का कोई तरीका ?
एमडी एक्सएफ

@MDXF मैंने कोशिश की लेकिन यह लंबे समय तक समाप्त हो गया। मैंने इसे विभिन्न तरीकों से बनाने की कोशिश की और अलग-अलग हिस्से छोटे थे लेकिन एक पूरे के रूप में यह लंबा था
dylnan

@dylnan के “çƥ÷£ḟ’ṃ“spdf”¤लिए -6 बाइट। प्रयुक्त इस आधार 250 पूर्णांक के लिए और आधार विसंपीड़न के लिए।
user202729

@ user202729 अच्छा, धन्यवाद!
डायलन

7

इंपीरियल टैम्पियो , 930 बाइट्स

Yöllä on ilot.Olkoon oma ilo uusi yö, jonka iloja ovat ilo"1s",ilo"2s",ilo"2p",ilo"3s",ilo"3p",ilo"3d",ilo"4s",ilo"4p",ilo"4d",ilo"5s",ilo"5p",ilo"4f",ilo"5d",ilo"6s",ilo"6p",ilo"5f",ilo"6d",ilo"7s"ja ilo"7p".Olkoon iso yö uusi yö, jonka iloja ovat 2,2,6,2,6,10,2,6,10,2,6,14,10,2,6,14,10,2 ja 6.Kun iso luku juo ison ilon,iso ilo näyttää oman yön,missä oma yö on oman ilon ensimmäinen ilo ja ujo ilo on ison yön ensimmäinen ilo,jos iso luku on suurempi kuin ujo ilo,niin iso ilo näyttää ujon ilon,iso ilo näyttää ilon" ",oman ilon iloiksi asetetaan oman ilon ilot toisesta alkaen,ison yön iloiksi asetetaan ison yön ilot toisesta alkaen ja iso luku vähennettynä ujolla ilolla juo ison ilon ja,jos iso luku on pienempi tai yhtä suuri kuin ujo ilo,niin iso ilo näyttää ison luvun.Olkoon oma muuttuja uusi muuttuja.Kun iso sivu avautuu,omaan muuttujaan luetaan luku ja oman muuttujan arvo juo ison sivun.

Ilot पर Yöllä । Olkoon ओमा आईएलओ Uusi यो, jonka iloja ovat आईएलओ"1s" , आईएलओ"2s" , आईएलओ"2p" , आईएलओ"3s" , आईएलओ"3p" , आईएलओ"3d" , आईएलओ"4s" , आईएलओ"4p" , आईएलओ"4d" , आईएलओ"5s" , आईएलओ"5p" , आईएलओ"4f" , आईएलओ"5d" , आईएलओ"6s" , आईएलओ"6p" , आईएलओ"5f" , आईएलओ"6d" , आईएलओ "7s"ja आईएलओ"7p"Olkoon iso यो iloja ovat , , यूसी यो, जोन्का 226 , 2, 6,10 , 2, 6, 10, 2, 6, 14, 10, 2, 6, 14, 10, 2 Ja 6कुन iso Luku Juo ison ilon, आईएसओ आईएलओ näyttää ओमान योन, missa ओमा यो पर ओमान ilon ensimmäinenआईएलओ ja ujo आईएलओ पर ison योन ensimmäinenआईएलओ, जोस iso Luku पर suurempi kuin ujo आईएलओ, niin iso आईएलओ näyttää ujon ilon, आईएलओ iso näyttää ilon" " , ओमान ilon iloiksi asetetaan ओमान ilon ilot toisesta alkaen , ison योन iloiksi asetetaan ison योन ilot toisesta alkaen ja iso Luku vähennettynä ujolla ilolla Juo ison ilon ja , जोस iso Luku पर pienempi ताई yhtä suuri kuin ujo आईएलओ, niin iso आईएलओ näyttää ison luvun। ओलकुन ओमा मुट्टुजा उस्सी मुटुजा। कुन iso sivu avautuu , omaan muuttujaan luetaan Luku jaओमन मुटुटुजन अरवो जू आयोन सिवुन।

ऑनलाइन संस्करण

यह बहुत सीधा-सादा कार्यान्वयन है। Golfed संस्करण में मैं बस कम शब्दों की तरह साथ शब्दों की जगह ilo, , iso, oma, आदि

Ungolfed:

आलियाकोट पर सूची।

Olkoon lyhyt orbitaalilista Uusi लिस्टा, jonka alkioita ovat orbitaali "1s" , orbitaali "2s" , orbitaali "2p" , orbitaali "3s" , orbitaali "3p" , orbitaali "3d" , orbitaali "4s" , orbitaali "4p" , orbitaali "4d" , orbitaali "5s" , orbitaali "5p" , orbitaali "4f" , orbitaali "5d" , orbitaali "6s" , orbitaali "6p" , orbitaali "5f" , orbitaali "6d", orbitaali "7s" जा orbitaali "7p"

Olkoon lyhyt maksimilista Uusi लिस्टा, jonka alkioita ovat 2 , 2, 6, 2, 6, 10, 2, 6, 10, 2, 6, 14, 10, 2, 6, 14, 10, 2 ja 6

कुन jaetaan orbitaaleille pienehkö elektronimäärä nykyisellä sivulla,

  • nykyinen sivu näyttää nykyisen orbitaalin, missä nykyinen orbitaali on lyhyen orbitaalilistan ensimmäinenalkio ja nykyinen makkimi on lyhyen maksimilistan ensimmäinenalkio, Missy
  • jos pienehkö elektronimäärä पर suurempi kuin nykyinen maksimi, niin

    • नाइकिनेन सिव näyttää nykyisen maksimin,
    • nykyinen sivu näyttää välin " " ,
    • लिहेन ऑर्बिलालिस्तान अलकियोइसी असिटान लिहेन ऑर्बिलालिस्तान अलकोटtoisesta अलकैन ,
    • लिशेन मेकिस्मिलिस्तान अलकियोइसी असिटेटन लिहिन मैकसिमिलिस्तान अलकिओटtoisesta अलकेन
    • जा जेताँ ओर्बेटाइल्ले पाइनेखो इल्कट्रोनिमेरा वा वेनेनेट्टीना न्यकीसैलै मेस्किमिला निस्कीसैल सिवुल्ला
  • ja , jos pienehkö elektronimäärä on pienempi tai yhtä suuri kuin nykyinen maksimi,
    • निएन न्यकीनेन सिवु नित्ते पाइनेख्न इल्केट्रोनिमिरानो।

ओल्कून मुकावा मुट्टुजा उस्सी मुटुजा।

कुन nykyinen sivu avautuu ,

  • मुकावण मुयुत्पूजं लुतेन लुकु
  • जा जाटान ऑर्बेटालेइल मुकावन मुट्टुजन अरवो न्यकीसेलेल सिवुल्ला।

ऑनलाइन संस्करण

अनुवाद:

एक सूची है आइटम हैं।

चलो कम कक्षीय सूची होना कोई नई सूची, अपने आइटम हैं कक्षीय "1s", कक्षीय "2s", कक्षीय "2p", कक्षीय "3s", कक्षीय "3p", कक्षीय "3d", कक्षीय "4s", कक्षीय "4p", कक्षीय "4d", कक्षीय "5s", कक्षीय "5p", कक्षीय "4f", कक्षीय "5d", कक्षीय "6s", कक्षीय "6p", कक्षीय "5f", कक्षीय "6d", कक्षीय "7s" और कक्षीय "7p"

चलो कम अधिकतम सूची होना कोई नई सूची, अपने आइटम हैं 2, 2, 6, 2, 6, 10, 2, 6, 10, 2, 6, 14, 10, 2, 6, 14, 10, 2 और 6 ।

जब वर्तमान पृष्ठ पर इलेक्ट्रॉनों की एक छोटी संख्या को कक्षा में विभाजित किया जाता है ,

  • वर्तमान पृष्ठ से पता चलता वर्तमान कक्षीय, जहां वर्तमान कक्षीय है कम कक्षीय सूची में पहला आइटम और वर्तमान अधिकतम है कम अधिकतम सूची में पहले तत्व,
  • यदि इलेक्ट्रॉनों की छोटी संख्या से अधिक है वर्तमान अधिकतम ,
    • वर्तमान पृष्ठ दिखाता है वर्तमान अधिकतम है,
    • वर्तमान पृष्ठ स्थान दिखाता है " ",
    • लघु कक्षीय सूची के तत्वों को दूसरे से शुरू होने वाली लघु कक्षीय सूची के तत्वों के रूप में सेट किया जाता है ,
    • छोटी अधिकतम सूची के तत्वों को दूसरी से शुरू होने वाली छोटी अधिकतम सूची के तत्वों के रूप में निर्धारित किया जाता है
    • और एक से घटाए गए इलेक्ट्रॉनों की छोटी संख्या को वर्तमान पृष्ठ पर कक्षा में विभाजित किया गया है ,
  • और , यदि इलेक्ट्रॉनों की छोटी संख्या कम या इसके बराबर है वर्तमान अधिकतम ,
    • वर्तमान पृष्ठ छोटी संख्या या इलेक्ट्रॉनों को दर्शाता है।

चलो अच्छा चर हो एक नया वेरिएबल।

जब वर्तमान पृष्ठ खुलता है ,

  • एक नंबर अच्छे चर में पढ़ा जाता है
  • और अच्छे चर का मान वर्तमान पृष्ठ पर कक्षा में विभाजित किया गया है

अनुवाद अनुमानित है, मुझे अंग्रेजी को और अधिक प्राकृतिक बनाने के लिए शब्द क्रम बदलना पड़ा।


1
wtf यह अच्छा है ...
FantaC

निश्चित रूप से एक अधिक मौन भाषा है जिसमें इस एक की सभी विशेषताएं हैं।
कोई भी

क्या आप अंग्रेजी में अनुवाद जोड़ने के लिए इतने दयालु हो सकते हैं कि हम इस भाषा को समझ सकें?
जकार्इ

@ Zacharý मैंने इसे जोड़ा।
फर्ग्यूसक



4

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

n=>'0010120120132013201'.replace(/./g,k=>n?++p[m=k*4+2,n-=e=m>n?n:m,k]+'spdf'[k]+e+' ':'',p=[0,1,2,3])

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

प्रारूपित और टिप्पणी की गई

n =>                          // given the atomic number n
  '0010120120132013201'       // list of azimuthal quantum numbers
  .replace(/./g, k =>         // replace each character k in the above string with:
    n ?                       //   if n does not equal 0:
      ++p[                    //     ++p[k] = updated principal quantum number
        m = k * 4 + 2,        //       m = maximum number of electrons
        n -=                  //       subtract from n:
          e = m > n ? n : m,  //         e = min(m, n) = number of electrons
        k                     //       index actually used to access the p[] array
      ] +                     //     followed by:
      'spdf'[k] +             //     the label
      e + ' '                 //     and the number of electrons
    :                         //   else:
      '',                     //     an empty string
    p = [0, 1, 2, 3]          //   initial list of principal quantum numbers
  )                           // end of replace()

2

स्विफ्ट , 177 175 156 बाइट्स

@ अरनौल्ड के जावास्क्रिप्ट उत्तर पर आधारित है

func f(n:Int){var i=n,a=0,b=[0,1,2,3];[0,0,1,0,1,2,0,1,2,0,1,3,2,0,1,3,2,0,1].map{a=$0*4+2;b[$0]+=1;i>0 ?print(b[$0],"spdf".map{$0}[$0],min(a,i)):();i-=a}}

इसे ऑनलाइन आज़माएं!

इलेक्ट्रॉन समूहों में रिक्त स्थान के बिना, 190 187 169 बाइट्स:

func f(n:Int){var i=n,a=0,b=[0,1,2,3];[0,0,1,0,1,2,0,1,2,0,1,3,2,0,1,3,2,0,1].map{a=$0*4+2;b[$0]+=1;i>0 ?print(b[$0],"spdf".map{$0}[$0],min(a,i),separator:""):();i-=a}}

इसे ऑनलाइन आज़माएं!


1

C (gcc), 260 187 167 156 152 147 143 138 बाइट्स

i,*m;f(e){for(m=L"...",i=0;e>0;printf("%.2s%d ","1s2s2p3s3p3d4s4p4d5s5p4f5d6s6p5f6d7s7p"+i++*2,(e-=*m)<0?*m+e:*m++));}

इसे ऑनलाइन आज़माएं!संदर्भ कार्यान्वयन से तैयार।

StackExchange unprintables को हटाता है, इसलिए का मान m बदल दिया जाता है "..."

यहां प्रोग्राम का एक प्रतिवर्ती हेक्सडंप है, क्योंकि यह एक स्ट्रिंग में unprintables का उपयोग करता है, जो पूर्णांक सरणी को पूर्णांक {2,2,6,2,6,10,2,6,10,2,6,14,10,2,6,14,10,2,6}के शाब्दिक बाइट मानों के साथ बदलता है ।

00000000: 692c 2a6d 3b66 2865 297b 666f 7228 6d3d  i,*m;f(e){for(m=
00000010: 4c22 0202 0602 065c 6e02 065c 6e02 060e  L".....\n..\n...
00000020: 5c6e 0206 0e5c 6e02 0622 2c69 3d30 3b65  \n...\n..",i=0;e
00000030: 3e30 3b70 7269 6e74 6628 2225 2e32 7325  >0;printf("%.2s%
00000040: 6420 222c 2231 7332 7332 7033 7333 7033  d ","1s2s2p3s3p3
00000050: 6434 7334 7034 6435 7335 7034 6635 6436  d4s4p4d5s5p4f5d6
00000060: 7336 7035 6636 6437 7337 7022 2b69 2b2b  s6p5f6d7s7p"+i++
00000070: 2a32 2c28 652d 3d2a 6d29 3c30 3f2a 6d2b  *2,(e-=*m)<0?*m+
00000080: 653a 2a6d 2b2b 2929 3b7d                 e:*m++));}

वैकल्पिक रूप से, आप TIO लिंक से कोड कॉपी कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.