11""" 
22Wa-Tor algorithm (1984) 
33
4- @ https://en.wikipedia.org/wiki/Wa-Tor 
5- @ https://beltoforion.de/en/wator/ 
6- @ https://beltoforion.de/en/wator/images/wator_medium.webm 
4+ |  @ https://en.wikipedia.org/wiki/Wa-Tor
5+ |  @ https://beltoforion.de/en/wator/
6+ |  @ https://beltoforion.de/en/wator/images/wator_medium.webm
77
88This solution aims to completely remove any systematic approach 
99to the Wa-Tor planet, and utilise fully random methods. 
@@ -97,8 +97,8 @@ class WaTor:
9797
9898    :attr time_passed: A function that is called every time 
9999        time passes (a chronon) in order to visually display 
100-         the new Wa-Tor planet. The time_passed function can block 
101-         using time.sleep to slow the algorithm progression. 
100+         the new Wa-Tor planet. The ` time_passed`  function can block 
101+         using `` time.sleep``  to slow the algorithm progression. 
102102
103103    >>> wt = WaTor(10, 15) 
104104    >>> wt.width 
@@ -216,7 +216,7 @@ def get_surrounding_prey(self, entity: Entity) -> list[Entity]:
216216        """ 
217217        Returns all the prey entities around (N, S, E, W) a predator entity. 
218218
219-         Subtly different to the try_to_move_to_unoccupied square . 
219+         Subtly different to the `move_and_reproduce` . 
220220
221221        >>> wt = WaTor(WIDTH, HEIGHT) 
222222        >>> wt.set_planet([ 
@@ -260,7 +260,7 @@ def move_and_reproduce(
260260        """ 
261261        Attempts to move to an unoccupied neighbouring square 
262262        in either of the four directions (North, South, East, West). 
263-         If the move was successful and the remaining_reproduction time  is 
263+         If the move was successful and the `remaining_reproduction_time`  is 
264264        equal to 0, then a new prey or predator can also be created 
265265        in the previous square. 
266266
@@ -351,12 +351,12 @@ def perform_prey_actions(
351351        Performs the actions for a prey entity 
352352
353353        For prey the rules are: 
354-           1. At each chronon, a prey moves randomly to one of the adjacent unoccupied 
355-             squares. If there are no free squares, no movement takes place. 
356-           2. Once a prey has survived a certain number of chronons it may reproduce. 
357-             This is done as it moves to a neighbouring square, 
358-             leaving behind a new prey in its old position. 
359-             Its reproduction time is also reset to zero. 
354+              1. At each chronon, a prey moves randomly to one of the adjacent unoccupied 
355+                 squares. If there are no free squares, no movement takes place. 
356+              2. Once a prey has survived a certain number of chronons it may reproduce. 
357+                 This is done as it moves to a neighbouring square, 
358+                 leaving behind a new prey in its old position. 
359+                 Its reproduction time is also reset to zero. 
360360
361361        >>> wt = WaTor(WIDTH, HEIGHT) 
362362        >>> reproducable_entity = Entity(True, coords=(0, 1)) 
@@ -382,15 +382,15 @@ def perform_predator_actions(
382382        :param occupied_by_prey_coords: Move to this location if there is prey there 
383383
384384        For predators the rules are: 
385-           1. At each chronon, a predator moves randomly to an adjacent square occupied 
386-             by a prey. If there is none, the predator moves to a random adjacent 
387-             unoccupied square. If there are no free squares, no movement takes place. 
388-           2. At each chronon, each predator is deprived of a unit of energy. 
389-           3. Upon reaching zero energy, a predator dies. 
390-           4. If a predator moves to a square occupied by a prey, 
391-             it eats the prey and earns a certain amount of energy. 
392-           5. Once a predator has survived a certain number of chronons 
393-           it may reproduce in exactly the same way as the prey. 
385+              1. At each chronon, a predator moves randomly to an adjacent square occupied 
386+                 by a prey. If there is none, the predator moves to a random adjacent 
387+                 unoccupied square. If there are no free squares, no movement takes place. 
388+              2. At each chronon, each predator is deprived of a unit of energy. 
389+              3. Upon reaching zero energy, a predator dies. 
390+              4. If a predator moves to a square occupied by a prey, 
391+                 it eats the prey and earns a certain amount of energy. 
392+              5. Once a predator has survived a certain number of chronons 
393+                 it may reproduce in exactly the same way as the prey. 
394394
395395        >>> wt = WaTor(WIDTH, HEIGHT) 
396396        >>> wt.set_planet([[Entity(True, coords=(0, 0)), Entity(False, coords=(0, 1))]]) 
@@ -430,7 +430,7 @@ def perform_predator_actions(
430430
431431    def  run (self , * , iteration_count : int ) ->  None :
432432        """ 
433-         Emulate time passing by looping iteration_count times 
433+         Emulate time passing by looping ` iteration_count`  times 
434434
435435        >>> wt = WaTor(WIDTH, HEIGHT) 
436436        >>> wt.run(iteration_count=PREDATOR_INITIAL_ENERGY_VALUE - 1) 
@@ -484,11 +484,9 @@ def visualise(wt: WaTor, iter_number: int, *, colour: bool = True) -> None:
484484    an ascii code in terminal to clear and re-print 
485485    the Wa-Tor planet at intervals. 
486486
487-     Uses ascii colour codes to colourfully display 
488-     the predators and prey. 
489- 
490-     (0x60f197) Prey = # 
491-     (0xfffff) Predator = x 
487+     Uses ascii colour codes to colourfully display the predators and prey: 
488+         * (0x60f197) Prey = ``#`` 
489+         * (0xfffff) Predator = ``x`` 
492490
493491    >>> wt = WaTor(30, 30) 
494492    >>> wt.set_planet([ 
0 commit comments