aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-10-11 18:09:05 +0200
committerAbigail <abigail@abigail.be>2021-10-11 18:09:05 +0200
commitcae766f9713dd38d70eb30133645129c10ddeabe (patch)
tree57d376d7859ff6d436e37d893841142598aed126
parent06e1034f0e5868cbfcea3d9fddd5ab3bfa982882 (diff)
downloadperlweeklychallenge-club-cae766f9713dd38d70eb30133645129c10ddeabe.tar.gz
perlweeklychallenge-club-cae766f9713dd38d70eb30133645129c10ddeabe.tar.bz2
perlweeklychallenge-club-cae766f9713dd38d70eb30133645129c10ddeabe.zip
C solutions for week 134
-rw-r--r--challenge-134/abigail/README.md4
-rw-r--r--challenge-134/abigail/c/ch-1.c22
-rw-r--r--challenge-134/abigail/c/ch-2.c51
3 files changed, 77 insertions, 0 deletions
diff --git a/challenge-134/abigail/README.md b/challenge-134/abigail/README.md
index f545b41dde..1d9f6de66b 100644
--- a/challenge-134/abigail/README.md
+++ b/challenge-134/abigail/README.md
@@ -3,9 +3,13 @@
## Part 1
* [AWK](awk/ch-1.awk)
+* [Bash](bash/ch-1.sh)
+* [C](c/ch-1.c)
* [Perl](perl/ch-1.pl)
## Part 2
* [AWK](awk/ch-2.awk)
+* [Bash](bash/ch-1.sh)
+* [C](c/ch-1.c)
* [Perl](perl/ch-2.pl)
diff --git a/challenge-134/abigail/c/ch-1.c b/challenge-134/abigail/c/ch-1.c
new file mode 100644
index 0000000000..d65af1ef32
--- /dev/null
+++ b/challenge-134/abigail/c/ch-1.c
@@ -0,0 +1,22 @@
+# include <stdlib.h>
+# include <stdio.h>
+# include <string.h>
+
+/*
+ * See ../README.md
+ */
+
+/*
+ * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o
+ */
+
+# define SIZE 5
+
+short tail [] = {789, 798, 879, 897, 978};
+
+int main (void) {
+ for (size_t i = 0; i < SIZE; i ++) {
+ printf ("1023456%d\n", tail [i]);
+ }
+ return (0);
+}
diff --git a/challenge-134/abigail/c/ch-2.c b/challenge-134/abigail/c/ch-2.c
new file mode 100644
index 0000000000..523dc497e6
--- /dev/null
+++ b/challenge-134/abigail/c/ch-2.c
@@ -0,0 +1,51 @@
+# include <stdlib.h>
+# include <stdio.h>
+# include <string.h>
+# include <limits.h>
+
+/*
+ * See ../README.md
+ */
+
+/*
+ * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o < input-file
+ */
+
+int main (void) {
+ int n, m;
+ char * buffer;
+
+ while (scanf ("%d%d", &n, &m) == 2) {
+ int size = 1 + m * n / CHAR_BIT;
+ /*
+ * Allocate memory for our buffer
+ */
+ if ((buffer = (char *) malloc (size * sizeof (char))) == NULL) {
+ perror ("Failed to malloc buffer");
+ exit (1);
+ }
+ /*
+ * Set all the bits to 0
+ */
+ for (int i = 0; i < size; i ++) {
+ buffer [i] = (char) 0;
+ }
+
+ int count = 0; /* Count the number of different products */
+
+ for (int i = 1; i <= m; i ++) {
+ for (int j = 1; j <= n; j ++) {
+ int index = (i * j) / CHAR_BIT;
+ int bit = (i * j) % CHAR_BIT;
+ if ((buffer [index] & (1 << bit)) == 0) {
+ count ++;
+ buffer [index] |= (1 << bit);
+ }
+ }
+ }
+ printf ("%d\n", count);
+ free (buffer);
+ }
+
+ return (0);
+}