পাগল রসায়নবিদ এবং চতুর প্রোগ্রামার


12

গল্পের

আপনি কেমিস্ট্রি পরীক্ষাগারে चक्कर জাগ্রত হন এবং আপনি বুঝতে পারেন যে আপনাকে একজন বৃদ্ধ পাগল রসায়নবিদ অপহরণ করেছেন। যেহেতু তিনি তার বয়সের কারণে খুব ভাল দেখতে পাচ্ছেন না, তিনি চান আপনি তাঁর জন্য কাজ করুন এবং কেবলমাত্র আপনি পরীক্ষাগারটি এড়াতে পারবেন।

কার্য

যেসব অণুগুলির রাসায়নিক সূত্র ইনপুট হিসাবে দেওয়া হবে তার কাঠামোগত সূত্রগুলি ফিরিয়ে দেওয়া আপনার কাজ । মনে রাখবেন যে কেবলমাত্র কার্বন ( ), অক্সিজেন ( ) এবং হাইড্রোজেন ( ) পরমাণু ইনপুট হিসাবে ব্যবহৃত হবে। রাসায়নিক সূত্রে ভিন্ন, একটি হ'ল বৈধ পরিমাণ এবং একটি বাদ দেওয়া যায় না (যেমন বৈধ ইনপুট, তবে তা নয়)।COH01C1H4O0CH4

অস্পষ্টতা রোধ করতে, আমরা ধরে নিই যে অণুগুলিতে ডাবল এবং ট্রিপল বন্ডগুলি উপস্থিত হয় না। সমস্ত কার্বন পরমাণুর 4 টি একক বন্ধন প্রয়োজন, সমস্ত অক্সিজেন পরমাণুর 2 এবং হাইড্রোজেন পরমাণুর একটি প্রয়োজন। আমরা ধরে নিই যে O-Oবন্ডগুলির পাশাপাশি অস্তিত্ব নেই। অণুটির অস্তিত্ব বা স্থিতিশীল থাকতে হবে না।

3আউটপুট প্রদর্শনে স্বল্পতা নিশ্চিত করতে ইনপুটটিতে কার্বন পরমাণুর চেয়ে বেশি কখনই থাকবে না ।

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

পূর্ববর্তী নিয়মগুলি বাদ না দিয়ে আপনাকে অবশ্যই সমস্ত সম্ভাব্য অণুগুলি ফিরিয়ে আনতে হবে। আপনার অবৈধ ইনপুট হ্যান্ডেল করার দরকার নেই।

নিম্নলিখিত অণু সেই অণুতে আপনাকে যে সমস্ত সমাধানগুলি পরিচালনা করতে হবে তা প্রদর্শন করে।

অণুর সূত্রের একটির পৃষ্ঠার প্লেনের 180 ডিগ্রি ঘোরানো একটি অতিরিক্ত কাজ বলে মনে করা হয় এবং এটি প্রদর্শন করার প্রয়োজন হয় না।

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

উদাহরণ

ইনপুট: C2H6O2

প্রথমত, এই ইনপুটটির জন্য সমস্ত সম্ভাব্য সূত্র এখানে দেওয়া হয়েছে (@ জনাথন অ্যালানকে ধন্যবাদ)

01        H
          |
          O   H
          |   |
  H - O - C - C - H
          |   |
          H   H

02            H
              |
          H   O
          |   |
  H - O - C - C - H
          |   |
          H   H

03        H   H
          |   |
  H - O - C - C - O - H
          |   |
          H   H

04        H   H
          |   |
  H - O - C - C - H
          |   |
          H   O
              |
              H

05        H   H
          |   |
  H - O - C - C - H
          |   |
          O   H
          |
          H

12        H   H
          |   |
          O   O
          |   |
      H - C - C - H
          |   |
          H   H

13        H
          |
          O   H
          |   |
      H - C - C - O - H
          |   |
          H   H

14        H
          |
          O   H
          |   |
      H - C - C - H
          |   |
          H   O
              |
              H


15        H
          |
          O   H
          |   |
      H - C - C - H
          |   |
          O   H
          |
          H

23            H
              |
          H   O
          |   |
      H - C - C - O - H
          |   |
          H   H

24            H
              |
          H   O
          |   |
      H - C - C - H
          |   |
          H   O
              |
              H

25            H
              |
          H   O
          |   |
      H - C - C - H
          |   |
          O   H
          |
          H

34        H   H
          |   |
      H - C - C - O - H
          |   |
          H   O
              |
              H

35        H   H
          |   |
      H - C - C - O - H
          |   |
          O   H
          |
          H

45        H   H
          |   |
      H - C - C - H
          |   |
          O   O
          |   |
          H   H

এবং পৃষ্ঠাগুলির সমতলে 180 ° ঘূর্ণনটি বের করে নিলে এখানে সূত্রগুলি আউটপুটে থাকা উচিত:

01        H
          |
          O   H
          |   |
  H - O - C - C - H
          |   |
          H   H



03        H   H
          |   |
  H - O - C - C - O - H
          |   |
          H   H


12        H   H
          |   |
          O   O
          |   |
      H - C - C - H
          |   |
          H   H

13        H
          |
          O   H
          |   |
      H - C - C - O - H
          |   |
          H   H

14        H
          |
          O   H
          |   |
      H - C - C - H
          |   |
          H   O
              |
              H


 15      H
         |
         O   H      
         |   |
     H - C - C - H
         |   |
         O   H
         |
         H 

23            H
              |
          H   O
          |   |
      H - C - C - O - H
          |   |
          H   H



25            H
              |
          H   O
          |   |
      H - C - C - H
          |   |
          O   H
          |
          H



35        H   H
          |   |
      H - C - C - O - H
          |   |
          O   H
          |
          H

আপনার সূত্রগুলির লেবেলগুলি আউটপুট দেওয়ার দরকার নেই এবং দুটি উপস্থিত থাকলে আপনি দুটি আবর্তনের আউটপুট নিতে পারেন। উদাহরণস্বরূপ আপনি আউটপুট করতে পারেন 02 বা 35।

আপনার কোডটি পরীক্ষা করার জন্য এখানে কিছু বৈধ ইনপুট রয়েছে:

C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2

রসায়নবিদ আপনাকে আপনার কাজটি শেষ করতে পিসিটি বেশ পুরানো হয়েছে তাই আপনার কোডটি সংরক্ষণ করার জন্য এতে আপনার প্রচুর স্মৃতি নেই, সুতরাং এটি এবং সংক্ষিপ্ত পরিমাণ বাইট জয়ের!


আমাদের কি চক্রীয় অণুগুলি পরিচালনা করতে হবে?
লুক

@ আমার দেওয়া ইনপুটগুলি চক্রযুক্ত হতে পারে না সুতরাং আপনার এটি পরিচালনা করার দরকার নেই। তবে আপনি যদি 4 সি বা তার বেশি সংখ্যক অণুগুলি পরিচালনা করতে চান তবে আপনি এটি করতে পারেন এবং বোনাস স্কোর অর্জন করতে পারেন :) উপায় দ্বারা সম্পাদনার জন্য ধন্যবাদ! ইংরেজি আমার মাতৃভাষা নয়

1
আপনার প্রস্তাবিত আউটপুটটিতে প্রচুর সম্ভাব্য অণু অনুপস্থিত রয়েছে: আপনার কাছে দুটি প্রোপান-1,2-ডায়োল রয়েছে, তবে কমপক্ষে প্রোপান-1,1-ডায়োল, প্রোপান-1,3-ডায়োল, প্রোপান নিখোঁজ রয়েছে -2,2-ডায়োল, প্রচুর পরিমাণে অ্যালকোহল ইথার এবং বিভিন্ন যৌগ যেখানে দুটি অক্সিজেন পরমাণু একে অপরের সাথে সংযুক্ত থাকে। অতিরিক্তভাবে, আউটপুট ফর্ম্যাটটি কীভাবে নির্দিষ্ট করা হয়? আমি অনু করতে পারি যে অণুগুলিতে কিছু কিছু বন্ডের মধ্যে সমস্ত কিছু ফিট করার জন্য অন্যদের চেয়ে দীর্ঘ আঁকতে হবে (উদাহরণস্বরূপ ডাইমাইথাইলপ্রোপেন, যা সম্ভবত একটি বাস্তব রাসায়নিক )।

2
1. একই কার্বনে 2 ওএইচ গ্রুপ রাখা কি সম্ভব? আপনি এটি উদাহরণ থেকে বাদ দিয়েছেন বলে মনে হয়, তবে আমি সেই অনুমানের কোথাও দেখতে পাচ্ছি না যা বলে যে আমাদের এটি বিবেচনা করতে হবে না (আমি জানি বাস্তবে এই যৌগগুলি অ্যালডিহাইডেসের সাথে সাম্যাবস্থায় বিদ্যমান) ২. কেন HOCH2CH2OH রয়েছে? উভয় ওএইচ গ্রুপ উদাহরণ থেকে নিখুঁত নিচের দিকে নির্দেশ করছে? এটি কি প্রয়োজনীয় আউটপুট নয়?
স্তর নদী সেন্ট

1
৩. কার্বন চেইনের সাথে আউটপুটগুলি আনুভূমিকের পরিবর্তে উল্লম্বভাবে গ্রহণযোগ্য?
স্তর নদী সেন্ট

উত্তর:


3

রুবি, 275

->s{(k=4<<2*c=s[1].to_i).times{|i|z=" "*8
t=("  H|O|"[i%2*2,4]+"C|"*c+"O|H   "[i>>c&2^2,4]).chars.map{|j|z+j+z}
(c*2).times{|j|t[4+j&-2][j%2*10,7]="    H - O - H    "[[i>>j/2-1&4,-7-(i>>c*2-j/2-1&4)][j%2],7]}
i*(k+1)>>c+1&k-1<i||("%b"%i).sum%16!=s[5].to_i||i%7>c*3||puts(t)}}

বাম এবং ডান সিডচেইনগুলির জন্য সম্মিলিত সূত্রগুলি এবং ভেরিয়েবলকে নির্মূল করা h

রুবি, 279

->s{(k=1<<h=2+2*c=s[1].to_i).times{|i|t=("  H|O|"[i%2*2,4]+"C|"*c+"O|H   "[i>>c&2^2,4]).chars.map{|j|(z=" "*8)+j+z}
c.times{|j|t[4+j*2][0,7]="    H - O -"[i>>j-1&4,7]
t[4+j*2][10,7]="- O - H    "[i>>h-j-3&4^4,7]}
i*(k+1)>>h/2&k-1<i||("%b"%i).sum%16!=s[5].to_i||i%7>c*3||puts(t)}}

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

f=->s{
  (k=1<<h=2+2*c=s[1].to_i).times{|i|                       #c=number of C atoms. h=number of H (calculated)
                                                           #iterate i from 0 to (k=1<<h)-1

  t=("  H|O|"[i%2*2,4]+"C|"*c+"O|H   "[i>>c&2^2,4]).       #compose a backbone string H-C...C-H. Insert O at the top where bit 0 of i set, and O at the bottom where bit c+1 of i set
  chars.map{|j|(z=" "*8)+j+z}                              #convert string to an array of characters, pad each character left and right with 8 spaces

  c.times{|j|t[4+j*2][0,7]="    H - O -"[i>>j-1&4,7]       #overwrite spaces on left with H or HO according to bits 1 up to c
             t[4+j*2][10,7]="- O - H    "[i>>h-j-3&4^4,7]} #overwrite spaces on right with H or OH according to bits h-1 down to c+1

  i*(k+1)>>h/2&k-1<i||                                     #rotate the bits of i by h/2. if this is less than i, do not output the structure (eliminates rotations by 180deg by outputtng the lexically highest)
  ("%b"%i).sum%16!=s[5].to_i||                             #if the number of 1's in i differs from the number of O's indicated in the input, do not output
  i%7>c*3||                                                #if i%7>c*3, do not output (empirical solution to avoid 90deg rotations for C=1)
  puts(t)                                                  #if the above are all false, output the current structure.
  }
}

f[gets]

আউটপুট

প্রশ্ন আউটপুট হিসাবে ব্যবধানটি হয়। প্রতি মন্তব্যে অনুভূমিকের পরিবর্তে ব্যাকবোন উল্লম্ব। সমান বিবেচিত 90 বা 180 ডিগ্রির মাধ্যমে পুরো ডিসপ্লেটির আবর্তন।

C2H6O2
        H
        |
        O
        |
H - O - C - H
        |
    H - C - H
        |
        H



        H
        |
        O
        |
    H - C - H
        |
H - O - C - H
        |
        H





        H
        |
H - O - C - H
        |
H - O - C - H
        |
        H



        H
        |
        O
        |
    H - C - H
        |
    H - C - H
        |
        O
        |
        H



        H
        |
H - O - C - H
        |
    H - C - H
        |
        O
        |
        H



        H
        |
    H - C - H
        |
H - O - C - H
        |
        O
        |
        H



        H
        |
H - O - C - H
        |
    H - C - O - H
        |
        H





        H
        |
    H - C - H
        |
H - O - C - O - H
        |
        H





        H
        |
    H - C - O - H
        |
H - O - C - H
        |
        H

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