/* (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;
}