PasteRack.org
Paste # 9988
2024-09-23 00:53:18

Fork as a new paste.

Paste viewed 139 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 fatigue-initial 'rested)
  24.  
  25. (define (city-number city)
  26.   (cond
  27.     [(symbol=? city 'StJohns) StJohns]
  28.     [(symbol=? city 'Charlottetown) Charlottetown]
  29.     [(symbol=? city 'Halifax) Halifax]
  30.     [(symbol=? city 'Fredericton) Fredericton]
  31.     [(symbol=? city 'QuebecCity) QuebecCity]
  32.     [(symbol=? city 'Toronto) Toronto]
  33.     [(symbol=? city 'Waterloo) Waterloo]
  34.     [(symbol=? city 'SaultSteMarie) SaultSteMarie]
  35.     [(symbol=? city 'ThunderBay) ThunderBay]
  36.     [(symbol=? city 'Winnipeg) Winnipeg]
  37.     [(symbol=? city 'Regina) Regina]
  38.     [(symbol=? city 'Calgary) Calgary]
  39.     [(symbol=? city 'Vancouver) Vancouver]
  40.         ))
  41.  
  42. (define (update-fatigue curr-city-num next-city-num curr-fatigue)
  43.   (cond
  44.         [(= curr-city-num next-city-num)
  45.                 (cond
  46.                 [(symbol=? curr-fatigue 'rested) 'rested]
  47.                 [(symbol=? curr-fatigue 'ready) 'rested]
  48.                 [(symbol=? curr-fatigue 'exhausted) 'ready]
  49.                 [else 'invalid]
  50.         )
  51.      ]
  52.         [(= (- next-city-num curr-city-num) 1)
  53.                 (cond
  54.                 [(symbol=? curr-fatigue 'rested) 'ready]
  55.                 [(symbol=? curr-fatigue 'ready) 'ready]
  56.                 [else 'invalid]; moving 1 city while exhausted is invalid
  57.         )
  58.      ]
  59.         [(= (- next-city-num curr-city-num) 2)
  60.                 (cond
  61.                 [(symbol=? curr-fatigue 'rested) 'exhausted]
  62.                 [else 'invalid] ; moving 2 cities while ready or exhausted is invalid
  63.         )
  64.      ]
  65.         [else 'invalid] ; moving any other number of cities (forward or backwards) is invalid
  66.    )
  67. )
  68.  
  69. (define (check-plan city1 city2 city3 city4)
  70.   (define fatigue2 (update-fatigue (city-number city1) (city-number city2) fatigue-initial))
  71.   (define fatigue3 (update-fatigue (city-number city2) (city-number city3) fatigue2))
  72.   (define fatigue-final (update-fatigue (city-number city3) (city-number city4) fatigue3))
  73.   fatigue-final)  ;; Return the final fatigue status
  74.  
  75. (check-plan 'Halifax 'Fredericton 'Halifax 'Fredericton)
  76.  
  77.  
  78.  
  79.  

=>

'invalid