kburnik

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

Aug 20th, 2012
62
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×