Последовательности в C эффективным по времени способом - PullRequest
0 голосов
/ 22 марта 2020

Я делаю симуляцию, которая обновляется на каждом шаге. Я почти «убиваю» виртуальные организмы в моей сетке (это клеточный автомат) с шагом в 20000 раз. Я хочу списать данные в killing_time - 10000 и killing_time - 100 для каждых 200 раз, которые я убиваю. Теперь я могу написать для l oop и перебрать от 1 до 200, как это

for(i=1; i<=200; i++)
{
  if(Time%(i*killing_time-10000)==0 || Time%(i*killing_time-100)==0)
  {

и так далее. Но чем бы мне пришлось * 1 oop от 1 до 200 на каждом временном шаге и сделать этот расчет. Как мне сделать это разумным образом? Брэм

1 Ответ

0 голосов
/ 22 марта 2020

Насколько я понимаю вашу проблему, это может быть что-то вроде этого ...

/**
  gcc -std=c99 -o prog_c prog_c.c \
      -pedantic -Wall -Wextra -Wconversion \
      -Wc++-compat -Wwrite-strings -Wold-style-definition -Wvla \
      -g -O0 -UNDEBUG -fsanitize=address,undefined
**/

#include <stdio.h>

void
simulate(void)
{
  const int killing_period=20000;
  int killing_time=killing_period;
  int Time=1;
  for(int kill_event=1; kill_event<=200; ++kill_event)
  {
    for(; Time<killing_time; ++Time)
    {
      if(Time==(killing_time-10000) || Time==(killing_time-100))
      {
        printf("display at %d\n", Time);
      }
      // recompute the grid here
    }
    printf("kill at %d\n", Time);
    killing_time+=killing_period;
  }
  printf("DONE\n");
}

int
main(void)
{
  simulate();
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...