PasteRack.org
Paste # 12251
2024-09-23 00:40:20

Fork as a new paste.

Paste viewed 151 times.


Embed:

  1. #lang racket
  2.  
  3. ;; INSERT HEADER
  4.  
  5. ;; Note: Indentation for this file may be slightly off
  6. ;; since main laptop broke
  7. ;; so online compiler was used
  8.  
  9. (define StJohns 1)
  10. (define Charlottetown 2)
  11. (define Halifax 3)
  12. (define Fredericton 4)
  13. (define QuebecCity 5)
  14. (define Toronto 6)
  15. (define Waterloo 7)
  16. (define SaultSteMarie 8)
  17. (define ThunderBay 9)
  18. (define Winnipeg 10)
  19. (define Regina 11)
  20. (define Calgary 12)
  21. (define Vancouver 13)
  22.  
  23. (define (city-number city)
  24.   (cond
  25.     [(symbol=? city 'StJohns) StJohns]
  26.     [(symbol=? city 'Charlottetown) Charlottetown]
  27.     [(symbol=? city 'Halifax) Halifax]
  28.     [(symbol=? city 'Fredericton) Fredericton]
  29.     [(symbol=? city 'QuebecCity) QuebecCity]
  30.     [(symbol=? city 'Toronto) Toronto]
  31.     [(symbol=? city 'Waterloo) Waterloo]
  32.     [(symbol=? city 'SaultSteMarie) SaultSteMarie]
  33.     [(symbol=? city 'ThunderBay) ThunderBay]
  34.     [(symbol=? city 'Winnipeg) Winnipeg]
  35.     [(symbol=? city 'Regina) Regina]
  36.     [(symbol=? city 'Calgary) Calgary]
  37.     [(symbol=? city 'Vancouver) Vancouver]
  38.         ))
  39.  
  40. (define (update-fatigue curr-city-num next-city-num curr-fatigue)
  41.   (cond
  42.         [(= curr-city-num next-city-num)
  43.                 (cond
  44.                 [(symbol=? curr-fatigue 'rested) 'rested]
  45.                 [(symbol=? curr-fatigue 'ready) 'rested]
  46.                 [(symbol=? curr-fatigue 'exhausted) 'ready]
  47.         )
  48.      ]
  49.         [(= (- next-city-num curr-city-num) 1)
  50.                 (cond
  51.                 [(symbol=? curr-fatigue 'rested) 'ready]
  52.                 [(symbol=? curr-fatigue 'ready) 'ready]
  53.                 [else 'invalid]; moving 1 city while exhausted is invalid
  54.         )
  55.      ]
  56.         [(= (- next-city-num curr-city-num) 2)
  57.                 (cond
  58.                 [(symbol=? curr-fatigue 'rested) 'exhausted]
  59.                 [else 'invalid] ; moving 2 cities while ready or exhausted is invalid
  60.         )
  61.      ]
  62.         [else 'invalid] ; moving any other number of cities (forward or backwards) is invalid
  63.    )
  64. )
  65.  
  66. (define (check-plan city1 city2 city3 city4)
  67.   (
  68.         (update-fatigue (city-number city3) (city-number city4)
  69.         (update-fatigue (city-number city2) (city-number city3)
  70.                 (update-fatigue (city-number city1) (city-number city2) 'rested)))
  71.    )
  72. )
  73.  
  74. (check-plan 'Halifax 'Fredericton 'Halifax 'Fredericton)
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  

=>

application: not a procedure;

 expected a procedure that can be applied to arguments

  given: 'invalid