fbpx

C++: Empty Directory

Bjarne-stroustrup
 

Starting with a path to some directory, determine whether the directory is empty.

An empty directory contains no files nor subdirectories. With Unix or Windows systems, every directory contains an entry for “.” and almost every directory contains “..” (except for a root directory); an empty directory contains no other entries.

#include <bitset>
#include <stdio.h>

#define SIZE	           80
#define RULE               30
#define RULE_TEST(x)       (RULE & 1 << (7 & (x)))

void evolve(std::bitset<SIZE> &s) {
	int i;
	std::bitset<SIZE> t(0);
	t[SIZE-1] = RULE_TEST( s[0] << 2 | s[SIZE-1] << 1 | s[SIZE-2] );
	t[     0] = RULE_TEST( s[1] << 2 | s[     0] << 1 | s[SIZE-1] );
	for (i = 1; i < SIZE-1; i++)
	t[i] = RULE_TEST( s[i+1] << 2 | s[i] << 1 | s[i-1] );
	for (i = 0; i < SIZE; i++) s[i] = t[i];
}
void show(std::bitset<SIZE> s) {
	int i;
	for (i = SIZE; i--; ) printf("%c", s[i] ? '#' : ' ');
	printf("|\n");
}
unsigned char byte(std::bitset<SIZE> &s) {
	unsigned char b = 0;
	int i;
	for (i=8; i--; ) {
		b |= s[0] << i; 
		evolve(s);
	}
	return b;
}

int main() {
	int i;
	std::bitset<SIZE> state(1);
	for (i=10; i--; )
	printf("%u%c", byte(state), i ? ' ' : '\n');
	return 0;
}

SOURCE

Content is available under GNU Free Documentation License 1.2.