[NAISP] 4. laboratorijska vježba - 2021/2022
fer999
koji zad je u 12 na labosu?
Bisolvon
fer999 Imam ja sada u 14, to je prvi termin danas
Bisolvon
Ovo mi je sada doslo u 14.
WP_Deva
Bisolvon došao mi je identičan čini mi se
Grga
Bisolvon isto mi je to došlo ako netko zna di ima pseudokod ili implementacija takvog neceg negdje neka javi ako nije greda
Kasperinac
Svudec dobiš kod
WP_Deva
from statistics import median
from typing import Tuple, List
from collections import namedtuple
class Point(namedtuple('Point', ['x', 'y'])):
__slots__ = ()
def __str__(self) -> str:
return f'({self.x},{self.y})'
def __repr__(self) -> str:
return self.__str__()
class Node:
def __init__(self, point: Point):
self.p = point
self.med = 0.0
self.left = None
self.right = None
def __str__(self):
return str(self.p)
class PriorityTree:
def __init__(self, points: List[Point]) -> None:
if not points:
self.root = None
else:
points = list(sorted(points, key=lambda p: -p[1]))
self.root = self._create(points)
def _create(self, points: List[Point]) -> Node:
if not points:
return None
first = points[0]
n = Node(first)
n.med = first[0]
del points[0]
if points:
med = median(map(lambda it: it[0], points))
n.med = med
Pl = list(filter(lambda it: it[0] <= med, points))
if Pl:
n.left = self._create(Pl)
Pr = list(filter(lambda it: it[0] > med, points))
if Pr:
n.right = self._create(Pr)
return n
def findSplitNode(self, x: Tuple[float, float]) -> Tuple[Node, list]:
x_left, x_right = x
n, path = self.root, []
while n is not None and (x_left > n.med or x_right < n.med):
p = n.p
path.append(p)
if x_right < n.med:
n = n.left
else:
n = n.right
return n, path
def queryPrioritySubtree(self, n: Node, y: float) -> list:
res = []
if n is not None and n.p.y >= y:
res.append(n.p)
res = res + self.queryPrioritySubtree(n.left, y)
res = res + self.queryPrioritySubtree(n.right, y)
return res
ovo ti je vec implentirano
AntonioB25
Grga
Mislim da ima nešto slično u onim njihovim kodovima: PriorityTree
WP_Deva
def query(self,qx2,qy1,qy2):
rv=[]
nsplit,rn=self._findSplittingNode(qy1,qy2)
for n in rn:
if n.p[0]<=qx2 and isInRange(qy1,n.p[1],qy2): rv.append(n.p)
if nsplit is None: return rv
if nsplit.leftChild is None and nsplit.rightChild is None:
rv=rv+self._queryPrioritySubtree(nsplit,qx2)
else:
if nsplit.p[0]<=qx2 and isInRange(qy1,nsplit.p[1],qy2): rv.append(nsplit.p)
n=nsplit.leftChild
while n is not None and n.p[0]<=qx2:
if isInRange(qy1,n.p[1],qy2): rv.append(n.p)
if isInRange(qy1,n.y,qy2):
rv=rv+self._queryPrioritySubtree(n.rightChild,qx2)
n=n.leftChild
else: n=n.rightChild
n=nsplit.rightChild
while n is not None and n.p[0]<=qx2:
if isInRange(qy1,n.p[1],qy2): rv.append(n.p)
if isInRange(qy1,n.y,qy2):
rv=rv+self._queryPrioritySubtree(n.leftChild,qx2)
n=n.rightChild
else: n=n.leftChild
return rv
oni u svojim primjerima daju implementirano za x, a nama treba y
Sulejman
IdeGas jel netko zna kaj bi znacile ove skracenice rv, rn
WickyWinslow
Greška u zadatku sa stablom prioriteta.
Heklijo
Sulejman
Koliko sam ja skuzio, rv je lista točaka koje su u prozoru, rn predstavlja trenutni čvor
123
Ako koja dobra duša u 16:00 može napisat je li došao isti zadatak, zahvaljujem
Asdf
zadatak u 4 , mislim da je isti
MrPeanutButter
Asdf isti zad dns u 8:00
steker
sta bi ovo bilo lol
[obrisani korisnik]
steker provjeravaš jel objekt node manji od drugog objekta node, a pretpostavljam da želiš njihove vrijednosti
IdemNecu
steker Kolega niste pozali na Node .p koji vam daje point nego racunate s Nodeovima
Erpeg
steker meni je to isto bilo iako sam pozivao .p.x il kak vec ide. ugl nisam odgonetnuo zasto
dinosaur1
Kikyy99
dinosaur1 Kako se rjesavaju ovi zadaci na blicu sa simpleksima? Msm ima 10 min za rjesavanje toga, jel to ko ono ubaciti u online simplex kalkulator zadatak ili ima neka fora? Skripta i preze su kriminalne
steker
Erpeg msm da se trebala stvorit nova tocka od toga, jer ga sjebe ovaj string, znam da je padalo na jos nekim testovima iako je tocan bio ispis samo je jedno bilo tocka drugo string (ili tako nesto ugl ne sjecam se)