Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
36
Task/First-class-environments/C/first-class-environments.c
Normal file
36
Task/First-class-environments/C/first-class-environments.c
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#define JOBS 12
|
||||
#define jobs(a) for (switch_to(a = 0); a < JOBS || !printf("\n"); switch_to(++a))
|
||||
typedef struct { int seq, cnt; } env_t;
|
||||
|
||||
env_t env[JOBS] = {{0, 0}};
|
||||
int *seq, *cnt;
|
||||
|
||||
void hail()
|
||||
{
|
||||
printf("% 4d", *seq);
|
||||
if (*seq == 1) return;
|
||||
++*cnt;
|
||||
*seq = (*seq & 1) ? 3 * *seq + 1 : *seq / 2;
|
||||
}
|
||||
|
||||
void switch_to(int id)
|
||||
{
|
||||
seq = &env[id].seq;
|
||||
cnt = &env[id].cnt;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
jobs(i) { env[i].seq = i + 1; }
|
||||
|
||||
again: jobs(i) { hail(); }
|
||||
jobs(i) { if (1 != *seq) goto again; }
|
||||
|
||||
printf("COUNTS:\n");
|
||||
jobs(i) { printf("% 4d", *cnt); }
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue