একটি প্যারিটি বিট , একটি চেকসাম সহজ ফর্ম মধ্যে অন্যতম। প্রথমত, আপনাকে সমতা বা বিজোড় বাছাই করতে হবে। ধরা যাক আমরা এমনকি বাছাই। এখন, আমাদের প্রেরণের জন্য একটি বার্তা প্রয়োজন need ধরা যাক আমাদের বার্তাটি "ফু"। এটি বাইনারি হিসাবে লিখিত হয়:
01000110 01101111 01101111
এখন, আমরা সেখানে মোট সংখ্যা গণনা 1
করি, যা 15 হয় Since যেহেতু 15 একটি বিজোড় সংখ্যা, তাই আমাদের বার্তার শেষে আমাদের আরও একটি বিট যোগ করতে হবে, এবং এখন আমাদের 'অন' বিটগুলির একটি আরও সংখ্যা থাকবে । এই শেষ যুক্ত বিট "প্যারিটি বিট" হিসাবে পরিচিত। আমরা যদি আমাদের চেকসামের জন্য একটি বিজোড় সামঞ্জস্য বাছাই করে থাকি তবে আমাদের একটি অতিরিক্ত '0' যুক্ত করতে হবে যাতে বিটের সংখ্যাটি বিজোড় থেকে যায়।
চ্যালেঞ্জ:
আপনার অবশ্যই একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা একটি স্ট্রিংয়ের জন্য সঠিক প্যারিটি বিট কী তা নির্ধারণ করে। আপনার প্রোগ্রামটি অবশ্যই দুটি ইনপুট গ্রহণ করবে:
একটি স্ট্রিং
s
,। এটি সেই বার্তা যা চেকসামটি গণনা করা হবে। এটি 95 মুদ্রণযোগ্য এএসসিআইআই অক্ষরগুলিতে সীমাবদ্ধ থাকবে।একটি চরিত্র বা একক চরিত্রের স্ট্রিং
p
, তা হয়e
সমতুল্যতারo
জন্য বা বিজোড় সমতা জন্য।
এবং সঠিক প্যারিটি বিটের প্রতিনিধিত্ব করে একটি সত্যবাদী-মিথ্যা মান উত্পন্ন করে । সত্য যদি এটি হয় তবে 1
, এবং মিথ্যা যদি এটি হয় 0
।
স্ট্রিং বা চরিত্রের "অন" বিটের সংখ্যা গণনা করে এমন বিল্টিনগুলি অনুমোদিত নয়। উদাহরণস্বরূপ, এমন একটি ফাংশন f
যা এটি করে: f('a') == 3
বা f('foo') == 16
নিষিদ্ধ। বেস রূপান্তর হিসাবে অন্য যে কোনও কিছু হল ন্যায্য খেলা।
পরীক্ষার আইও:
(without the quotes)
s: "0"
p: 'e'
output: 0
s: "Foo"
p: 'e'
output: 1
s: "Hello World!"
p: 'o'
output: 0
s: "Alex is right"
p: 'e'
output: 1
s: "Programming Puzzles and Code-Golf"
p: 'e'
output: 0
s: "Programming Puzzles and Code-Golf"
p: 'o'
output: 1
এটি কোডগল্ফ, সুতরাং স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তর।
লিডারবোর্ড
str(int(s, 2)).count('1')
? না, আমি এটিকে কোনও একক অন্তর্নির্মিত ফাংশন হিসাবে বিবেচনা করব না যা এই নিয়ম লঙ্ঘন করে। আমার সম্পাদনা কি এটিকে আরও স্পষ্ট করে তোলে?
char == single_char_string
। আমি পোস্টে এটি সম্পাদনা করেছি।
o
এমনকি সমতা আছে।