Một bit chẵn lẻ , là một trong những hình thức đơn giản nhất của tổng kiểm tra. Đầu tiên, bạn phải chọn chẵn lẻ, chẵn hoặc lẻ. Hãy nói rằng chúng tôi chọn thậm chí. Bây giờ, chúng ta cần một thông điệp để truyền tải. Hãy nói rằng thông điệp của chúng tôi là "Foo". Điều này được viết dưới dạng nhị phân như:
01000110 01101111 01101111
Bây giờ, chúng tôi đếm tổng số số 1
trong đó là 15. Vì 15 là số lẻ, chúng tôi phải thêm một bit vào cuối tin nhắn và bây giờ chúng tôi sẽ có số bit 'on' chẵn . Bit được thêm vào cuối cùng này được gọi là "bit chẵn lẻ". Nếu chúng tôi đã chọn một mức chẵn lẻ cho tổng kiểm tra của mình, chúng tôi sẽ phải thêm một '0' để số lượng bit trên vẫn còn lẻ.
Các thách thức:
Bạn phải viết một chương trình hoặc hàm xác định bit chẵn lẻ chính xác cho chuỗi là gì. Chương trình của bạn phải có hai đầu vào:
Một chuỗi ,
s
. Đây là thông báo mà tổng kiểm tra sẽ được tính trên. Điều này sẽ được giới hạn ở 95 ký tự ASCII có thể in được.Một ký tự hoặc chuỗi ký tự đơn
p
, sẽ làe
chẵn lẻ hoặco
chẵn lẻ.
và tạo ra một giá trị trung thực-falsey đại diện cho bit chẵn lẻ chính xác. Sự thật nếu nó là một 1
, và falsey nếu nó là một 0
.
Không được phép xây dựng các số đếm "bit" trong chuỗi hoặc ký tự. Ví dụ, một chức năng f
thực hiện điều này: f('a') == 3
hoặc f('foo') == 16
bị cấm. Bất cứ điều gì khác, chẳng hạn như chuyển đổi cơ sở, là trò chơi công bằng.
Kiểm tra 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
Đây là codegolf, vì vậy các sơ hở tiêu chuẩn được áp dụng và câu trả lời ngắn nhất tính theo byte sẽ thắng.
Bảng xếp hạng
str(int(s, 2)).count('1')
? Không, tôi sẽ không xem xét rằng để trở thành một đơn chức năng được xây dựng trong đó vi phạm quy tắc đó. Liệu chỉnh sửa của tôi làm cho nó rõ ràng hơn?
char == single_char_string
. Tôi cũng chỉnh sửa nó vào bài viết.
o
thậm chí có sự tương đương.