enetwork20250807004.c

/* (C) David Vajda
 * 2025-08-08
 * Circuit Parallel/Seriell excersize */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N                   32
#define N_VALENCES2         N
#define N_VALENCES3         8           /* 32 - 8 = 24 */
#define N_VALENCES4         12          /* 24/2 = 12 */
#define N_VALENCES6         6           /* 12/2 = 6 */

//int borders [] = {8, 16, 20, 32};
//int valenceval = {3, 4, 6, 2};

int main (void) {
    printf("(C) David Vajda\n");
    printf("2025-08-08\n");
    printf("Circuit Parallel/Seriell excersize\n");


    /* nicht eigener Teil */

    time_t t;
    struct tm *tm_info;

    time(&t);
    tm_info = localtime(&t);

    char date_string[25];
    strftime(date_string, sizeof(date_string), "%Y-%m-%d %H:%M:%S", tm_info);

    printf("%s\n\n", date_string);

    /* bis hierhin */
    srand (time(NULL));
    int i;
    int j;
    int tmp;

    int vertices [N][N];
    int valences [N];

    for (i = 0;  i < N;  i++)
        for (j = 0;  j < N;  j++)
            vertices [i][j] = 0;
    for (i = 0;  i < N;  i++)
        valences [i] = i;

/*
    for (i = 0;  i < N;  i++)
        for (j = i+1;  j < N;  j++)
            if (rand () % 2) {
                tmp = valences [i];
                valences [i] = valences [j];
                valences [j] = tmp;
            }
            This doesn't work
            */

    int a, b;
    for (i = 0;  i < 2048;  i++) {
        tmp = valences [a = (rand () % N)];
        valences [a] = valences [b = (rand () % N)];
        valences [b] = tmp;
    }
/*
        for (i = 0;  i < N;  i++)
        for (j = i+1;  j < N;  j++)
            if (valences[i] < valences [j]) {
                tmp = valences [i];
                valences [i] = valences [j];
                valences [j] = tmp;
            }
*/

    int borders [] = {8, 16, 20, 32};
    int valenceval [] = {3, 4, 6, 2};
    int valencesfinal [N];
    int val [N];
    int adj_M [N][N];
    int sum;

    for (i = 0, j = 0;  i < N;  i++) {
        valencesfinal [valences[i]] = valenceval [j];
        if (i > borders [j])
            j++;
    }
    for (i = 0;  i < N;  i++)
        printf ("%i, ", valencesfinal[i]);
    return 0;
    sum = 1;
    int rcount=1;
    int count = 3;
    while (sum != 0) {
        sum = 0;
        for (i = 0;  i < N;  i++) {
            if (valencesfinal [i] > 0) {
                valencesfinal [i] = valencesfinal [i]-1;
                sum = sum + valencesfinal [i];
                for (j = i + 1;  j < N;  j++) {
                    if (valencesfinal [j] != 0) {
                        valencesfinal [j] = valencesfinal [j]-1;
                        sum = sum + valencesfinal [j];
                    }
                }
                adj_M [i][j] = adj_M [j][i] = rcount;
                rcount++;
                printf ("%i, %i, %i, \n", sum, valencesfinal [i], i);
            }
        }
        if (count < 0)
            break;
        count--;
        printf("\n");
    }

    printf ("(");
    for (i = 0; i < N-1; i++)
        printf ("%i, ", valencesfinal [i]);
    printf ("%i)\n");

    printf ("folgende Knoten verbinden die Widerstaende (o. a. elektrische Bauelemente):\n\n");
    for (i = 0;  i < N;  i++)
        printf ("X%i, ", i);


    printf ("Die Knoten sind durch folgende, folgende eleketrische Komponenten z.B. Widerstaende verbunden\n");
    for (i = 0;  i < N;  i++) {
        for (j = 0;  j < N;  j++)
            if (adj_M [i][j] != 0)
                printf ("R%i von X%i nach X%i, ",  i, j, adj_M[i][j]);
        printf ("\n");
    }



return 0;
}