লক্ষটি
যেমনটি সুপরিচিত রয়েছে, পৃথিবীর সমস্ত পরিচিত প্রাণীর জিনগত উপাদানগুলি ডিএনএতে এনকোড করা আছে; চারটি নিউক্লিওটাইডস অ্যাডেনিন, থাইমাইন, সাইটোসিন এবং গুয়ানিন ব্যবহার করে। (এটিজির সাধারণভাবে প্রতিনিধিত্ব)।
একটি পুরো জিনোম সংরক্ষণ করতে ইচ্ছুক একজন বায়োইনফর্ম্যাটিক অবশ্যই অবশ্যই এএসসিআইআই হিসাবে এটি সংরক্ষণ করতে চান না, কারণ প্রতিটি পছন্দ কেবল দুটি বিট দ্বারা প্রতিনিধিত্ব করা যেতে পারে!
স্পেসিফিকেশন
আপনার মিশনটি, আপনি যদি এটি গ্রহণ করা পছন্দ করেন তবে হ'ল ASCII প্রতিনিধিত্বকে বাইনারি উপস্থাপনায় এবং পিছনে রূপান্তর করতে প্রোগ্রাম, ফাংশন বা পদ্ধতিগুলির একটি জুড়ি লিখুন; A
হিসাবে প্রতিনিধিত্ব b00
, T
হিসাবে b01
, G
হিসাবে b10
, এবং C
হিসাবে b11
(এখন "ইউনিট")।
এছাড়াও, প্রতিটি বাইটের উচ্চ বিটগুলিতে বাইটে ইউনিটগুলির গণনা থাকা উচিত, যাতে প্রতিটি বাইট একটি ট্রিপলকে উপস্থাপন করে।
যেমন: "GATTACCA"
হয়ে যায় b11 100001 b11 010011 b10 1100xx
।
বাইনারি ইনপুট থেকে ASCII এ, স্পেস, ট্যাব এবং নিউলাইনগুলি উপেক্ষা করা উচিত। এর সেটটিতে নেই [ \r\n\tATGC]
এমন কোনও অক্ষর একটি ত্রুটি এবং তা উপেক্ষা করা বা প্রসেসিং সমাপ্ত হতে পারে।
বাইনারি থেকে এএসসিআইআই ইনপুটটিতে, দুটি উচ্চ বিট বাইটস b00
উপেক্ষা করা হতে পারে।
ASCII আউটপুটটিতে সাদা স্থান থাকতে পারে; তবে বাইনারি ইনপুট প্লাস ওয়ান বাইট দীর্ঘ মাপের আকারের 4 গুণ বেশি কখনও না হওয়া উচিত এবং একটি নতুন লাইন দিয়ে শেষ হওয়া আবশ্যক।
বাইনারি আউটপুটটিতে b00xxxxxx
"নিয়ন্ত্রণ" বাইটের একটি নির্বিচার সংখ্যক থাকতে পারে ; তবে এএসসিআইআই ইনপুটের চেয়ে বেশি কখনই লম্বা হওয়া উচিত নয়।
প্রতিটি রূপান্তর প্রোগ্রাম অবশ্যই স্বেচ্ছাসেবী দৈর্ঘ্যের ইনপুট সমর্থন করা উচিত; এবং আনুমানিক লিনিয়ার সময়ে এনকোডিং বা ডিকোডিং সম্পূর্ণ করা উচিত।
মোচড়
দুর্ভাগ্যক্রমে আপনি বায়োইনফর্ম্যাটিকবিদ যার জন্য আপনি এই কাজটি সম্পাদন করছেন তার পক্ষে তিনি ব্যক্তিগতভাবে সম্ভবত ক্ষুদ্র স্তরে কোনওভাবে আপনাকে অন্যায় করেছেন।
সম্ভবত তিনি একবার আপনার বোনের সাথে বাইরে গিয়েছিলেন এবং তাকে আর কখনও ডাকেন নি। সম্ভবত সে আপনার কুকুরের লেজে পা রেখেছিল। নির্দিষ্টকরণগুলি আসলে গুরুত্বপূর্ণ নয়।
কী গুরুত্বপূর্ণ তা হল আপনার পেব্যাকের সুযোগ রয়েছে!
বিস্তারিত
প্রতিটি রূপান্তর একটি ছোট ত্রুটি হার প্রবর্তন করা উচিত; প্রতি দশ হাজারে এক ত্রুটির ক্রমক্রমে দশ মিলিয়ন ইউনিট প্রক্রিয়াজাত হয়।
ত্রুটি নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
- সদৃশ ত্রুটি:
"GAT TAC CA"
হয়ে যায়"GAT TAA CCA"
- মুছে ফেলার ত্রুটি:
"GAT TAC CA"
হয়ে যায়"GAT TAC A"
- অনুবাদ ত্রুটি:
"GAT TAC CA"
হয়ে যায়"GTA TAC CA"
- ট্রিপলেট নকল:
"GAT TAC CA"
হয়ে যায়"GAT TAC TAC CA"
- ট্রিপলেট পিছলে:
"GAT TAC CA"
হয়ে যায়"TAC GAT CA"
- ট্রিপলেট বিপরীতগুলি:
"GAT TAC CA"
হয়ে যায়"GAT CAT CA"
অবশ্যই ত্রুটিগুলি কোড থেকে তাত্ক্ষণিকভাবে সুস্পষ্ট হওয়া উচিত নয়; এবং ইনপুট দৈর্ঘ্য নির্বিশেষে; রূপান্তরটি কমপক্ষে একটি ত্রুটি প্রবর্তন করা উচিত।
অভিন্ন ইনপুট সহ দুটি রান অগত্যা অভিন্ন আউটপুট উত্পাদন করা উচিত নয় ।
শিল্প খাত
দুষ্কর জৈববৈজ্ঞানিক একটি মধ্যপন্থী দক্ষ কোডার; এবং এর মতো, কয়েকটি নির্মাণ স্বয়ংক্রিয়ভাবে আবিষ্কার করা হবে এবং এটি নিষিদ্ধের মতো:
- তিনি স্বয়ংক্রিয়ভাবে সিস্টেমে র্যান্ডম সংখ্যার জেনারেটর যেমন র্যান্ড (), র্যান্ডম (), বা / ডিভ / ইউরানডম বা / ডিভ / র্যান্ডম (বা ভাষার সমতুল্য যেকোন কিছু হতে পারে) থেকে পাঠাবেন।
- তিনি কোনও অতিরিক্ত অতিরিক্ত ভেরিয়েবল, কাউন্টার বা লুপগুলিও লক্ষ্য করবেন।
স্কোরিং
এনকোডার এবং ডিকোডার পৃথকভাবে স্কোর করা হবে।
প্রতিটি এলোমেলোভাবে উত্পাদিত 100 টি ইনপুট ফাইলের সেটগুলির বিপরীতে 3 বার চালানো হবে, প্রতিটি ফাইল 3 মিলিয়ন ইউনিটের ক্রম অনুসারে একটি আকারযুক্ত।
এনকোডার পরীক্ষার ক্ষেত্রে ডেটা প্রায় তৈরি করা হবে:
for (l = 1 => bigNum)
for (t = 1 => 20)
random_pick(3,ATGC)
t == 20 ? newline : space
ডিকোডার পরীক্ষার ক্ষেত্রে ডেটা প্রায় তৈরি করা হবে:
for (u = 1 => bigNum)
for (t = 1 => 20)
random_byte() | 0b11000000
0x00
এনকোডার
- প্রকৃত দৈর্ঘ্যের প্রত্যাশিত সর্বনিম্ন দৈর্ঘ্য থেকে অনুপস্থিত প্রতিটি বাইট -1 পয়েন্ট, সর্বোচ্চ -1000 পর্যন্ত স্কোর করবে। (প্রত্যাশিত সর্বনিম্ন দৈর্ঘ্য
ceil(count(ATGC) / 3)
))
ডিকোডার
- আসল দৈর্ঘ্যের প্রত্যাশিত সর্বাধিক দৈর্ঘ্যের উপরের প্রতিটি বাইট সর্বোচ্চ -1000 পর্যন্ত -1 পয়েন্ট করবে। (প্রত্যাশিত সর্বোচ্চ দৈর্ঘ্য
size(input) * 4 + 1
))
উভয়
- উত্পাদিত হতে পারে এমন প্রতিটি ধরণের ত্রুটি 100 পয়েন্ট স্কোর করবে; প্রতিটি জন্য মোট 600 পয়েন্ট সম্ভাব্য, 1200 মোট।
- প্রতিটি পরীক্ষার ক্ষেত্রে যার জন্য এনকোডারটি তার নিজস্ব গড়ের তুলনায় 30% এর বেশি বা কম ত্রুটি তৈরি করে -5 পয়েন্ট দ্বারা দন্ডিত হবে।
- প্রতিটি পরীক্ষার ক্ষেত্রে যার জন্য এনকোডার তার নিজস্ব গড়ের চেয়ে 15% কম বা তারও কম ত্রুটি উত্পন্ন করে তাকে 5 পয়েন্ট দেওয়া হবে।
- প্রতিটি পরীক্ষার ক্ষেত্রে যেখানে তিনটি রান একই ধরণের আউটপুট তৈরি করে -10 পয়েন্ট দ্বারা দন্ডিত হবে।
হার্ড প্রয়োজনীয়তা
একটি এন্ট্রি অযোগ্য ঘোষণা করা হবে যদি:
- এক ট্রিপলেটের চেয়ে বেশি কোনও বৈধ ইনপুট জন্য এটি এমনকি একটি ত্রুটি তৈরি করতে ব্যর্থ।
- এর পারফরম্যান্সটি এমন যে এটি প্রায় এক ঘন্টার মধ্যে পরীক্ষা গন্টলেটটি শেষ করতে পারে না।
- এটি প্রতি দশ হাজার ইউনিটে গড়ে একাধিক ত্রুটি তৈরি করে।
- এটি গড়ে প্রতি মিলিয়ন ইউনিটে একেরও কম ত্রুটি উত্পন্ন করে।
ইন্টারফেস
প্রবেশকারীদের স্ট্যান্ডার্ড ইনপুটটিতে ইনপুট এবং মান আউটপুট গ্রহণ করা উচিত।
যদি এন্ট্রি দ্বৈত ফাংশন সহ একটি প্রোগ্রাম হয়; সুইচগুলি -e
এবং -d
যথাক্রমে এনকোডিং এবং ডিকোডিংয়ের জন্য প্রোগ্রামটি সেট করা উচিত।
অনুরোধের উদাহরণ:
$ encoder <infile.txt >outfile.bin
$ decoder <infile.bin >outfile.txt
$ recoder -e <infile.txt >outfile.bin
বিজয়ী
বিজয়ী সর্বোচ্চ স্কোর সহ এন্ট্রি হয়; তাত্ত্বিক সর্বোচ্চ ত্রুটি প্রকারের জন্য 1200 এবং ত্রুটি জেনারেশনের হারের স্থায়িত্বের জন্য 3000 পয়েন্ট being
একটি ড্র হওয়ার সম্ভাব্য ঘটনাতে; বিজয়ী ভোট গণনা দ্বারা নির্ধারিত হবে।
অতিরিক্ত নোট
পরীক্ষা গন্টলেট চালানোর উদ্দেশ্যে, প্রতিটি প্রবেশের মধ্যে রান বা সংকলনের নির্দেশাবলী অন্তর্ভুক্ত করা উচিত।
সমস্ত এন্ট্রি অবশ্যই এক্স ছাড়াই লিনাক্স মেশিনে চালানো উচিত should