গল্ফ একটি দ্রাব্যতা চার্ট


12

একটি কেশন এবং অ্যানিয়নের নাম দেওয়া, আউটপুট "এস" (দ্রবণীয়) বা "আই" (দ্রবীভূত)। আমরা যে টেবিলটি ব্যবহার করব তা উইকিপিডিয়া থেকে: https://en.wikedia.org/wiki/Solubility_chart । এটি ভবিষ্যতের রেফারেন্সের জন্য প্রশ্নের শেষে অনুলিপি করা হয়।

ইনপুট : আয়নটি পরে একটি কেশন, একটি স্পেস দ্বারা পৃথক করা। কেশনটি নিম্নলিখিতগুলির মধ্যে একটি হবে:

Lithium Sodium Potassium Ammonium Beryllium Magnesium Calcium 
Strontium Barium Zinc Iron(II) Copper(II) Aluminium Iron(III) Lead(II) Silver

এবং অ্যানিয়ন নিম্নলিখিতগুলির মধ্যে একটি হবে:

Fluoride Chloride Bromide Iodide Carbonate Chlorate Hydroxide Cyanide Cyanate 
Thiocyanate Nitrate Oxide Phosphate Sulfate Dichromate

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

উদাহরণ ইনপুট: Sodium Chloride

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

টেবিল:

?,S,S,S,?,S,S,S,?,S,S,?,I,S,S
S,S,S,S,S,S,S,S,S,S,S,?,S,S,S
S,S,S,S,S,S,S,S,S,S,S,?,S,S,S
S,S,S,S,S,S,S,S,?,S,S,?,S,S,S
S,S,S,?,?,?,?,?,?,?,S,?,?,S,?
?,S,S,S,I,S,I,?,?,?,S,I,I,S,I
I,S,S,S,I,S,?,S,?,?,S,?,I,?,I
?,S,S,S,I,S,S,?,?,?,S,?,?,I,?
?,S,S,S,I,S,S,S,?,?,S,?,?,I,?
?,S,S,S,I,S,I,I,?,?,S,I,I,S,I
S,S,S,S,I,S,I,?,?,?,S,I,I,S,I
?,S,S,?,I,S,I,?,?,I,S,I,I,S,I
S,S,S,?,?,S,I,?,?,?,S,I,I,S,I
?,S,S,?,?,S,I,?,?,?,S,I,I,?,I
?,?,?,I,I,S,I,?,?,?,S,I,I,I,?
S,I,I,I,I,S,?,I,I,?,S,?,I,?,I

সারিগুলি উপরে তালিকাভুক্ত ক্রমের সাথে শৃঙ্খলাবদ্ধ এবং কলামগুলি অ্যানিশন রয়েছে। উদাহরণস্বরূপ, যেহেতু ম্যাগনেসিয়াম আয়োডাইড দ্রবণীয়, এবং ম্যাগনেসিয়ামটি 6th ষ্ঠ ক্যাশন এবং আয়োডাইড ছিল চতুর্থ অ্যানিয়োন, ষষ্ঠ সারি এবং চতুর্থ কলামটিতে 'এস' চরিত্রটি রয়েছে। ?অনির্ধারিত আচরণ নির্দেশ করে।


1
আমি এটি পছন্দ করি কারণ এর অপরিজ্ঞাত আচরণটি ?যে কোনওটি অ্যালগরিদম ব্যবহার করতে পারে তাতে প্রচুর স্বাধীনতা দেয়।
জো কিং

1
@ ফ্রাইআম দ্য এজিগম্যান kolmogorov-complexityট্যাগ থাকা সত্ত্বেও , চ্যালেঞ্জটি টেবিলটি আউটপুট দিতে বলে না, তবে প্রদত্ত (কেশন, অ্যানিয়ন) জুটির জন্য সঠিক মান।
আর্নৌল্ড

4
আমি কলমোগোরভ-জটিলতা ট্যাগটি সরিয়ে নিয়ে সিদ্ধান্ত-সমস্যা ট্যাগ যুক্ত করেছি, যেহেতু এটি কোনও নির্দিষ্ট (বা আংশিকভাবে স্থির) আউটপুট তৈরি করার বিষয়ে নয়, তবে নির্দিষ্ট ইনপুটটি কোনও মানদণ্ড পূরণ করে কিনা তা নির্ধারণ করে।
স্টিভি গ্রিফিন

আপনি কি কেবল truthy/ 'S'বা falsy/ এর পরিবর্তে কোনও 2 স্বতন্ত্র সামঞ্জস্যপূর্ণ মান আউটপুট দেওয়ার অনুমতি বিবেচনা করবেন 'I'?
আর্নল্ড

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

উত্তর:


8

জাভাস্ক্রিপ্ট (নোড.জেএস) , 143 বাইট

রিটার্নস 1 দ্রবণীয় জন্য, 0 অদ্রবণীয় জন্য।

s=>Buffer(`## 5)6.'04+ n:# (F* E"/$;&-"/"7&#.%`).map(c=>S+='1'.repeat(c-32)+0,S='')|S[parseInt(s.split` `[1].slice(1,7)+s[0]+s[1],35)%1325%508]

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

কিভাবে?

ইনপুট স্ট্রিংটিকে একটি অনুসন্ধান সূচীতে রূপান্তর

আমরা প্রথম অ্যানিয়নের ২ য় থেকে 7th ম অক্ষর বের করে এবং কেটনের প্রথম দুটি অক্ষর যুক্ত করে একটি কী তৈরি করি:

key = s.split` `[1].slice(1, 7) + s[0] + s[1]

উদাহরণ:

'Lithium Fluoride'  --> 'luoridLi'
'Sodium Fluoride'   --> 'luoridSo'
'Sodium Dichromate' --> 'ichromSo'
'Calcium Oxide'     --> 'xideCa'

আমরা এটি বেস -35-এ পার্স করে এবং একটি মডুলো 1325 এর পরে একটি মডিউল 508 (ব্রুট-জোর করা মান) প্রয়োগ করে একটি অনুসন্ধান সূচকে পরিণত করি:

parseInt(key, 35) % 1325 % 508

লুক টেবিলের সংক্ষেপণ

অদ্রবণীয়গুলির চেয়ে উল্লেখযোগ্যভাবে বেশি দ্রবণীয় জোড় থাকার কারণে , আমরা দ্রবণীয় দ্বারা অনুসন্ধানে সমস্ত অব্যবহৃত এন্ট্রি পূরণ করি ।

1 দিয়ে দ্রবণীয় এবং 0 দিয়ে দ্রবণীয় এনকোডিংয়ের মাধ্যমে , আমাদের দেখার টেবিলটিতে মূলত 1 এর দীর্ঘ স্ট্রিং থাকে যার পরে 0 হয় :

11101110011111111111111111111101111111110111111111111111111111101111111111111101111111011111
11111111111011111111111111111111011111111111001111111111111111111111111111111111111111111111
11111111111111111111111111111111011111111111111111111111111011100111111110111111111111111111
11111111111111111111011111111110011111111111111111111111111111111111110110111111111111111011
11011111111111111111111111111101111110111111111111101101111111111111110110111111111111111111
11111011111101110111111111111110111110

আমরা এর স্ট্রিংগুলির দৈর্ঘ্য 1 টির ASCII অক্ষর হিসাবে পরিধি [32-126] এ সংরক্ষণ করে এটি সংকুচিত করি ।


8

রুবি -n , 96 92 75 70 69 65 বাইট

p /ra|[SPm]o|^[^C]*F|h.*D/?1:/Le|[MAIZ].*y|[OPDFbv]|[tr]i.*S/?0:1

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

আমি হ্যাশগুলি এবং অনুসন্ধান সারণী উত্পন্ন করতে খুব ভাল নই, সুতরাং পরিবর্তে আমি টেবিলের যৌক্তিক কাঠামোর সরলকরণের জন্য সেই সমস্ত প্রশ্ন-চিহ্নের ওয়াইল্ডকার্ডগুলির সুবিধা গ্রহণ করার সিদ্ধান্ত নিয়েছি এবং তারপরে কিছু খাঁটি রেজেজ ম্যাজিক প্রয়োগ করেছি।

আপডেট : কিছু প্রশ্ন চিহ্নের অ্যাসাইনমেন্ট অ্যাসাইনমেন্ট এবং ম্যাচের যুক্তিকে আরও সরল করে তুলেছে।

আপডেট 2 : মাত্র 2 মাস পরে, আমি আরও কয়েকটি বাইট সংরক্ষণের জন্য টেবিলের আরও একটি পুনর্নির্মাণ নিয়ে এসেছি।

আমরা যে টেবিলটি তৈরি করতে যাচ্ছি তা দেখতে এমন দেখাচ্ছে:

Lithium    111101111110011
Sodium     111111111111111
Potassium  111111111111111
Ammonium   111111111111111
Beryllium  111101111110010
Magnesium  111101000010010
Calcium    011101111110010
Strontium  111101111110000
Barium     111101111110000
Zinc       111101000010010
Iron(II)   111101000010010
Copper(II) 011101000010010
Aluminium  111101000010010
Iron(III)  111101000010010
Lead(II)   100001000010000
Silver     100001000010000

এখন, নিম্নলিখিত যৌগগুলি দ্রবণীয় হিসাবে বিবেচনা করা যেতে পারে:

  • raনিত রা তে, চলো রা তে
  • [SPm]o তাই ডিয়াম, পো টাসিয়াম, আমি মো নিম
  • ^[^C]*F এফ লুরিড, তবে সি অ্যালসিয়াম বা সি অ্যাপারার নয়
  • h.*Dলিট এইচ আইম ডি আইক্রোমেট

অবশিষ্ট যৌগগুলির মধ্যে নিম্নলিখিতটি দ্রবীভূত:

  • Le লে বিজ্ঞাপন
  • [MAIZ]i.*y এম অ্যাগনেসিয়াম, লুমিনিয়াম, আই রন (এবং নির্দেশিত চার্জের সাথে অন্যান্য কেশনস ), জেড ইনক যৌগগুলিতে অ্যানিয়নের ব্লকযুক্ত মিশ্রণ রয়েছে y(এইচ ওয়াই ড্রক্সাইড-থিয়োক ওয়াই এনেট)
  • [OPDFbv] হে xide, পি hosphate, ডি ichromate, এফ luoride, গাড়ির Oñate, শীলের বনাম Er
  • [tr]i.*SStron TI উম এবং Ba RI উম এস ulfates

বাকি সবগুলি দ্রবণীয়।


4

পাইথন 2 , 166 161 131 বাইট

lambda n:chr(hash(n)%1482%737%388%310%295%262%254)not in'gwQFCAkOExUWHJ0gJyicLLKviDK3PEDDxslKztFUV1ja4ukdbe7x9Xd5'.decode('base64')

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


আপনি এতগুলি আধুনিক সংখ্যা কীভাবে খুঁজে পেয়েছেন?
অ্যালেক্সরেসার

1
@ অ্যালেক্সারেসার আমি একটি পাইথন স্ক্রিপ্ট লিখেছি যা একটি নির্দিষ্ট সীমা পর্যন্ত পূর্ণসংখ্যার চেষ্টা করে, এমনভাবে যাতে মডিউলগুলি গণনা করা যায় তবে দ্রবণীয় এবং দ্রবণীয় ইনপুটগুলির জন্য একই ফলাফল পাওয়া যায় না। বারবার এই স্ক্রিপ্ট চালিয়ে। আমি এই সমস্ত নম্বর পেয়েছি।
ovs

@ অ্যালেক্সারেসার আমি এই চ্যালেঞ্জের আগে বেশ কয়েকবার স্ক্রিপ্টটি ব্যবহার করেছি, উদাহরণস্বরূপ : কোডগলফ.স্ট্যাককেক্সচেঞ্জ / এ / 115706/64121 । সাধারণত এই মডুলো চেইনগুলি কিছুটা ছোট হয়।
ovs


2

পাস্কাল (এফপিসি) , 387 358 353 348 341 319 297 বাইট

var s,t:string;j:word;c:array[0..14]of word=(5055,8191,8191,8191,93,63,4143,175,4271,63,127,31,95,3,67);begin read(s);t:=copy(s,pos(' ',s)+1,6);j:=pos(t[1..2],'OxCyCaPhThDiHyFlIoSuBrChChNi')div 2;if'a'=t[6]then j:=12;write(c[pos(s[1..2],'LiSoPoAmBeMaCaStBaZiIrCoAlLeSi')div 2]shr(13-j)mod 2>0)end.

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

ব্যাখ্যা:

var a:string='LiSoPoAmBeMaCaStBaZiIrCoAlLeSi'; //string containing first 2 letters of cations (can also be const)
                                               //luckily, Iron(II) and Iron(III) are compatible, they can have the same outputs
    b:string='OxCyCaPhThDiHyFlIoSuBrChChNi'; //string containing first 2 letters of anions (can also be const)
                                             //the order is different from the Wikipedia chart;
                                             //Chloride and Chlorate are next to each other to find the right index easier
                                             //Cyanide and Cyanate are compatible - 1 column less
                                             //overall, they are ordered to minimize the numbers in c
    s,t:string;
    i,j:word;
    c:array[0..14]of word=(5055,8191,8191,8191,93,63,4143,175,4271,63,127,31,95,3,67);
      //One number for each cation; one bit for solubility of particular combination; the bit for input combination will be found using i and j
begin
  read(s); //put input into s
  t:=copy(s,pos(' ',s)+1,6); //find the 2nd word in s (characters after space), take first 6 letters and copy them into t (6th letter is needed later)
  i:=pos(s[1..2],a)div 2; //position of first 2 letters of cation in a
                          //divided by 2 to get index for c
                          //*in golfed code, expression for i is inserted directly into write function
  j:=pos(t[1..2],b)div 2; //position of first 2 letters of anion in b
                          //divided by 2 to get the particular bit of c[i]
  if(j=11)and(t[6]='a')then j:=j+1; //if the anion is Chlorate, j is wrong and needs to be increased (specifically to 12);
                                    //only Chlorate has 'a' as 6th character, j doesn't need to be checked, but it's here for easier understanding
  writeln((c[i]shr(13-j))mod 2>0); //take i-th element of c, shift it right to put the correct bit at last position,
                                   //extract that bit, check if greater than 0
end.

1

জেলি ,  67 61 60 50 47  44 বাইট

OḌ%⁽Ƭ%⁽£ṇ%⁽¡ẹ%249ḟ“ıA¬ɲḃẏCċtȯƁƤçȤċŒḲOƲ’D‘Ĥ

একটি তালিকা ফেরত দেওয়ার এক লিডিক লিঙ্ক যা খালি Iএবং অ শূন্যের জন্য ফাঁকা S(জেলি খালি তালিকায় মিথ্যা এবং অ-শূন্যস্থানগুলি সত্য সত্য)।

এটি অনলাইন চেষ্টা করুন! (পাদচরণ”S”IÇ?হয়if LastLink(x) is Truthy then "S" else "I")

অথবা ওপিতে গ্রিডের ক্রমের সাথে মিলিত গ্রিড হিসাবে ফর্ম্যাট হওয়া সমস্ত ক্ষেত্রে দেখুন ।

কিভাবে?

অবশ্যই এই ইনপুটগুলির সেট তৈরি করার পরে Sএবং অবশ্যই Iএই ইনপুটগুলিকে বেস টেন (পাইথন dec=lambda s:sum(10**i*ord(c) for i, c in enumerate(s[::d])):) হিসাবে মূল্যায়ন করতে হবে এবং কয়েকটি লুপ মডুলো-আইং মান ব্যবহার করে এবং এখানে ব্যবহৃত হ্যাশ যাচাইয়ের জন্য পাওয়া গেছে।

কোডটি 250 টি এনকোডড পূর্ণসংখ্যার বেইজ  25, 16  * ... 10 এ রূপান্তর করে এবং সংশ্লেষে ফলাফলের সংক্ষিপ্তসার করে অ দ্রবণীয় কী পূর্ণসংখ্যার কোডে তৈরি করা হয় ...

* বেসামাল হ্রাস কিছু অপ্রয়োজনীয় কী যুক্ত করে অর্জন করা হয়েছিল

OḌ%⁽Ƭ%⁽£ṇ%⁽¡ẹ%249ḟ“...’D‘Ĥ - Main Link: list of characters   e.g. "Calcium Carbonate"
O                            - cast to a list of ordinals      [67,97,108,99,105,117,109,32,67,97,114,98,111,110,97,116,101]
 Ḍ                           - convert from base ten           778907829795030961
   ⁽Ƭ                       - base 250 literal = 4258
  %                          - modulo                          625
       ⁽£ṇ                   - base 250 literal = 1721
      %                      - modulo                          625
           ⁽¡ẹ               - base 250 literal = 1215
          %                  - modulo                          625
               249           - literal 249
              %              - modulo                          127
                           ¤ - nilad followed by link(s) as a nilad:
                   “...’     -   literal in base 250    = 382193517807860310905428231939605402667395154
                        D    -   convert to decimal     = [3,8,2,1,9,3,5,1,7,8,0,7,8,6,0,3,1,0,9,0,5,4,2,8,2,3,1,9,3,9,6,0,5,4,0,2,6,6,7,3,9,5,1,5,4]
                         ‘   -   increment (vectorises) = [4,9,3,2,10,4,6,2,8,9,1,8,9,7,1,4,2,1,10,1,6,5,3,9,3,4,2,10,4,10,7,1,6,5,1,3,7,7,8,4,10,6,2,6,5]
                          Ä  -   cumulative sum         = [4,13,16,18,28,32,38,40,48,57,58,66,75,82,83,87,89,90,100,101,107,112,115,124,127,131,133,143,147,157,164,165,171,176,177,180,187,194,202,206,216,222,224,230,235]
                             -     ...note the redundant keys are --->            48       66 75                                115                                                     187             216
                  ḟ          - filter discard (implicit wrap)  [] (if 127 was not in the list above this would've been [127])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.