কোডিয়াম গল্ফাইড


28

এই চ্যালেঞ্জের মধ্যে, আপনার কাজটি একটি আনয়ন এবং একটি কেশন নেওয়া, এবং যৌগের রাসায়নিক সূত্র আউটপুট করা। ইনপুটটি এই বিধিগুলি অনুসরণ করে:

  • 2 স্ট্রিং (যে কোন অনুক্রমে) anion এবং ধনাত্মক আয়ন, যেমন প্রতিনিধিত্বমূলক নিন F, NH_4অথবা Al
  • প্রতিটি আয়নটির চার্জ নিতে, আপনি হয় এটি একটি ক্যারেট (যেমন F^-1) দ্বারা পৃথক স্ট্রিংয়ের অংশ হিসাবে রাখতে পারেন বা অতিরিক্ত সংখ্যাগত যুক্তি গ্রহণ করতে পারেন।
    • দ্রষ্টব্য: যতক্ষণ না আপনার সংখ্যার ইনপুট প্রকারটি স্বাক্ষরিত হয়, ততক্ষণ অ্যানিয়নের চার্জ নেতিবাচক সংখ্যা হিসাবে পাস হবে।
  • প্রতীকগুলি সর্বদা বাস্তব হবে এবং সঠিকভাবে চার্জ করবে।

আউটপুট এই নিয়ম অনুসরণ করা উচিত:

  • _সাবস্ক্রিপ্টগুলির জন্য ব্যবহার করুন : Fe 2 O 3 হবে Fe_2O_3
  • কেশন প্রথমে: নাসিএল, ক্লএনএ নয়।
  • নিরপেক্ষ অণু: লি 2 বা লিও বা লিও নয় -
  • নিম্নতম সম্ভাব্য সহগ: ফে 23 , ফে 46 নয়
  • কোনও সাবস্ক্রিপ্ট নেই: নাসিএল, না 1 সিএল 1 নয়
  • স্থানান্তরিত হচ্ছে না: এনএইচ 4 ওএইচ, এনএইচ 5 ও নয়
  • শর্তসাপেক্ষ প্রথম বন্ধনী:
    • একক পরমাণু আয়নটিতে প্রথম বন্ধনী ব্যবহার করবেন না: এমজিসিএল 2 , এমজি (সিএল) 2 নয়
    • অণুতে আয়নগুলির মধ্যে কেবল একটি থাকলে প্যারেনেসিসগুলি ব্যবহার করবেন না: কেসিএলও 3 , কে নয় (ক্লো 3 )।
    • পলিয়েটমিক আয়নগুলির দুটি বা ততোধিক উপস্থিতি থাকলে বন্ধনী ব্যবহার করবেন না: 3 (পিও 4 ) 2 হন , 3 পিও 4 2 হন না বা 3 পি 28 হন

এখানে কিছু অতিরিক্ত নমুনা ইনপুট এবং আউটপুট রয়েছে:

Input               Output
Fe^+3, O^-2         Fe_2O_3
Fe^+2, O^-2         FeO
H^+1, SO_4^-2       H_2SO_4
Al^+3, SO_4^-2      Al_2(SO_4)_3
NH_4^+1, SO_4^-2    (NH_4)_2SO_4
Hg_2^+2, PO_4^-3    (Hg_2)_3(PO_4)_2
NH_4^+1, OH^-1      NH_4OH
Hg_2^+2, O_2^-2     Hg_2O_2

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins


3
প্রস্তাবিত পরীক্ষার কেস: Fe^+2, OH^-1: Fe(OH)_2প্রতিটি উপাদানগুলির 1 এর সাথে একটি পলিয়েটমিক আয়ন ( OH^-1)।
pizzapants184

1
@ আদম দ্বিতীয় আয়ন অভিযুক্ত করা হয়: NO_3^-1। এছাড়াও অন্য পরীক্ষা মামলায় আপ জোড়া প্রথমটি হওয়া উচিত ^-2, তাই এটি হবে (C(NH_2)_3)_2...। বা এমন একটি ক্ষেত্রে যেখানে একবারের বেশি বার আয়ন প্রয়োজন হয় তা বন্ধনী দিয়ে শুরু হয়।
হিমডল

1
Fe_4(Fe(CN)_6)_3প্রুশিয়ান ব্লু এর জন্য অ্যাডম
কোলেরা সু

3
এটি এখনও পর্যন্ত এই ওয়েবসাইটে দেখা সবচেয়ে মজাদার চ্যালেঞ্জ শিরোনাম হতে পারে এবং এটি একটি পিপিসিজি প্রশ্নের জন্য অনেক কিছু বলছে। ভাল হাসির জন্য ধন্যবাদ
ওসুকা_

1
@ ইউসুকা_ আপনি কি দেখেছেন "আমার পরিবারকে হত্যার দ্রুততম উপায় কোনটি" আরকাদে? বা আমার অন্যান্য পিপিসিজি চ্যালেঞ্জ, "ইলুমিনাতি নিশ্চিত করুন"?
নিসা

উত্তর:


4

এপিএল (ডায়ালগ) , 60 59 61 বাইট

চার্জগুলি অবশ্যই স্বাক্ষরিত হওয়া উচিত +

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

{∊(⍺{⍵∧1<≢⍺∩⎕D,⎕A:1')(',⍺⋄⍺}¨m),¨(ms1)/¨'_',∘⍕¨s←⍵÷⍨∧/⍵}∘|

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

{}∘| ফাংশন যেখানে বাম আর্গুমেন্ট এবং ডান আর্গুমেন্ট এর দৈর্ঘ্য:

∧/⍵ চার্জগুলির এলসিএম

⍵÷⍨ তার দ্বারা অভিযোগগুলি ভাগ করুন divide

s← সংরক্ষণ করুন s( s ubscriptts এর জন্য )

'_',∘⍕¨ ফর্ম্যাট (স্ট্রিংফাই) এবং প্রত্যেকের জন্য আন্ডারবার प्रीপেন্ড করুন

(... এর )/ প্রতিটি অক্ষরের সাথে সম্পর্কিত মানটি প্রতিলিপি করুন:

  s≠1 এর sথেকে আলাদা কি 1? (1 বা 0 দেয়)

  m← সংরক্ষণ করুন m( মিটার আল্টাপিলের জন্য)

(),¨ নিম্নলিখিতগুলিতে যথাক্রমে এগুলি প্রিনড করুন:

  ⍺{}¨m প্রত্যেকের জন্য, এই ফাংশনটিকে আয়নগুলি এবং mযুক্তি হিসাবে কল করুন :

   ⎕D,⎕Aডি বড়হাতের দ্বারা অনুসরণ igits একটি lphabet

   ⍺∩ আয়ন এবং যে ছেদ

    যে অক্ষরের সংখ্যা ট্যালি

   1< এর থেকেও কি কম? (অর্থাত্ কি আমাদের একটি বহু-উপাদান আয়ন রয়েছে?)

   ⍵∧ এবং আমাদের কি সেই আয়নটির একাধিক প্রয়োজন?

   : যদি তা হয় তবে:

    ')(',⍺ আয়ন থেকে স্ট্রিং প্রিপেন্ড করুন

    1⌽ চক্রাকারে এক ধাপ বাম দিকে ঘোরান ( )ডানদিকে রাখুন)

    আর

     আয়নটি অপরিশোধিত অবস্থায় ফিরিয়ে দিন

ε nlist (চেপ্টা)


6

সি, 208 205 175 169 বাইট

argv[1]: কেটিশন
argv[2]:
আয়নগুলির চার্জগুলি স্টিডিনে নেওয়া হয়।

#define z(b)for(i=*++v;*++i>95;);printf(b>1?*i?"(%s)_%d":"%s_%d":"%s",*v,b);
main(c,v,d,e,g,h,i)char**v,*i;{scanf("%d%d",&c,&d);for(e=c,h=-d;g=h;e=g)h=e%g;z(-d/e)z(c/e)}

ওপি নির্দিষ্ট আয়নগুলি যে কোনও ক্রমে দেওয়া যেতে পারে।
হেইমডাল

6

রেটিনা , 86 80 বাইট

6 বাইট সংরক্ষণ করার জন্য নীলকে ধন্যবাদ

^
(
\^.+
)_$&$*
(1+)(\1|¶.+)+_(\1)+$
$#3$2_$#2
_1$

m)T`()``.+\)$|\(.[a-z]?\)
¶

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

ইনপুট লাইনফিড-বিচ্ছিন্ন (টেস্ট স্যুট সুবিধার জন্য কমা-বিচ্ছেদ ব্যবহার করে)।

ব্যাখ্যা

^
(

আমরা (প্রতিটি অণুতে একটি প্রিপেন্ডিং দিয়ে শুরু করি । ^উপর ম্যাচ লাইন কারণ সূত্রপাত m)কর্মসূচির শেষ দিকে সব পূর্ববর্তী পর্যায়ে জন্য একাধিক লাইন মোড সেট করে।

\^.+
)_$&$*

আমরা ^[-+]nঅংশটি এর সাথে প্রতিস্থাপন করি )_, তারপরে nঅনুলিপিগুলি 1(অর্থাত্ আমরা চার্জগুলি অ্যানারিতে রূপান্তর করি, লক্ষণগুলি বাদ দিয়ে)।

(1+)(\1|¶.+)+_(\1)+$
$#3$2_$#2

এই পর্যায়ে তিনটি কাজ করা হয়: এটি উভয় চার্জকে তাদের জিসিডির দ্বারা বিভক্ত করে, দশমিকের দিকে ফিরিয়ে দেয় এবং এগুলিকে অদলবদল করে। GCD Regex বেশ সহজে পাওয়া যাবে, দীর্ঘতম মিলিয়ে 1+আমাদের শুধুমাত্র backreference ব্যবহার করে উভয় চার্জ মেলে দেয় \1। এর দ্বারা বিভক্ত করার জন্য, আমরা রেটিনার "ক্যাপচার কাউন্ট" বৈশিষ্ট্যটি ব্যবহার করি, যা আমাদের জানায় যে কতবার একটি গ্রুপ ব্যবহৃত হয়েছে। সুতরাং $#2প্রথম চার্জ GCD দ্বারা বিভক্ত এবং $#3দ্বিতীয় চার্জ GCD দ্বারা বিভক্ত (উভয় দশমিক মধ্যে)।

_1$

আমরা _1উভয় অংশের প্রান্ত থেকে গুলি সরিয়েছি।

m)T`()``.+\)$|\(.[a-z]?\)

এবং আমরা লাইনগুলি থেকে বন্ধনীর পাতাগুলি ফেলে যা একটিতে শেষ হয় )(অর্থাত্ _1সেখানে এটি ছিল ) পাশাপাশি লাইনগুলিতে কেবলমাত্র একটি একক পরমাণু থাকে।

অবশেষে, আমরা দুটি রেণুটি লাইনফিডটি ফেলে রেখে একত্রিত করি।



2

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

lambda c,a,C,A:g(c,A/gcd(C,A))+g(a,C/gcd(C,A))
from math import*
g=lambda s,n:[s,[s,'(%s)'%s][sum(c<'`'for c in s)>1]+'_%d'%n][n>1]

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

পাইথন 2 , 196 174 170 155 149 140 136 বাইট

lambda c,a,C,A:g(c,A/gcd(C,A))+g(a,C/gcd(C,A))
from fractions import*
g=lambda s,n:[s,[s,'(%s)'%s][sum(c<'`'for c in s)>1]+'_'+`n`][n>1]

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



2

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

lambda E,e,I,i,m=lambda e,i:(len(e)>2<=i)*"("+e+(len(e)>2<=i)*")"+"_%d"%i*(i>1):m(E,i/gcd(i,I))+m(e,I/gcd(i,I))
from math import*

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


যদি আমাদের অ্যানিয়নের নেতিবাচক চার্জগুলি পরিচালনা করতে হয় তবে 153 বাইট:

lambda E,e,I,i,a=abs,m=lambda e,i:(len(e)>2<=i)*"("+e+(len(e)>2<=i)*")"+"_%d"%i*(i>1):m(E,a(i)/gcd(a(i),a(I)))+m(e,a(I)/gcd(a(i),a(I)))
from math import*

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


2

আরপিএল (এইচপি 48 এস / এসএক্স), 294.5 বাইট

হ্যাঁ, হাস্যকরভাবে বড় জমা, এটি কতটা প্রতিযোগিতামূলক হবে তা নিশ্চিত নয় ...

DIR
  M
    « S ROT S SWAP ABS 4 PICK ABS
      DUP2 WHILE DUP2 REPEAT MOD SWAP END DROP2
      SWAP OVER / 4 ROLL J 3 ROLLD / ROT J
      ROT 0 > IF THEN SWAP END + »
  S
    « DUP "^" POS DUP2 1 + OVER SIZE SUB OBJ🡢
      3 ROLLD 1 - 1 SWAP SUB »
  J
    IF OVER 1 ==
    THEN SWAP DROP
    ELSE DUP SIZE DUP2 DUP SUB "Z" > - 1 >
      IF
      THEN "(" SWAP + ")" +
      END
      "_" + SWAP +
    END
END

3 টি রুটিন একটি ডিরেক্টরিতে খুব সুন্দরভাবে প্যাকেজ হয়েছে। Mপ্রধান এক। এটি আয়ন হিসাবে ফর্ম্যাট স্ট্যাকের 2 টি স্ট্রিং প্রত্যাশা করে এবং স্ট্যাকের মধ্যে একটি অণু স্ট্রিং পুশ করে।

Sআয়নটিকে একটি সংখ্যা হিসাবে এবং স্ট্রিং হিসাবে উপাদান সূত্রকে চার্জে বিভক্ত করে। উদাহরণস্বরূপ, "PO_4^-3"স্ট্যাক থেকে নেওয়া এবং হবে -3এবং "PO_4"স্ট্যাকের সম্মুখের ধাক্কা।

Jসূত্রের সাথে আয়নগুলির সংখ্যায় যোগ দেয় এবং সূত্রটি বন্ধনীতে আবদ্ধ করতে হবে কিনা তা স্থির করে। ELSE1 আয়নটির সাথে সামান্য কিছুটা আগে স্ট্রিংটি যেমন রয়েছে তেমন ছেড়ে যায়। উদাহরণস্বরূপ, যদি 1এবং "PO_4"স্ট্যাকের উপরে থাকে তবে সেগুলি দ্বারা প্রতিস্থাপিত হয় "PO_4"1এবং "H"দেয় "H"

বাকিগুলি একাধিক আয়নগুলির সাথে ডিল করে; যদি এটি একটি একক পরমাণু হয় তবে এটি বন্ধনীতে নেই, অন্যথায় এটি। এটি কিনা তা স্থির করতে আমি স্ট্রিংয়ের দৈর্ঘ্য যাচাই করে দেখি এবং শেষ অক্ষরটি কিনা তা যাচাই করে নিই >"Z"। বুলিয়ান এক্সপ্রেশন সত্যের জন্য 1 এবং মিথ্যা হিসাবে 0 ফেরত দেয়। স্ট্রিংয়ের দৈর্ঘ্য থেকে এই তুলনার ফলাফলটি বিয়োগ করে আমি একক পরমাণুতে 1 বা কম পেয়েছি, অন্যথায় আরও: দৈর্ঘ্য 1 একটি একক পরমাণু; দৈর্ঘ্য 2 এর শেষ অক্ষর হিসাবে একটি চিঠি থাকবে; একক পরমাণুর ক্ষেত্রে এটি নিম্নতর হয়, সুতরাং >"Z"ফলাফল 1 করে, অন্যথায় 2; দৈর্ঘ্য 3 বা তার বেশি অর্থ 1 পরমাণুর বেশি এবং 0 বা 1 দিয়ে দৈর্ঘ্য থেকে বিয়োগফল কমপক্ষে 2 হবে For উদাহরণস্বরূপ, 3এবং "PO_4"দেয় "(PO_4)_3"3এবং "Al"দেয় "Al_3"

Mপ্রথম প্রতিটি আয়ন ব্যবহার করে বিভক্ত S। প্রথম লাইনের পরে স্ট্যাকের স্তর 5 (যাতে গভীরতম বুড়ি অবজেক্ট) দ্বিতীয় আয়ন, স্তর 4 দ্বিতীয় আয়নটির সূত্র, স্তর 3 প্রথম আয়নটির সূত্র, স্তর 2 প্রথম আয়নটির চার্জের পরম মান এবং স্তর 1 পরম মানের অন্তর্ভুক্ত করে আবার দ্বিতীয় আয়নটির চার্জের। উদাহরণস্বরূপ, যদি স্ট্যাক দেওয়া আয়ন হয় "Al^+3", "SO_4^-2"আমরা পেতে -2, "SO_4", "Al", 3, 2

দ্বিতীয় লাইন 2 টি চার্জের জিসিডি গণনা করে (চার্জ অক্ষত রেখে)।

তৃতীয় লাইন প্রতিটি চার্জকে gcd দ্বারা ভাগ করে (বহুগুণ গণনা করতে) এবং আয়নটির সূত্রটি ব্যবহার করে এর সাথে যোগ দেয় J। সুতরাং আমাদের চারটি স্ট্রিং রয়েছে যার একটি দেওয়া আয়ন চার্জযুক্ত মুছে ফেলা হয় (বা এর একাধিক) এবং তাদের পিছনে সমাহিত দ্বিতীয়টির চার্জ। উদাহরণস্বরূপ, -2, "Al_2", "(SO_4)_3"(-2 SO_4 ভারপ্রাপ্ত যায়)।

চতুর্থ লাইনটি চার্জটি অসন্তুষ্ট করে এবং যদি ইতিবাচক হয় তবে তা দুটি স্ট্রিংগুলিকে অদলবদল করে (যাতে কেশনটি প্রথমে আসে) এতে যোগদানের আগে। সুতরাং উদাহরণস্বরূপ, উপরোক্ত কারণ এটি নেতিবাচক, তারা যাতে যোগদান হয় হিসাবে তারা: "Al_2(SO_4)_3"


1

জাভাস্ক্রিপ্ট, 145 বাইট

(c,a,p,n,g=(a,b)=>b?g(b,a%b):a)=>`(${c})_${n/-g(p,-n)}(${a})_${p/g(p,-n)}`.replace(/\(((\w+)\)(?=_1)|([A-Z][a-z]*)\))/g,"$2$3").replace(/_1/g,"")

আর্গুমেন্ট গ্রহণ করে cথাকে, aএটি আয়ন হয়, pইতিবাচক চার্জ হয়, nনেতিবাচক চার্জ হয়।

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