Un bit de paridad es una de las formas más simples de suma de verificación. Primero, debes elegir la paridad, par o impar. Digamos que elegimos incluso. Ahora, necesitamos un mensaje para transmitir. Digamos que nuestro mensaje es "Foo". Esto está escrito en binario como:
01000110 01101111 01101111
Ahora, contamos el número total de 1
's allí, que es 15. Dado que 15 es un número impar, debemos agregar un bit extra al final de nuestro mensaje, y ahora tendremos un número par de bits' on ' . Este último bit agregado se conoce como el "bit de paridad". Si hubiéramos elegido una paridad impar para nuestra suma de verificación, tendríamos que agregar un '0' adicional para que el número de bits permanezca impar.
El reto:
Debe escribir un programa o función que determine cuál es el bit de paridad correcto para una cadena. Su programa debe tomar dos entradas:
Una cadena,
s
. Este es el mensaje sobre el que se calculará la suma de verificación. Esto estará restringido a los 95 caracteres ASCII imprimibles.Un carácter o cadena de un solo carácter
p
, que seráe
para paridad par oo
paridad impar.
y produce un valor verdadero-falso que representa el bit de paridad correcto. Verdad si es un 1
, y falsey si es un 0
.
No se permiten las unidades integradas que cuentan el número de bits "encendidos" en una cadena o carácter. Por ejemplo, una función f
que hace esto: f('a') == 3
o f('foo') == 16
está prohibida. Cualquier otra cosa, como la conversión de base, es un juego justo.
Prueba 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
Esto es codegolf, por lo que se aplican las lagunas estándar y gana la respuesta más corta en bytes.
Tabla de clasificación
str(int(s, 2)).count('1')
:? No, no consideraría que se trata de una única función integrada que viola esa regla. ¿Mi edición lo hace más claro?
char == single_char_string
. También lo edité en la publicación.
o
incluso tiene paridad.