Um bit de paridade , é uma das formas mais simples de uma soma de verificação. Primeiro, você deve escolher a paridade, par ou ímpar. Digamos que escolhemos par. Agora, precisamos de uma mensagem para transmitir. Digamos que nossa mensagem seja "Foo". Isso está escrito em binário como:
01000110 01101111 01101111
Agora, contamos o número total de 1's' lá, que é 15. Como 15 é um número ímpar, devemos adicionar um bit extra ao final de nossa mensagem e agora teremos um número par de bits 'on' . Este último bit adicionado é conhecido como "bit de paridade". Se tivéssemos escolhido uma paridade ímpar para nossa soma de verificação, teríamos que adicionar um '0' extra para que o número de bits permanecesse ímpar.
O desafio:
Você deve escrever um programa ou função que determine qual é o bit de paridade correto para uma string. Seu programa deve receber duas entradas:
Uma corda
s. Essa é a mensagem na qual a soma de verificação será calculada. Isso será restrito aos 95 caracteres imprimíveis ASCII.Um caractere ou sequência de caracteres única
p, que seráeparidade par ouoparidade ímpar.
e produza um valor truthy-falsey representando o bit de paridade correto. Verdadeiramente se for um 1, e falsey se for um 0.
Construções internas que contam o número de bits "ativados" em uma sequência ou caractere não são permitidas. Por exemplo, uma função fque faz isso: f('a') == 3ou f('foo') == 16é banida. Qualquer outra coisa, como a conversão de base, é um jogo justo.
Teste de E / S:
(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
Este é um codegolf, então as brechas padrão se aplicam e a resposta mais curta em bytes vence.
Entre os melhores
str(int(s, 2)).count('1'):? Não, eu não consideraria essa uma única função interna que viola essa regra. Minha edição deixa mais claro?
char == single_char_string. Eu também editei isso no post.
otem até paridade.