Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.85 KB | None | 0 0
  1. buscaEmProfundidadeDe: origem para: destino jaVisitados: visitados
  2.  
  3.     |cx mx cy my|
  4.  
  5.     origem = destino  ifTrue: [
  6.       ^self
  7.     ].
  8.  
  9.     visitados add: origem.
  10.     cx := origem at: 1.
  11.     mx := origem at: 2.
  12.     cy := 3 - cx.
  13.     my := 3 - mx.
  14.     1 to: 2 do: [:t|
  15.       (cx >= t and: [my = 0 or: [my - cy >= t]]) ifTrue: [
  16.          self travessiaDeCanibais: t de: origem para: destino
  17.             jaVisitados: visitados
  18.       ].
  19.       (mx >= t and: [(mx - t = 0) | (mx - t >= cx)
  20.             and: [(cy = 0) | (cy - my <= t)]]) ifTrue: [
  21.          self travessiaDeMissionarios: t de: origem para: destino
  22.             jaVisitados: visitados
  23.       ].
  24.     ].
  25.     (cx >= 1 and: [mx >= 1 and: [(cy = 0) | (cy <= my)]]) ifTrue: [
  26.        self travessiaDeUmCanibalUmMissionarioDe: origem para: destino
  27.             jaVisitados: visitados
  28.     ]
  29. travessiaDeCanibais: t de: origem para: destino
  30.         jaVisitados: visitados
  31.  
  32.         |cx mx cy my meio margemDoBarco|
  33.  
  34.         cx := origem at: 1.
  35.         mx := origem at: 2.
  36.         cy := 3 - cx.
  37.         my := 3 - mx.
  38.  
  39.         meio := origem copy.
  40.         meio at: 1 put: cy + t.
  41.         meio at: 2 put: my.
  42.         (origem at: 3) = #direita ifTrue: [
  43.                meio at: 3 put: #esquerda
  44.         ] ifFalse: [
  45.                meio at: 3 put: #direita
  46.         ].
  47.  
  48.         grafo conecta: origem a: meio rotulo: (Array with: t with: 0).
  49.         (visitados includes: meio) ifFalse: [
  50.                 self buscaEmProfundidadeDe: meio para: destino  
  51.             jaVisitados: visitados.
  52.         ]
  53. travessiaDeMissionarios: t de: origem para: destino
  54.         jaVisitados: visitados
  55.  
  56.         |cx mx cy my meio margemDoBarco|
  57.  
  58.         cx := origem at: 1.
  59.         mx := origem at: 2.
  60.         cy := 3 - cx.
  61.         my := 3 - mx.
  62.  
  63.         meio := origem copy.
  64.         meio at: 1 put: cy.
  65.         meio at: 2 put: my + t.
  66.         (origem at: 3) = #direita ifTrue: [
  67.                meio at: 3 put: #esquerda
  68.         ] ifFalse: [
  69.                meio at: 3 put: #direita
  70.         ].
  71.  
  72.         grafo conecta: origem a: meio rotulo: (Array with: 0 with: t).
  73.         (visitados includes: meio) ifFalse: [
  74.                 self buscaEmProfundidadeDe: meio para: destino  
  75.             jaVisitados: visitados.
  76.         ]
  77. travessiaDeUmCanibalUmMissionarioDe: origem para: destino
  78.         jaVisitados: visitados
  79.  
  80.         |cx mx cy my meio margemDoBarco|
  81.  
  82.         cx := origem at: 1.
  83.         mx := origem at: 2.
  84.         cy := 3 - cx.
  85.         my := 3 - mx.
  86.  
  87.         meio := origem copy.
  88.         meio at: 1 put: cy + 1.
  89.         meio at: 2 put: my + 1.
  90.         (origem at: 3) = #direita ifTrue: [
  91.                meio at: 3 put: #esquerda
  92.         ] ifFalse: [
  93.                meio at: 3 put: #direita
  94.         ].
  95.  
  96.         grafo conecta: origem a: meio rotulo: (Array with: 1 with: 1).
  97.         (visitados includes: meio) ifFalse: [
  98.                 self buscaEmProfundidadeDe: meio para: destino  
  99.                 jaVisitados: visitados.
  100.         ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement