From 0ddda6ea5835204fa371dd84fad17b11d2454be4 Mon Sep 17 00:00:00 2001 From: "raphael.bach" <raphael.bach@etu.hesge.ch> Date: Sat, 2 Jul 2022 19:16:08 +0200 Subject: [PATCH] Add sequential `rule_110.c` --- benchmarks/seq/rule_110.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 benchmarks/seq/rule_110.c diff --git a/benchmarks/seq/rule_110.c b/benchmarks/seq/rule_110.c new file mode 100644 index 0000000..69aa6b0 --- /dev/null +++ b/benchmarks/seq/rule_110.c @@ -0,0 +1,28 @@ +#include <stdint.h> // uint8_t +#include <stdlib.h> // EXIT_SUCCESS, size_t +#include <string.h> // memcpy() + +#define T uint8_t +#define STEP_CNT 16 + +int main(void) +{ + T in[] = { + 1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1 + }; + #define size (sizeof(in)/sizeof(T)) + T out[size]; + for(size_t step = 0; step < STEP_CNT; step++) { + for(size_t i = 0; i < size; i++) { + if(i == 0) { + out[i] = (in[i] == 1) || (in[(i+1)] == 1); + } else if(i == (size-1)) { + out[i] = (in[i] == 1); + } else { + out[i] = (in[i] != in[(i+1)]) || ((in[(i-1)] == 0) && (in[i] == 1)); + } + } + memcpy(in, out, size); + } + return EXIT_SUCCESS; +} -- GitLab