Cześć. Muszę zrobić to zadanie a nie mam pojęcia jak się za to zabrać. Punkt kratowy to punkt, którego współrzędne w układzie kartezjańskim są liczbami całkowitymi. Dane jest koło
o środku w początku układu współrzędnych i promieniu r. Znajdź wszystkie punkty kratowe leżące wewnątrz
takiego koła.
0
1
Brutal force:
Dwie pętle po x,y od math.ceil (-r) do math.floor(+r) i sprawdzasz pitagorasem
0
Napisałem coś takiego i jak mogę to przerobić?
def N(r):
ilosc = 0
for x in range(0,r):
for y in range(1,r+1):
if (x*x + y*y) <= r*r:
ilosc = ilosc + 1
ilosc = ilosc * 4 + 1
return ilosc
print("Podaj promien r")
r = float(input())
print(N(r))
2
- Dlaczego odmiennie masz pętlę po X a po Y?
- "znajdź wszystkie punkty" rozumiem nie podać ilość, tylko je wylistować
- Podoba mi się, że nie robisz roboty w mainie, tylko w funkcji
Ja rozumiem, użyć pustej listylist = [ ]
i w ifie dołączać przezappend()
- tę listę potem return
Gotowca ci nie dam, masz pełne wskazówki.
0
Zacznij od Wiki
https://en.m.wikipedia.org/wiki/Gauss_circle_problem
@szybki12111: Naiwnie Ci podał @AnyKtokolwiek, wychodzi z tego taki, paskudny kod:
def N(r):
cnt = 0
for x in range(int(math.ceil(-r)), int(math.floor(r)) + 1):
for y in range(int(math.ceil(-r)), int(math.floor(r)) + 1):
if x * x + y * y <= r * r:
cnt += 1
return cnt
Optymalizować można, szukanie dzielników, faktoryzacja...