Bit parzystości , jest jedną z najprostszych postaci sumy kontrolnej. Najpierw musisz wybrać parzystość, parzystą lub nieparzystą. Powiedzmy, że wybieramy nawet. Teraz potrzebujemy wiadomości do przesłania. Powiedzmy, że nasza wiadomość to „Foo”. Jest to zapisane binarnie jako:
01000110 01101111 01101111
Teraz liczymy całkowitą liczbę 1
tam, czyli 15. Ponieważ 15 jest liczbą nieparzystą, musimy dodać jeden dodatkowy bit na końcu naszej wiadomości, a teraz będziemy mieć parzystą liczbę bitów włączonych . Ten ostatni dodany bit jest znany jako „bit parzystości”. Gdybyśmy wybrali nieparzystą parzystość dla naszej sumy kontrolnej, musielibyśmy dodać dodatkowe „0”, aby liczba bitów pozostała nieparzysta.
Wyzwanie:
Musisz napisać program lub funkcję, która określa poprawny bit parzystości dla łańcucha. Twój program musi przyjmować dwa dane wejściowe:
Ciąg,
s
. Jest to komunikat, na podstawie którego zostanie obliczona suma kontrolna. Będzie to ograniczone do 95 drukowalnych znaków ASCII.Znak lub ciąg znaków składający
p
sięe
z parzystej lubo
nieparzystej parzystości.
i wygeneruj wartość true-falsey reprezentującą właściwy bit parzystości. Prawda, jeśli to jest 1
, i falsey, jeśli to jest 0
.
Wbudowane liczące liczbę „włączonych” bitów w ciągu lub znaku są niedozwolone. Na przykład funkcja f
, która to robi: f('a') == 3
lub f('foo') == 16
jest zbanowana. Wszystko inne, na przykład konwersja bazy, jest uczciwą grą.
Test 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
Jest to kodegolf, więc obowiązują standardowe luki i wygrywa najkrótsza odpowiedź w bajtach.
Tabela liderów
str(int(s, 2)).count('1')
? Nie, nie uważałbym tego za pojedynczą wbudowaną funkcję, która narusza tę zasadę. Czy moja edycja jest bardziej przejrzysta?
char == single_char_string
. Zredagowałem to również w poście.
o
ma nawet parzystość.