Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <stdlib.h>
- #import <stdbool.h>
- #import <stdio.h>
- #pragma mark Ant
- typedef struct {
- bool hasFood;
- int location;
- } Ant;
- #pragma mark -
- #pragma mark Cell
- typedef struct {
- int index;
- double pheromone;
- enum type {
- normal,
- lfood,
- rfood,
- colony
- };
- } Cell;
- #pragma mark -
- #pragma mark World
- // Struct representing the entire world. Contains some useful
- // precalculated metadata.
- typedef struct {
- Cell *cells;
- int pathlen;
- int (^size)();
- } World;
- int World_size(World w) {
- return w.pathlen * 2 + 3;
- }
- // Creates a World
- // Make sure to free it when done!
- World *makeWorld(int p_len){
- __block World *world = malloc(sizeof(World));
- void *cells;
- // Define "methods" of World
- int (^World_size)() = ^{
- return (*world).pathlen * 2 + 3;
- };
- // Fill in fields
- world->cells = cells;
- world->pathlen = p_len;
- world->size = World_size;
- return world;
- }
- #pragma mark -
- void runSim(int t, int p_len, int n_ants, int decay, int phval, void *ctx){
- int n_cells = 2 * p_len + 3;
- // Initialize world
- World *world = makeWorld(p_len);
- printf("size: %d\n", world->size());
- World *world2 = makeWorld(p_len + 3);
- printf("size: %d\n", world2->size());
- free(world);
- free(world2);
- }
- int main(int argc, char **argv){
- runSim(10, 2, 1, 0.01, 1, NULL);
- }
Add Comment
Please, Sign In to add comment