aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalt Mankowski <waltman@pobox.com>2020-07-23 20:25:21 -0400
committerWalt Mankowski <waltman@pobox.com>2020-07-23 20:25:21 -0400
commitbc4cc1877cadee66732ba554ba8de572ee3d1196 (patch)
tree6815c4fc89db246bd5342750890470f2766eda38
parentaa197c2dabf76dc064e5f4b8a39abede35e7b3e6 (diff)
downloadperlweeklychallenge-club-bc4cc1877cadee66732ba554ba8de572ee3d1196.tar.gz
perlweeklychallenge-club-bc4cc1877cadee66732ba554ba8de572ee3d1196.tar.bz2
perlweeklychallenge-club-bc4cc1877cadee66732ba554ba8de572ee3d1196.zip
C code for challenge 70
-rw-r--r--challenge-070/walt-mankowski/c/Makefile23
-rw-r--r--challenge-070/walt-mankowski/c/ch-1.c19
-rw-r--r--challenge-070/walt-mankowski/c/ch-2.c29
3 files changed, 71 insertions, 0 deletions
diff --git a/challenge-070/walt-mankowski/c/Makefile b/challenge-070/walt-mankowski/c/Makefile
new file mode 100644
index 0000000000..5de1bf4d65
--- /dev/null
+++ b/challenge-070/walt-mankowski/c/Makefile
@@ -0,0 +1,23 @@
+C = /usr/bin/cc
+INCLDIRS =
+LIBDIRS =
+LIBS =
+CFLAGS = -std=gnu99 -Wall -O3 $(INCLDIRS)
+OBJECTS1 = ch-1.o
+OBJECTS2 = ch-2.o
+
+all: ch-1 ch-2
+
+%.o: %.c
+ $(C) $(CFLAGS) -c $<
+
+ch-1: $(OBJECTS1)
+ $(C) -o $@ $(OBJECTS1) $(LIBDIRS) $(LIBS)
+
+ch-2: $(OBJECTS2)
+ $(C) -o $@ $(OBJECTS2) $(LIBDIRS) $(LIBS)
+
+clean:
+ rm -f *~
+ rm -f *.o
+ rm -f ch-1 ch-2
diff --git a/challenge-070/walt-mankowski/c/ch-1.c b/challenge-070/walt-mankowski/c/ch-1.c
new file mode 100644
index 0000000000..f59eafed0a
--- /dev/null
+++ b/challenge-070/walt-mankowski/c/ch-1.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+ const char *s = argv[1];
+ int c = atoi(argv[2]);
+ int o = atoi(argv[3]);
+ int n = strlen(s);
+
+ char *t = strdup(s);
+ for (int i = 1; i <= c; i++) {
+ char tmp = t[i % n];
+ t[i % n] = t[(i+o) % n];
+ t[(i+o) % n] = tmp;
+ }
+
+ puts(t);
+}
diff --git a/challenge-070/walt-mankowski/c/ch-2.c b/challenge-070/walt-mankowski/c/ch-2.c
new file mode 100644
index 0000000000..c7b4a59ab7
--- /dev/null
+++ b/challenge-070/walt-mankowski/c/ch-2.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+void init(int *S) {
+ S[0] = 0;
+ S[1] = 1;
+ S[2] = 3;
+ S[3] = 2;
+}
+
+void gray_code(int n, int *S) {
+ int offset = 1 << (n-1);
+ for (int i = 0; i < offset; i++)
+ S[i + offset] = S[offset-i-1] + offset;
+}
+
+int main(int argc, char *argv[]) {
+ int n = atoi(argv[1]);
+ size_t len = 1 << n;
+ int *S = calloc(len, sizeof(int));
+ init(S);
+
+ for (int i = 3; i <= n; i++)
+ gray_code(i, S);
+
+ for (int i = 0; i < len; i++)
+ printf("%d ", S[i]);
+ printf("\n");
+}