You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
using System;
|
|
|
|
namespace Part2 {
|
|
public class calcInputs {
|
|
public int bruteforce( int[] input, int find, bool debug ) {
|
|
int noun, verb;
|
|
int[] input_c; // keep a version of the original
|
|
int[] output = new int[input.Length];
|
|
|
|
bool success = false;
|
|
|
|
int min = 0; // min and max for the input values
|
|
int max = 16; //
|
|
int maxcombos = Convert.ToInt16( Math.Pow( (double)(max + 1), 2.0 ) );
|
|
|
|
Part1.compile compile = new Part1.compile();
|
|
|
|
Console.WriteLine("Bruteforcing...");
|
|
for( int c = 0; c < max + 1; c++ ) {
|
|
noun = Math.Clamp( c, min, max );
|
|
// check every verb with c (the noun)
|
|
for( int i = 0; i < max + 1; i++ ) {
|
|
input_c = input; // reset the intcode
|
|
verb = Math.Clamp( i, min, max );
|
|
|
|
input_c[1] = noun;
|
|
input_c[2] = verb;
|
|
|
|
output = compile.intcode( input_c, debug );
|
|
|
|
if( output[0] == find ) {
|
|
Console.WriteLine( "\n({0}) Found: {1}, {2}", find, noun, verb );
|
|
success = true;
|
|
return (100 * noun) + verb;
|
|
}
|
|
}
|
|
|
|
if( success == true ) { break; }
|
|
}
|
|
|
|
Console.WriteLine("");
|
|
|
|
if( success == false ) {
|
|
Console.WriteLine( "Nothing found :(" );
|
|
return -1;
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
} |