2021-12-02 00:16:52 +02:00
|
|
|
|
using IdaStar;
|
2021-12-01 20:16:53 +02:00
|
|
|
|
|
2021-12-02 00:05:15 +02:00
|
|
|
|
string[] labyrinthIN = System.IO.File.ReadAllLines(@"./labyrinth.txt");
|
2021-12-01 20:16:53 +02:00
|
|
|
|
|
2021-12-01 21:17:53 +02:00
|
|
|
|
|
|
|
|
|
System.Console.WriteLine("The input labyrinth: ");
|
|
|
|
|
foreach (string line in labyrinthIN)
|
|
|
|
|
{
|
|
|
|
|
FormattedLabRow(line);
|
2021-12-02 00:02:22 +02:00
|
|
|
|
Console.WriteLine();
|
2021-12-01 21:17:53 +02:00
|
|
|
|
}
|
|
|
|
|
|
2021-12-01 22:29:43 +02:00
|
|
|
|
var algoBoard = new IdaStar.WorkingBoard(labyrinthIN.Select((row) => row.ToList()).ToList());
|
|
|
|
|
int step = 0;
|
|
|
|
|
bool done = false;
|
|
|
|
|
ConsoleColor border = ConsoleColor.Magenta;
|
2021-12-02 00:44:28 +02:00
|
|
|
|
algoBoard.AlgorithmStep += (_, threshold) => {
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.Clear();
|
|
|
|
|
step++;
|
|
|
|
|
if(done){
|
|
|
|
|
System.Console.WriteLine("The solved labyrinth is:");
|
2021-12-02 00:26:24 +02:00
|
|
|
|
}else if(step%2 == 0) {
|
2021-12-02 00:46:51 +02:00
|
|
|
|
System.Console.WriteLine($"Computing (threshold: {threshold}) [• ]");
|
2021-12-01 22:29:43 +02:00
|
|
|
|
}else {
|
2021-12-02 00:46:51 +02:00
|
|
|
|
System.Console.WriteLine($"Computing (threshold: {threshold}) [ •]");
|
2021-12-01 22:29:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//top border
|
|
|
|
|
Console.BackgroundColor = border;
|
|
|
|
|
for (var i=0; i<algoBoard.Board[0].Count()+2; i++){
|
2021-12-01 23:45:08 +02:00
|
|
|
|
Console.Write(" ");
|
2021-12-01 22:29:43 +02:00
|
|
|
|
}
|
|
|
|
|
Console.ResetColor();
|
2021-12-01 23:45:08 +02:00
|
|
|
|
Console.WriteLine();
|
2021-12-01 22:29:43 +02:00
|
|
|
|
|
|
|
|
|
foreach (var line in algoBoard.Board)
|
|
|
|
|
{
|
|
|
|
|
var charlist = line.Select((state) => CellStateUtil.ToInput(state));
|
|
|
|
|
var str = string.Join("", charlist);
|
|
|
|
|
|
|
|
|
|
//left border
|
|
|
|
|
Console.BackgroundColor = border;
|
2021-12-01 23:45:08 +02:00
|
|
|
|
Console.Write(" ");
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.ResetColor();
|
|
|
|
|
|
|
|
|
|
//labyrinth line
|
|
|
|
|
FormattedLabRow(str);
|
|
|
|
|
|
|
|
|
|
//right border
|
|
|
|
|
Console.BackgroundColor = border;
|
2021-12-01 23:45:08 +02:00
|
|
|
|
Console.Write(" ");
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.ResetColor();
|
2021-12-01 23:45:08 +02:00
|
|
|
|
|
|
|
|
|
Console.WriteLine();
|
2021-12-01 22:29:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//bottom border
|
|
|
|
|
Console.BackgroundColor = border;
|
|
|
|
|
for (var i=0; i<algoBoard.Board[0].Count()+2; i++){
|
2021-12-01 23:45:08 +02:00
|
|
|
|
Console.Write(" ");
|
2021-12-01 22:29:43 +02:00
|
|
|
|
}
|
|
|
|
|
Console.ResetColor();
|
2021-12-01 23:45:08 +02:00
|
|
|
|
Console.WriteLine();
|
2021-12-02 00:16:52 +02:00
|
|
|
|
Thread.Sleep(200);
|
2021-12-02 00:44:28 +02:00
|
|
|
|
// Console.ReadLine();
|
2021-12-01 22:29:43 +02:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
algoBoard.RunIdaStar();
|
2021-12-01 21:17:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void FormattedLabRow(string line) {
|
|
|
|
|
char[] characters = line.ToCharArray();
|
|
|
|
|
foreach (char c in characters) {
|
|
|
|
|
switch ( c ) {
|
|
|
|
|
case '#': {
|
|
|
|
|
Console.BackgroundColor = ConsoleColor.White;
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.Write(" ");
|
2021-12-01 21:17:53 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case ' ': {
|
|
|
|
|
Console.BackgroundColor = ConsoleColor.Black;
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.Write(" ");
|
2021-12-01 21:17:53 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 'S': {
|
|
|
|
|
Console.BackgroundColor = ConsoleColor.Green;
|
2021-12-02 00:46:51 +02:00
|
|
|
|
Console.Write("<•>");
|
2021-12-01 21:17:53 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 'F': {
|
|
|
|
|
Console.BackgroundColor = ConsoleColor.Red;
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.Write("[ ]");
|
2021-12-01 21:17:53 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-02 00:16:32 +02:00
|
|
|
|
case 'P': {
|
2021-12-01 22:29:43 +02:00
|
|
|
|
Console.BackgroundColor = ConsoleColor.Blue;
|
2021-12-02 00:46:51 +02:00
|
|
|
|
Console.Write(" • ");
|
2021-12-01 21:17:53 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
default: break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Console.ResetColor();
|
|
|
|
|
}
|