added stub for ranking implementation
This commit is contained in:
parent
34ceed6323
commit
f41f1b9862
16
README.md
16
README.md
@ -1,2 +1,18 @@
|
|||||||
# critical-thinking
|
# critical-thinking
|
||||||
|
|
||||||
|
On August 25, 2024 I finished reading "The Thinker's Toolkit" by Morgan D. Jones.
|
||||||
|
|
||||||
|
Little did I realize it when I finished the book, but the techniques I learned and practiced while reading the book were so powerful that I ended up using them all the time.
|
||||||
|
|
||||||
|
All. The. Time.
|
||||||
|
|
||||||
|
Critical thinking and problem solving is a **very powerful** skill. Unfortunately, it is not taught to us.
|
||||||
|
|
||||||
|
If you want to use some of the tools he taught us about, you can use my software to make it easier to understand and use. Especially laborious processes like ranking.
|
||||||
|
|
||||||
|
My code is public domain, licensed under the [0BSD](https://spdx.org/licenses/0BSD.html) license.
|
||||||
|
|
||||||
|
Book copyright (c) 1995, 1998 Morgan Jones
|
||||||
|
|
||||||
|
## Install
|
||||||
|
tbd
|
||||||
|
22
color.h
Normal file
22
color.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef COLOR_H
|
||||||
|
#define COLOR_H
|
||||||
|
|
||||||
|
#define RESET "\033[0m"
|
||||||
|
#define BLACK "\033[30m" /* Black */
|
||||||
|
#define RED "\033[31m" /* Red */
|
||||||
|
#define GREEN "\033[32m" /* Green */
|
||||||
|
#define YELLOW "\033[33m" /* Yellow */
|
||||||
|
#define BLUE "\033[34m" /* Blue */
|
||||||
|
#define MAGENTA "\033[35m" /* Magenta */
|
||||||
|
#define CYAN "\033[36m" /* Cyan */
|
||||||
|
#define WHITE "\033[37m" /* White */
|
||||||
|
#define BOLDBLACK "\033[1m\033[30m" /* Bold Black */
|
||||||
|
#define BOLDRED "\033[1m\033[31m" /* Bold Red */
|
||||||
|
#define BOLDGREEN "\033[1m\033[32m" /* Bold Green */
|
||||||
|
#define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */
|
||||||
|
#define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */
|
||||||
|
#define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */
|
||||||
|
#define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */
|
||||||
|
#define BOLDWHITE "\033[1m\033[37m" /* Bold White */
|
||||||
|
|
||||||
|
#endif
|
78
rank.c
Normal file
78
rank.c
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Ranking tool in "The Thinker's Toolkit" by Morgan Jones
|
||||||
|
* Book copyright (c) 1995, 1998 Morgan Jones
|
||||||
|
* This file is public domain.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "color.h"
|
||||||
|
|
||||||
|
#define M_STR 255
|
||||||
|
|
||||||
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
|
// maximum M_STR strings, 255 bytes each
|
||||||
|
char strings[M_STR][255] = { 0 };
|
||||||
|
|
||||||
|
// read strings
|
||||||
|
printf(BOLDWHITE "Enter strings: (empty line when done) \n" RESET);
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < M_STR; i++) {
|
||||||
|
fgets(strings[i], 255, stdin);
|
||||||
|
// if its an empty string, stop reading
|
||||||
|
if (strings[i][0] == '\n') {
|
||||||
|
strings[i][0] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove newline
|
||||||
|
strings[i][strcspn(strings[i], "\n")] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
// construct matrix of comparisons
|
||||||
|
// NOTE: it doesn't actually store the "reason",
|
||||||
|
// it just forces the user to type something out lol
|
||||||
|
char matrix[i][i];
|
||||||
|
|
||||||
|
// memcpy(3) with null bytes
|
||||||
|
memset(matrix, 0, sizeof(matrix));
|
||||||
|
|
||||||
|
// store the winners
|
||||||
|
int winners[i];
|
||||||
|
|
||||||
|
printf("%d: %d\n", i, sizeof(winners));
|
||||||
|
|
||||||
|
// memcpy(3) with null bytes
|
||||||
|
memset(winners, 0, sizeof(winners));
|
||||||
|
|
||||||
|
// compare all of the elements
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
for (int k = j + 1; k < i; k++) {
|
||||||
|
printf("%s vs %s (>/<): ", strings[j], strings[k]);
|
||||||
|
// read one char, set matrix accordingly
|
||||||
|
char c = getchar();
|
||||||
|
if (c == '>') {
|
||||||
|
matrix[j][k] = 1;
|
||||||
|
winners[j]++;
|
||||||
|
} else if (c == '<') {
|
||||||
|
matrix[j][k] = 0;
|
||||||
|
winners[k]++;
|
||||||
|
} else {
|
||||||
|
printf("Setting to " BOLDRED "<" RESET ": %c\n", c);
|
||||||
|
matrix[j][k] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// print out the results
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
printf("%s: %d\n", strings[j], winners[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user