Advertisement
kburnik

LOGO - Silba 2012 - Zadaća: zagrade :: Kristijan Burnik

Aug 20th, 2012
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. to podniz :r :s :e
  2. ; vracamo podniz od zadane rijeci, npr. (podniz "abcd 2 3) vraca "bc
  3. localmake "x "
  4. foreach :r [
  5. if and (# >= :s) (# <= :e) [make "x word :x ?]
  6. ]
  7. op :x
  8. end
  9.  
  10. to usporedba :a :b
  11. ; radimo usporedbu segemenata :: ovo nam sluzi za sortiranje segmenata
  12.  
  13. ;;; prvo po dubini silazno
  14. if (first :a ) > ( first :b ) [ op "true ]
  15.  
  16. ;;; zatim po poziciji segmenta u nizu
  17. if and ((first :a ) = ( first :b )) ((item 2 :a ) < (item 2 :b)) [ op "true]
  18.  
  19. op "false
  20. end
  21.  
  22. to zadaca :r
  23. (local "dubina "e "s "segment "segmenti "stog)
  24.  
  25. make "dubina 0
  26. make "stog []
  27. make "segmenti []
  28.  
  29. foreach :r [
  30. ;;; ako smo naisli na otvorenu zagradu, stavljamo njenu poziciju na stog
  31. ;;; povecavamo trenutnu dubinu zagrada
  32. if ? = "|(| [
  33. make "stog lput # :stog
  34. make "dubina :dubina + 1
  35. ]
  36. ;;; ako smo naisli na zatvorenu zagradu, smanjujemo dubinu,
  37. ;;; na vrhu stoga nam je pocetak podniza, a trenutna pozicija je kraj podniza
  38. ;;; trazeni segment se izvlaci pomocu funkcije podniz
  39. ;;; na listu segmenata stavljamo tročlanu podlistu [dubina pozicija_u_nizu vrijednost_segmenta]
  40. if ? = "|)| [
  41. make "dubina :dubina - 1
  42. make "s last :stog
  43. make "stog bl :stog
  44. make "e #
  45. make "segment podniz :r :s :e
  46. make "segmenti lput (list :dubina # :segment) :segmenti
  47. ]
  48. ]
  49.  
  50. ;;; sortiramo sve tročlane podliste (segmente) po kriteriju: dubina silazno, pozicija_u_nizu uzlazno
  51. make "segmenti (sort :segmenti "usporedba)
  52.  
  53. ;;; ispisi samo vrijednost_segmenta po redu
  54. foreach :segmenti [ pr last ? ]
  55. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement