| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- \subsection{Campo}
- % los aux del tipo campo
- $igualdadCampo(c,c':Campo):Bool= dimensiones(c)==dimensiones(c') \wedge (\forall i \leftarrow [0..fst(dimensionesCampo(c)),$\\ $j \leftarrow [0..snd(dimensionesCampo(c)) contenido(c,i,j)==contenido(c',i,j)) $
- parcelasCampo(c:Campo):$[(\ent , \ent)]$= \newline [(x,y) \textbar x $\leftarrow$ [0..prs(dimensiones(s))),y $\leftarrow$ [0..snd(dimensiones(s)))]
- \subsection{Drone}
- % los aux del tipo drone
- $igualdadDrone(d,d':Drone):Bool= id(d)==id(d') \wedge bateria(d)==bateria(d') \wedge enVuelo(d)==enVuelo(d') \wedge vueloRealizado(d)==vueloRealizado(d') \wedge \newline posicionActual(d)==posicionActual(d') \wedge mismos(productosDisponibles(d),productosDisponibles(d'))$
- \newline
- \newline
- $dronesIgualesSinPosicion(d,d':Drone):Bool= id(d)==id(d') \wedge bateria(d)==bateria(d') \wedge enVuelo(d)==enVuelo(d') \wedge vueloRealizado(d)==vueloRealizado(d') \wedge mismos(productosDisponibles(d),productosDisponibles(d'))$
- \newline
- \newline
- mismosDrones(ds,xs:[Drone]):Bool= \textbar ds \textbar == \textbar xs \textbar $ \wedge ( \forall d \leftarrow ds)cantidadAparicionesD(d,ds)==cantidadAperecionesD(d,xs)$
- \newline
- \newline
- $cantidadAparicionesD(d:Drones,ds:[Drones])=$\textbar $[x $\textbar$ x \leftarrow ds, iguadadDrone(x,d)]$\textbar
- %│[x │ x\leftarrow ds, iguadadDrone(x,d)]│$
- \newline
- \newline
- escalera1(d:Drone):Bool= ($\forall i \leftarrow$ [0..\textbar vueloRealizado(d)\textbar -1) $prm(vueloRealizado(d)_{i}) \leq prm(vueloRealizado(d)_{i+1}$)\newline if \ $prm(vueloRealizado(d)_{i})== prm(vueloRealizado(d)_{i+1}$\ then $snd(vueloRealizado(d)_{i})+1== snd(vueloRealizado(d)_{i+1}$\ else $snd(vueloRealizado(d)_{i})== snd(vueloRealizado(d)_{i+1}$
- \newline
- \newline
- escalera2(d:Drone):Bool= ($\forall i \leftarrow$ [0..\textbar vueloRealizado(d)\textbar -1) $prm(vueloRealizado(d)_{i}) \geq prm(vueloRealizado(d)_{i+1}$)\newline if \ $prm(vueloRealizado(d)_{i})== prm(vueloRealizado(d)_{i+1}$\ then $snd(vueloRealizado(d)_{i})-1== snd(vueloRealizado(d)_{i+1})$\ else $snd(vueloRealizado(d)_{i})== snd(vueloRealizado(d)_{i+1}$
- \newline
- \newline
- escalera3(d:Drone):Bool= ($\forall i \leftarrow$ [0..\textbar vueloRealizado(d)\textbar -1) $prm(vueloRealizado(d)_{i}) \leq prm(vueloRealizado(d)_{i+1}$)\newline if \ $prm(vueloRealizado(d)_{i})== prm(vueloRealizado(d)_{i+1}$\ then $snd(vueloRealizado(d)_{i})-1== snd(vueloRealizado(d)_{i+1})$\ else $snd(vueloRealizado(d)_{i})== snd(vueloRealizado(d)_{i+1}$
- \newline
- \newline
- escalera4(d:Drone):Bool= ($\forall i \leftarrow$ [0..\textbar vueloRealizado(d)\textbar -1) $prm(vueloRealizado(d)_{i}) \geq prm(vueloRealizado(d)_{i+1}$)\newline if \ $prm(vueloRealizado(d)_{i})== prm(vueloRealizado(d)_{i+1}$\ then $snd(vueloRealizado(d)_{i})+1== snd(vueloRealizado(d)_{i+1})$\ else $snd(vueloRealizado(d)_{i})== snd(vueloRealizado(d)_{i+1}$
- \newline
- \newline
- parcelasConChoques(ds:[Drones]):[(($\ent,\ent),\ent$)]= \newline [(p,cantidadDronesenMomento(p,i,ds))\textbar d $\leftarrow$ ds, i $\leftarrow$ [0..\textbar vueloRealizado \textbar), p $\leftarrow$ vueloRealizado(d), \\ cantidadDronesEnMomento(p,i,ds) $\geq$ 2]
- \newline
- \newline
- cantidadDronesenMomento($p:(\ent, \ent),i:\ent,ds:[Drones]): \ent$ = \\ \textbar [p \textbar d $\leftarrow$ ds, $vueloRecorrido(d)_{i} $== p] \textbar
- \newline
- \newline
- quitarRepetidos(xs:[($\ent,\ent),\ent$)])=[$x_{i}$ \textbar i $\leftarrow$ [0.. \textbar xs \textbar), ($\forall$ j $\leftarrow$ [0.. \textbar xs \textbar), i $\leq$ j)$x_{i}$ $\lneq$ $x_{j}$]
- \newline
- \newline
- estaOrdenadoPorLaSugundaCoordenada(xs:[($\ent,\ent),\ent$)]):Bool = ($\forall$ x $\leftarrow$ xs)($\forall$ i,j $\leftarrow$ [0.. \textbar xs \textbar), i$\leq$j)$snd(x_{i})$ $\leq$ $snd(x_{j})$ $\vee$ $snd(x_{i})$ $\geq$ $snd(x_{j})$
- \subsection{Sistema}
- $parcelasAdyacentes(s:Sistema,i: \ent , j: \ent)): [(\ent , \ent)]$ = [p \textbar p $\leftarrow$ [(i+1,j), (i-1,j), (i,j+1),(i,j-1)], \newline enRango(dimensiones(campo(s)),prs(p),snd(p))]
- parcelaAdyacenteConPlaga(s:Sistema, i,j: $\ent$): Bool = $(\forall p \leftarrow parcelasAdyacentes(s,i,j), \newline contenido(campo(s),prs(p),snd(p))==Cultivo)$ estadoDelCultivo(s,prs(p),snd(p))==ConMaleza
- algunAdyacenteConPlaga(s:Sistema,i,j:$\ent$):Bool = $(\exists p \leftarrow parcelasAdyacentes(s,i,j),\newline contenido(campo(s),prs(p),snd(p))==Cultivo)$ estadoDelCultivo(s,prs(p),snd(p))==ConMaleza
- soloUnDrone(s:Sistema,p:$(\ent , \ent)$):Bool= \textbar [d \textbar d $\leftarrow$ enjambreDrones(s), posicionActual(d) == p ]\textbar == 1
- estaAdyacenteAlGranero(s:Sistema,d:Drone):Bool = \newline ($\exists$ (i,j) $\leftarrow$ parcelasAdyacentes(s,prs(posicionActual(d)),snd(posicionAlcual(s))))
- enRango(dimensiones(campo(s)),i,j) \newline $\wedge$ contenido(campo(s),i,j) $\neq$ Granero
- parcelaAdyacenteAlGraneroLibre(s:Sistema):Bool= \newline
- ($\exists$ (i,j),(n,m) $\leftarrow$ parcelasCampo(campo(s)))contenido(campo(s),i,j) $\neq$ Granero $\wedge$ contenido(campo(s),n,m)==Granero $\wedge$ (n,m) $\in$ parcelasAdyacentes(i,j)
|