বৈদ্যুতিন কনফিগারেশন ডায়াগ্রাম


13

চ্যালেঞ্জ

একটি উপাদান নাম দেওয়া হয়েছে, এর বৈদ্যুতিন কনফিগারেশন আউটপুট।

ইনপুট

আপনার ইনপুটটি কিছু ব্যতিক্রম সহ প্রতিটি উপাদানটির পুরো নাম (হাইড্রোজেন, 1, থেকে ক্যালসিয়াম, 20) এর পুরো নাম হবে - আপনার নিম্নলিখিত ইনপুটগুলির জন্য অ্যাকাউন্ট করতে সক্ষম হতে হবে:

Natrium - This is sodium
Kalium - This is potassium

নোট করুন যে "সোডিয়াম" এবং "পটাসিয়াম" ইনপুটগুলি অবশ্যই বৈধ হওয়া উচিত।

প্রথম চিঠিটি সর্বদা মূলধন হবে।

আউটপুট

ইলেক্ট্রন কনফিগারেশন ডায়াগ্রাম কীভাবে তৈরি করা যায় সে সম্পর্কে গাইডেন্সের জন্য আপনি এই ওয়েবপৃষ্ঠায় উল্লেখ করতে পারেন ।

নিম্নলিখিত তালিকায় প্রতিটি শেলের সর্বাধিক সংখ্যক ইলেকট্রন প্রদর্শিত হয়:

  • 1 ম শেল - 2 ইলেক্ট্রন
  • দ্বিতীয় শেল - 8 ইলেক্ট্রন
  • 3 য় শেল - 8 ইলেক্ট্রন
  • চতুর্থ শেল - ১৪ টি ইলেক্ট্রন (যদিও এই শেলের সর্বাধিক সংখ্যক ইলেকট্রনের প্রয়োজন 2)

বৈদ্যুতিন কনফিগারেশনের একটি উদাহরণ আউটপুট নিম্নলিখিত:

চিত্রের কেন্দ্রে অবশ্যই উপাদানটির এক থেকে দুটি বর্ণের চিহ্ন থাকতে হবে symbol

হয় বিন্দু বা ক্রস ব্যবহার করা যেতে পারে এবং যেখানে তারা স্থাপন করা হয়েছে তাতে কিছু আসে যায় না।

আউটপুটটি ঠিক এর মতো হবে না তবে এটি একটি ASCII গ্রাফিক হতে হবে। যে জিনিসটি এটি হতে পারে না তা ফর্ম 2.8.8.1বা অন্য কোনও রূপে।

চেনাশোনাগুলি প্রয়োজনীয় নয়

ফাংশনগুলিতে অন্তর্নির্মিত যা উপাদানগুলির পর্যায় সারণিতে অ্যাক্সেস করে বা ডায়াগ্রাম বা ইলেক্ট্রন কনফিগারেশনের উত্পাদন করে এখানে এড়ানো যায় না।

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতেছে।


1
আমাদের কি জোড়ায় ইলেকট্রন দেখাতে হবে?
lirtosiast

5
আমি ASCII আর্ট বা গ্রাফিকাল আউটপুটগুলির একটির প্রয়োজনের প্রস্তাব দিই, নইলে সাবমিশনগুলি আসলে তুলনীয় নয়।
অ্যালেক্স এ।

প্রথম চিঠিটি কি সর্বদা মূলধন করা হয় (আমি আশা করি ...)
টম কার্পেন্টার

এছাড়াও লিঙ্কটিতে তারা এগুলি আলাদাভাবে আঁকেন - আপনার প্রথম শেলের উপরে দুটি ইলেক্ট্রন রয়েছে, তাদের শীর্ষে একটি রয়েছে, নীচে একটি রয়েছে।
টম কার্পেন্টার

1
২০ এর পরে কী ঘটে যায় সে সম্পর্কে আরও সঠিক তথ্যের জন্য, এখানে দেখুন: en.wikedia.org/wiki/Electron_shell
স্তর নদী সেন্ট

উত্তর:


3

ম্যাটল্যাব, 360 363 290 304 295 বাইট

অষ্টাভের সাথে কীভাবে পুরাতন কোডটি পরীক্ষা করতে হয় তার জন্য পোস্টের নীচে দেখুন।

এই কোডটি উপাদানটির নাম নেয় (ক্যালিয়াম ইত্যাদি সহ) এবং নিয়মগুলি পরিবর্তিত হয়ে এখন আউটপুটটিকে এ্যাস্কি ফর্ম্যাটে চালিত করে।

f=input('');e=1;a=['CPACxxSAMSNxxxxxBLHxCKACSPSAMNNFONCBBLHH';'aorhxxilaoexxxxxeiexa rl  ilgae     eie '];for s=a;n=s(s~=32);if strncmpi(n,f,nnz(n));break;end;e=mod(e,20)+1;end;s=spiral(10);p=[8,18,33,28,23,39,60,53,46,95];p=[p;p+1];o=s*0;o(ismember(s,p(1:21-e)))='x';o(45:46)=a(:,e+20);char(o')

আমি ASCII আউটপুটের জন্য কোডটি লিখেছি বিধায় নিয়মগুলি পরিবর্তন হয়েছে। 14 বাইট ব্যয়ে এটি করার জন্য আমি আমার কোড আপডেট করেছি। পুনরায় আকার () থেকে মুক্তি পেয়ে aম্যাট্রিক্সকে সঠিক আকার দিয়ে শুরু করে আমি 9 বাইট সংরক্ষণ করেছি ।

এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা এখানে দেওয়া হল:

%Get the name - actually we only need at most the first two characters, but the whole thing will do
f=input('');
e=1;
%This bit makes a map which allows us to find the element (including with
%the names like Kalium. All of the elements appear twice, with the actual
%symbols being the second set. The first set gets all those whose names are
%either more than one character, or don't begin with the first two
%characters of the short for (e.g. Sodium). The string is reshaped into a
%2x40 array. 'Natrium' is a pain in the neck as it as it would get caught
%by 'N' for 'Nitrogen'. I have reversed the element order - so that all the
%ones beginning with N come before N. Some maths is done later on to
%correct for the number of electrons - basically 21-e so 1 becomes 20.
a=['CPACxxSAMSNxxxxxBLHxCKACSPSAMNNFONCBBLHH';'aorhxxilaoexxxxxeiexa rl  ilgae     eie '];

%For each group of 2 in the array of elements
for s=a

    %Remove any spaces from the name
    n=s(s~=32);

    %Do a comparison of the first one or two characters of the requested string
    if (strncmpi(n,f,nnz(n))) 

        %break once the element is found
        break; 
    end

    %If not this element add another electron. We wrap around after 20 as there are two copies of each
    e=mod(e,20)+1; 
end
%e is now number of electrons

%Generate an array of points for each electron
s=spiral(10);
p=[8,18,33,28,23,39,60,53,46,95];p=[p;p+1];

%make an output array
o=s*0;

%Plot all the points in is up to and including the number of electrons (see the notes above for why 21-e)
o(ismember(s,p(1:21-e)))='x';

%And add the text in the centre - we extract the element name from the second group appearance in the 'a' array, hence adding 20.
o(45:46)=a(:,e+20);

%Display the result
char(o')

এটি হাইড্রোজেনের আউটপুট (বিন্দুগুলি উপেক্ষা করুন, তারা এখানে দেখানোর সময় লাইনগুলি সরানো এড়াতে হবে):

          .
          .
          .
          .
   xH     .
          .
          .
          .
          .
          .

এবং এখানে ক্যালসিয়ামের আউটপুট is

          .
    xx    .
    xx    .
          .
 xxxCa xxx.
 xxx   xxx.
          .
    xx    .
    xx    .
          .

এবং ন্যাট্রিয়ামের আউটপুট, যা এখন সঠিকভাবে কাজ করে (নেত্রিয়ামের আগে এটি নাইট্রোজেনের ফলস্বরূপ!)।

          .
     x    .
    xx    .
          .
  xxNa x  .
  xx   x  .
          .
    xx    .
          .
          .

কোডটির নতুন সংস্করণটি অ্যাকটাভের সাথে কাজ করে না কারণ এটি ব্যবহার করে spiral()যা কেবলমাত্র ম্যাটল্যাবে উপস্থিত রয়েছে।

তবে আপনি অক্টাভে অনলাইন দোভাষী ব্যবহার করে পুরানো কোডটি পরীক্ষা করতে পারেন :

f=input('');e=1;a=['CPACxxSAMSNxxxxxBLHxCKACSPSAMNNFONCBBLHH';'aorhxxilaoexxxxxeiexa rl  ilgae     eie '];for s=a;n=s(s~=32);if strncmpi(n,f,nnz(n));break;end;e=mod(e,20)+1;end;u=14:(34-e);r=floor(u/8);t=u*pi/4;polar(t,r,'o');text(0,0,a(:,e+20)','horizontalalignment','c') 

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


এখন ASCII তে প্রিন্ট করুন
টম কার্পেন্টার

2

পাইথন 3, 529 বাইট

থমাস এবং বিটা আমাকে এমন কিছু জিনিস নির্দেশ করার জন্য ধন্যবাদ যা আমার কাছে স্পষ্ট হওয়া উচিত ছিল, আমাকে কিছু বাইট সংরক্ষণ করে

ব্যাপক উন্নতি: ডিকার দেখার পরিবর্তে স্ট্রিং স্লাইসিং ব্যবহার করা

s="""    {18}
    {10}{14}
    {2}{6}
    {0}{1}
 {17}{9} %s {3}{11}
 {13}{5}    {7}{15}

    {8}{4}
    {16}{12}
    {19}"""
e="H HeLiBe B C N O F NeNaMgAlSiP S ClArK Ca"
r="hydrogen   helium     lithium    beryllium  boron      carbon     nitrogen   oxygen     fluorine   neon       natrium    sodium     magnesium  aluminium  silicon    phosphoroussulfur     chlorine   argon      kalium     potassium  calcium    "
n=r.find(input().lower())//11
n-=(n>10)+(n>18)
print(s.format(*[' *'[i<=n]for i in range(20)])%e[n*2+1:n*2+3])

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


অভিধানে, আপনি কি মানগুলিকে একক স্ট্রিংয়ের মতো রাখতে "H 1"এবং পরে স্পেসে বিভক্ত করতে পারবেন না?
বিটা ক্ষয়

1
এটি একটি দীর্ঘ কাপ কফি;)
বিটা ডিকায়

0
j=0
do
{
if(elnum=1)
{
draw_circle(100,100,50)
draw_sprite_ext(spr_electron,sprite num,100,100+50,direction,c_white,c_alpha)

}
else
{
if(elnum=2)
{
draw_circle(100,100,50)
draw_sprite_ext(spr_electron,sprite num,100,100+50,direction,c_white,c_alpha)
draw_sprite_ext(spr_electron,sprite num,100,100+50,direction,c_white,c_alpha)
}
if(j>1&&j<=8)
{
if(j>5)
angdeviation=5
else
angdeviation=-5
draw_circle(100,100,100)
draw_sprite_ext(spr_electron,sprite num,100+length_dirx(j*100+angdeviation),100+length_diry(j*100+angdeviation),direction,c_white,c_alpha)
}
}

}until(j<=enum)

3
সাইটে স্বাগতম। এটি কোন ভাষায়? আমি সমস্ত প্রাসঙ্গিক তথ্য সহ অন্যান্য জমা দেওয়ার মতো একটি হৃদয় যুক্ত করার পরামর্শ দেব। এছাড়াও এটি কোড-গল্ফ হওয়ায় আপনার প্রোগ্রামটির দৈর্ঘ্য হ্রাস করা উচিত। আমি নিশ্চিত হতে পারি না কারণ আপনি এখানে কোন ভাষাটি ব্যবহার করছেন তা আমি জানি না তবে মনে হয় আপনার অতিরিক্ত ধবধবে স্পেস রয়েছে। বেশিরভাগ ভাষাগুলিতে একটি টিপস পৃষ্ঠা রয়েছে যা আপনি ব্যবহার করতে পারেন সহায়ক গল্ফিং টিপগুলির একটি তালিকা। আপনি এখানে যে ভাষাটি ব্যবহার করেন সেটির জন্য পৃষ্ঠাটি পরীক্ষা করে দেখার পরামর্শ দেব।
অ্যাডহক গার্ফ হান্টার

আমি পুরোপুরি নিশ্চিত এই হল am GML (propietary খেলা মেকার ভাষা): en.wikipedia.org/wiki/GameMaker_Studio#GameMaker_Language এবং docs.yoyogames.com/source/dadiospice/002_reference/...
জেরি যিরমিয়

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

"স্প্রিট নাম্বার" অংশটি কীভাবে কাজ করে তা আমি নিশ্চিত নই - ডকুমেন্টেশন থেকে দেখে মনে হচ্ছে এটি একটি পূর্ণসংখ্যার হওয়া উচিত এবং ভেরিয়েবল নামের ফাঁকা স্থানগুলিকে অনুমতি দেওয়া হবে না: ডকস.ইয়োগামেমেস
জেরি যিরমিয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.