zad 4 #32

Closed
s426285 wants to merge 9 commits from s426285/DALGLI0:zad_4 into master
First-time contributor
No description provided.
Author
First-time contributor

Kompilacja:
python3 hw4.py 3 [1,1,2,2]

Kompilacja: ``` python3 hw4.py 3 [1,1,2,2] ```
Owner

ok, dobrze!;

Uwagi:

  1. Proszę zwrócić uwagę, że zastosowana metoda znajdowania zero-divisors (jako dopełnienie zbioru dzielników zera) nie jest poprawna poza pierścieniem Z/n[x]. Np. w Z[x] samo x nie jest odwracalnym elementem, ale nie jest również dzielnikiem zera.

  2. reminders (może lepiej elements??) jest niepotrzebnie skomplikowana:

  • tak naprawdę chodzi o wygenerowanie list współczynników które mają być < self.m. product z biblioteki itertools, zrobi co potrzebujemy (o ile klasa Polynomial dobrze się obchodzi z zerami przy współczynnikach wiodących)
  • nie ma potrzeby przechowywać całej listy elementów pierścienia (o ile nie planujemy jej użyć po raz kolejny). Chyba najlepszym rozwiązaniem jest generator. Proponuję coś takiego (metodę Polynomial.degree() można łatwo zaimplementować, skoro Polynomial.normalize() już mamy)
from itertools import product
...

class QuotientRing():
    ...

    def elements(self):
        coeffs = [i for i in range(self.mod)]    
        return (Polynomial(coeffs.reverse(), self.m) for coeffs in 
            product(*[coeffs for i in range(self.f.degree())]
    
  1. reversiblesinvertibles ;-)
ok, dobrze!; Uwagi: 1. Proszę zwrócić uwagę, że zastosowana metoda znajdowania zero-divisors (jako dopełnienie zbioru dzielników zera) nie jest poprawna poza pierścieniem `Z/n[x]`. Np. w `Z[x]` samo `x` nie jest odwracalnym elementem, ale nie jest również dzielnikiem zera. 2. `reminders` (może lepiej `elements`??) jest niepotrzebnie skomplikowana: * tak naprawdę chodzi o wygenerowanie list współczynników które mają być `< self.m`. `product` z biblioteki `itertools`, zrobi co potrzebujemy (o ile klasa `Polynomial` dobrze się obchodzi z zerami przy współczynnikach wiodących) * nie ma potrzeby przechowywać całej listy elementów pierścienia (o ile nie planujemy jej użyć po raz kolejny). Chyba najlepszym rozwiązaniem jest generator. Proponuję coś takiego (metodę `Polynomial.degree()` można łatwo zaimplementować, skoro `Polynomial.normalize()` już mamy) ```python from itertools import product ... class QuotientRing(): ... def elements(self): coeffs = [i for i in range(self.mod)] return (Polynomial(coeffs.reverse(), self.m) for coeffs in product(*[coeffs for i in range(self.f.degree())] ``` 3. `reversibles` → `invertibles` ;-)
kalmar closed this pull request 2018-07-01 00:44:55 +02:00
Owner

Proszę porównać Pana metodę remainders z https://git.wmi.amu.edu.pl/kalmar/DALGLI0/pulls/34/files#diff-9e963badc72c22797c4807a6f59ff1cbf28f798R15.
Proszę wysnuć wnioski.

Dopóki Panowie nie uzgodnią kto od kogo, moje stanowisko jest takie, że widzę się z Panami na poprawce. A szkoda, bo było nieźle...

Proszę porównać Pana metodę `remainders` z https://git.wmi.amu.edu.pl/kalmar/DALGLI0/pulls/34/files#diff-9e963badc72c22797c4807a6f59ff1cbf28f798R15. Proszę wysnuć wnioski. Dopóki Panowie nie uzgodnią kto od kogo, moje stanowisko jest takie, że widzę się z Panami na poprawce. A szkoda, bo było nieźle...

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: kalmar/DALGLI0#32
No description provided.