remove c++ github stats from my life

This commit is contained in:
s-prechtl 2025-07-14 19:51:09 +02:00
parent 5719752a76
commit 95f74be063
3 changed files with 144 additions and 1896 deletions

2
.gitignore vendored
View file

@ -258,6 +258,6 @@ cython_debug/
### Python Patch ### ### Python Patch ###
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
poetry.toml poetry.toml
stb_ds.h
# End of https://www.toptal.com/developers/gitignore/api/pycharm+all,python # End of https://www.toptal.com/developers/gitignore/api/pycharm+all,python

View file

@ -0,0 +1,143 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#define STB_DS_IMPLEMENTATION
#include "stb_ds.h"
#define BUFFER_SIZE 1024
#define BLINKS 3
char **str_split(char *a_str, const char a_delim);
void read_stones_from_file(unsigned long long **stones, const char *filename);
void print_arr(unsigned long long *arr);
void blink(unsigned long long *stones);
int main(void) {
const char filename[] = "input.txt";
unsigned long long *stones = NULL;
read_stones_from_file(&stones, filename);
for (int i = 0; i < BLINKS; i++) {
blink(stones);
}
printf("lel: %td", arrlen(stones));
arrfree(stones);
return 0;
}
void blink(unsigned long long *stones) {
for (int i = 0; i < arrlen(stones); i++) {
print_arr(stones);
int number = stones[i];
if (number == 0) {
stones[i] = 1;
print_arr(stones);
continue;
}
char *number_string = malloc(BUFFER_SIZE);
sprintf(number_string, "%d", number);
int number_len = strlen(number_string);
if (number_len % 2 == 0) {
char left[number_len / 2 + 1];
char right[number_len / 2 + 1];
strncpy(left, number_string, number_len / 2);
strncpy(right, number_string + number_len / 2, number_len / 2);
left[number_len / 2] = '\0';
right[number_len / 2] = '\0';
long number_left = atoi(left);
long number_right = atoi(right);
if ((number_left == 0 && left[0] != '0') || (number_right == 0 && right[0] != '0')) {
perror("Number couldn't be converted.");
exit(1);
}
stones[i] = number_left;
arrins(stones, i + 1, number_right);
i++; // Skip the inserted element in this loop
} else {
stones[i] *= 2024;
}
print_arr(stones);
free(number_string);
}
}
void read_stones_from_file(unsigned long long **stones, const char *filename) {
FILE *file = fopen(filename, "r");
if (!file) {
perror("Couldnt read input file!");
return;
}
char *buffer = malloc(BUFFER_SIZE);
while (fgets(buffer, BUFFER_SIZE, file)) {
char **tokens = str_split(buffer, ' ');
for (int i = 0; *(tokens + i); i++) {
arrput(*stones, atoi(tokens[i]));
}
}
free(buffer);
}
void print_arr(unsigned long long *arr) {
printf("[");
for (int i = 0; i < arrlen(arr); i++) {
printf("%lld", arr[i]);
if (i != (arrlen(arr) - 1)) {
printf(", ");
}
}
printf("]\n");
}
char **str_split(char *a_str, const char a_delim) {
char **result = 0;
size_t count = 0;
char *tmp = a_str;
char *last_comma = 0;
char delim[2];
delim[0] = a_delim;
delim[1] = 0;
/* Count how many elements will be extracted. */
while (*tmp) {
if (a_delim == *tmp) {
count++;
last_comma = tmp;
}
tmp++;
}
/* Add space for trailing token. */
count += last_comma < (a_str + strlen(a_str) - 1);
/* Add space for terminating null string so caller
knows where the list of returned strings ends. */
count++;
result = malloc(sizeof(char *) * count);
if (result) {
size_t idx = 0;
char *token = strtok(a_str, delim);
while (token) {
assert(idx < count);
*(result + idx++) = strdup(token);
token = strtok(0, delim);
}
assert(idx == count - 1);
*(result + idx) = 0;
}
return result;
}

File diff suppressed because it is too large Load diff