Бит четности , является одним из простейших форм контрольной суммы. Во-первых, вы должны выбрать паритет, четный или нечетный. Допустим, мы выбираем даже. Теперь нам нужно сообщение для передачи. Допустим, наше сообщение "Foo". Это записано в двоичном виде как:
01000110 01101111 01101111
Теперь мы посчитаем общее число 1
's там, которое составляет 15. Поскольку 15 - нечетное число, мы должны добавить один дополнительный бит в конец нашего сообщения, и теперь у нас будет четное число битов' on ' , Этот последний добавленный бит известен как «бит четности». Если бы мы выбрали нечетную четность для нашей контрольной суммы, нам пришлось бы добавить дополнительный «0», чтобы число битов оставалось нечетным.
Соревнование:
Вы должны написать программу или функцию, которая определяет правильный бит четности для строки. Ваша программа должна принимать два входа:
Строка,
s
. Это сообщение, на которое будет рассчитана контрольная сумма. Это будет ограничено 95 печатными символами ASCII.Символьная или односимвольная строка
p
, которая будет либоe
для четной четности, либоo
для нечетной четности.
и получить значение truey-falsey, представляющее правильный бит четности. Правда, если это 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
Это Codegolf, поэтому применяются стандартные лазейки, и выигрывает самый короткий ответ в байтах.
Leaderboard
str(int(s, 2)).count('1')
? Нет, я бы не подумал, что это единственная встроенная функция, которая нарушает это правило. Мое редактирование делает это более ясным?
char == single_char_string
. Я также отредактировал это в посте.
o
имеет даже паритет.