Sebuah bit paritas , adalah salah satu bentuk yang paling sederhana dari checksum. Pertama, Anda harus memilih paritas, genap atau ganjil. Katakanlah kita memilih genap. Sekarang, kami membutuhkan pesan untuk dikirim. Katakanlah pesan kami adalah "Foo". Ini ditulis dalam biner sebagai:
01000110 01101111 01101111
Sekarang, kita menghitung jumlah total 1
di sana, yaitu 15. Karena 15 adalah angka ganjil, kita harus menambahkan satu bit tambahan di akhir pesan kita, dan sekarang kita akan memiliki jumlah genap 'on' . Bit yang ditambahkan terakhir ini dikenal sebagai "bit paritas". Jika kami memilih paritas ganjil untuk checksum kami, kami harus menambahkan ekstra '0' sehingga jumlah bit on tetap aneh.
Tantangan:
Anda harus menulis program atau fungsi yang menentukan bit paritas yang benar untuk sebuah string. Program Anda harus mengambil dua input:
Sebuah string
s
,. Ini adalah pesan yang akan dihitung oleh checksum. Ini akan dibatasi untuk 95 karakter ASCII yang dapat dicetak.Karakter atau string karakter tunggal
p
, yang akane
untuk paritas genap, atauo
untuk paritas ganjil.
dan menghasilkan nilai true-falsey yang mewakili bit paritas yang benar. Sejujurnya jika itu adalah 1
, dan palsu jika itu adalah 0
.
Builtin yang menghitung jumlah bit "on" dalam string atau karakter tidak diperbolehkan. Misalnya, fungsi f
yang melakukan ini: f('a') == 3
atau f('foo') == 16
diblokir. Hal lain, seperti konversi basis, adalah permainan yang adil.
Tes 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
Ini codegolf, jadi celah standar berlaku, dan jawaban tersingkat dalam byte menang.
Papan peringkat
str(int(s, 2)).count('1')
? Tidak, saya tidak akan menganggap itu sebagai fungsi builtin tunggal yang melanggar aturan itu. Apakah hasil edit saya membuatnya lebih jelas?
char == single_char_string
. Saya juga mengeditnya di posting.
o
bahkan paritas.