aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-07-18 22:57:17 +0100
committerGitHub <noreply@github.com>2020-07-18 22:57:17 +0100
commit82d6c1ff3d595f3b588b43f1f8dbea42da553d9c (patch)
treec4dc8d90efecc5d08845f2bba44742e20afc643d
parent76b2c869958734ec567dc8a5ffe48751ac57108e (diff)
parentd1d66d3d78be7ce42d275f396461283e8196dbbb (diff)
downloadperlweeklychallenge-club-82d6c1ff3d595f3b588b43f1f8dbea42da553d9c.tar.gz
perlweeklychallenge-club-82d6c1ff3d595f3b588b43f1f8dbea42da553d9c.tar.bz2
perlweeklychallenge-club-82d6c1ff3d595f3b588b43f1f8dbea42da553d9c.zip
Merge pull request #1955 from waltman/branch-for-challenge-069
Branch for challenge 069
-rw-r--r--challenge-069/walt-mankowski/c/.gitignore2
-rw-r--r--challenge-069/walt-mankowski/c/Makefile23
-rw-r--r--challenge-069/walt-mankowski/c/ch-1.c52
-rw-r--r--challenge-069/walt-mankowski/c/ch-2.c38
4 files changed, 115 insertions, 0 deletions
diff --git a/challenge-069/walt-mankowski/c/.gitignore b/challenge-069/walt-mankowski/c/.gitignore
new file mode 100644
index 0000000000..ac77297bfe
--- /dev/null
+++ b/challenge-069/walt-mankowski/c/.gitignore
@@ -0,0 +1,2 @@
+ch-1
+ch-2
diff --git a/challenge-069/walt-mankowski/c/Makefile b/challenge-069/walt-mankowski/c/Makefile
new file mode 100644
index 0000000000..8694263018
--- /dev/null
+++ b/challenge-069/walt-mankowski/c/Makefile
@@ -0,0 +1,23 @@
+C = /usr/bin/cc
+INCLDIRS =
+LIBDIRS =
+LIBS =
+CFLAGS = -std=c18 -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-069/walt-mankowski/c/ch-1.c b/challenge-069/walt-mankowski/c/ch-1.c
new file mode 100644
index 0000000000..a5e15845c6
--- /dev/null
+++ b/challenge-069/walt-mankowski/c/ch-1.c
@@ -0,0 +1,52 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+const size_t min(const size_t a, const size_t b) {
+ return a <= b ? a : b;
+}
+
+int is_strobogrammatic(const long long n) {
+ char s[20];
+ sprintf(s, "%lld", n);
+ const size_t len = strlen(s);
+ for (size_t i = 0; i < min(len/2+1, len); i++) {
+ const size_t j = len-1-i;
+ switch (s[i]) {
+ case '0':
+ if (s[j] != '0')
+ return 0;
+ break;
+ case '1':
+ if (s[j] != '1')
+ return 0;
+ break;
+ case '6':
+ if (s[j] != '9')
+ return 0;
+ break;
+ case '8':
+ if (s[j] != '8')
+ return 0;
+ break;
+ case '9':
+ if (s[j] != '6')
+ return 0;
+ break;
+ default:
+ return 0;
+ }
+ }
+ return 1;
+}
+
+int main(int argc, char *argv[]) {
+ const long long A = atoll(argv[1]);
+ const long long B = atoll(argv[2]);
+
+ for (long long i = A; i <= B; i++)
+ if (is_strobogrammatic(i))
+ printf("%lld\n", i);
+
+ return 0;
+}
diff --git a/challenge-069/walt-mankowski/c/ch-2.c b/challenge-069/walt-mankowski/c/ch-2.c
new file mode 100644
index 0000000000..21347722ce
--- /dev/null
+++ b/challenge-069/walt-mankowski/c/ch-2.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+const size_t min(const size_t a, const size_t b) {
+ return a <= b ? a : b;
+}
+
+void switch_rev(char *s) {
+ const size_t len = strlen(s);
+ for (size_t i = 0; i < min(len/2+1, len); i++) {
+ const size_t j = len-1-i;
+ const char tmp = s[i];
+ s[i] = s[j] == '0' ? '1' : '0';
+ s[j] = tmp == '0' ? '1' : '0';
+ }
+}
+
+const char *S(const int n) {
+ const size_t len = (1 << n) - 1;
+ char *s = malloc(len);
+ s[0] = '\0';
+
+ for (int i = 1; i <= n; i++) {
+ const size_t eos = (1 << (i-1)) - 1;
+ strcpy(s+eos+1, s);
+ s[eos] = '0';
+ switch_rev(s+eos+1);
+ }
+ return s;
+}
+
+int main(int argc, char *argv[]) {
+ const int n = atoi(argv[1]);
+ puts(S(n));
+
+ return 0;
+}