quintopia opublikowała tutaj wyzwanie obliczenia współczynników wielomianowych (stamtąd tekst tutaj jest kopiowany). Istnieje zabawny algorytm do obliczania współczynników wielomianowych mod 2.
Biorąc pod uwagę listę liczb, k 1 , k 2 , ..., k m , wyprowadzamy pozostałość współczynnika wielomianowego:
ograniczonej mod 2. Poniższy algorytm robi to skutecznie: dla każdego k I , obliczyć binarny ekspansję k ja , to znaczy znaleźć się ij tak, że każda ij jest albo 1 albo 0 i
Jeżeli istnieje j, tak że RJ = a sj = 1 dla R ≠ s, asocjowany mod 2 wielomianu współczynnik wynosi 0, inaczej mod 2 wielomianu współczynnik wynosi 1.
Zadanie
Napisz program lub funkcję, która pobierze m liczb, k 1 , k 2 , ..., k m , i wyświetli lub zwróci odpowiedni współczynnik wielomianowy. W razie potrzeby twój program może opcjonalnie potraktować m jako dodatkowy argument.
Liczby te mogą być wprowadzane w dowolnym formacie, który nam się podoba, na przykład pogrupowane w listy lub zakodowane jako jednoargumentowe lub cokolwiek innego, o ile kod oblicza rzeczywiste obliczenie współczynnika wielomianowego, a nie proces kodowania.
Wyjściem może być dowolna prawdziwa wartość, jeśli współczynnik wielomianowy jest nieparzysty, i dowolna wartość falsey, jeśli współczynnik wielomianowy jest parzysty.
Wbudowane funkcje obliczania współczynnika wielomianowego są niedozwolone.
Obowiązują standardowe luki.
Punktacja
Oto kod golfowy: wygrywa najkrótsze rozwiązanie w bajtach.
Przykłady:
Aby znaleźć wielomianowy współczynnik 7, 16 i 1000, binarnie rozwijamy każdy z nich:
Ponieważ żadna kolumna nie ma więcej niż jednego 1, współczynnik wielomianowy jest nieparzysty i dlatego powinniśmy otrzymać coś prawdziwego.
Aby znaleźć wielomianowy współczynnik 7, 16 i 76, binarnie rozwijamy każdy z nich:
Ponieważ zarówno 76, jak i 7 mają binarną ekspansję 4, współczynnik wielomianowy jest parzysty, więc otrzymujemy wartość falsey.
Przypadki testowe:
Input: [2, 0, 1]
Output: Truthy
Input: [5,4,3,2,1]
Output: Falsey
Input: [1,2,4,8,16]
Output: Truthy
Input: [7,16,76]
Output: Falsey
Input: [7,16,1000]
Output: Truthy
Input: [545, 1044, 266, 2240]
Output: Truthy
Input: [1282, 2068, 137, 584]
Output: Falsey
Input: [274728976, 546308480, 67272744, 135004166, 16790592, 33636865]
Output: Truthy
Input: [134285315, 33849872, 553780288, 544928, 4202764, 345243648]
Output: Falsey
==
dla równości mogłoby uratować bajt, gdyby prawda i Falsey mogły zostać odrzucone.