コード例 #1
0
ファイル: Day12.cpp プロジェクト: Jassob/advent_of_code_2016
int main()
{
//	unit_test();

	auto instructionsInText = readStrings(INPUT_FILE);
	auto program = parseInstructions(instructionsInText);
	Computer c;
	c.program = program;

	// Part1
	{
		c.reset();
		c.start();
		auto regA = c.registers.registerValues[0];
		cout << "Day 12 part 1 answer: " << regA << endl;
	}

	// Part 2
	{
		c.reset();
		c.registers.registerValues[2 /* c */] = 1;
		c.start();
		auto regA = c.registers.registerValues[0];
		cout << "Day 12 part 2 answer: " << regA << endl;
	}

	return 0;
}
コード例 #2
0
ファイル: Day25.cpp プロジェクト: Jassob/advent_of_code_2016
int searchInput(const Program& p)
{
	int inputValue = 0;
	int time = 0;
	const int maxIterations = 1000;

	bool invalid=false;
	while(true)
	{
		Computer c;
		c.program = p;
		c.setOut([&c, &invalid, &time, maxIterations](int v)
		{
			if ( (time%2) != v)
			{
				// incorrect out
				invalid = true;
				c.halt();
			}
			if (time == maxIterations)
			{
				c.halt();
			}
			time++;
		});
		c.reset();
		invalid = false;
		time = 0;
		c.registers.registerValues[0] = inputValue;
		c.start();
		if(!invalid)
		{
			// yes!!!
			return inputValue;
		}

		inputValue++;
	}
	return -1;
}