एक समता बिट , चेकसम का सरलतम रूपों में से एक है। पहले, आपको समता को चुनना होगा, सम या विषम। मान लीजिए हम भी उठाते हैं। अब, हमें प्रेषित होने के लिए एक संदेश की आवश्यकता है। मान लीजिए कि हमारा संदेश "फू" है। यह बाइनरी में लिखा है:
01000110 01101111 01101111
अब, हम वहां कुल संख्या की गिनती करते हैं 1
, जो 15. है। 15 चूंकि एक विषम संख्या है, हमें अपने संदेश के अंत में एक अतिरिक्त बिट जोड़ना होगा, और अब हमारे पास बिट्स पर एक समान संख्या होगी। । यह अंतिम जोड़ा बिट "समता बिट" के रूप में जाना जाता है। यदि हमने अपने चेकसम के लिए एक विषम समता को चुना है, तो हमें एक अतिरिक्त '0' जोड़ना होगा ताकि बिट्स की संख्या विषम बनी रहे।
चुनौती:
आपको एक प्रोग्राम या फ़ंक्शन लिखना होगा जो यह निर्धारित करता है कि स्ट्रिंग के लिए सही समानता क्या है। आपके प्रोग्राम को दो इनपुट लेने होंगे:
एक तार
s
,। यह संदेश है कि चेकसम की गणना की जाएगी। यह 95 प्रिंट करने योग्य ASCII वर्णों तक सीमित रहेगा।एक चरित्र या एकल चरित्र स्ट्रिंग
p
, जो या तोe
समता के लिए होगा , याo
विषम समता के लिए।
और सही समता बिट का प्रतिनिधित्व करने वाले एक सत्य -गलत मूल्य का उत्पादन करते हैं। सत्य अगर यह है 1
, और यदि यह है तो गलत है 0
।
किसी स्ट्रिंग या वर्ण में "ऑन" बिट्स की संख्या गिनने वाले बिल्डरों को अनुमति नहीं है। उदाहरण के लिए, एक फ़ंक्शन f
जो ऐसा करता है: f('a') == 3
या f('foo') == 16
प्रतिबंधित है। आधार रूपांतरण जैसे कुछ भी, निष्पक्ष खेल है।
परीक्षण IO:
(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
समता भी है।