naprawione

This commit is contained in:
ryuga4 2019-04-22 14:38:11 +02:00
parent b0bfeed022
commit 0b534d67b3
2 changed files with 17 additions and 140 deletions

View File

@ -1,114 +1,3 @@
<<<<<<< HEAD:Trunk/Components/CzokoŚmieciarka.AI_Naive/DFS.cs
using CzokoŚmieciarka.DataModels.Enums;
using CzokoŚmieciarka.DataModels.Interfaces;
using CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector;
using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.DataModels.Models.Steps;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CzokoŚmieciarka.AI_Naive
{
public class DFS
{
public DFS()
{
}
int count = 0;
public List<IStep> BestPath(AGarbageCollector collector, object[,] grid)
{
var r=Search(collector, grid, 0).Key;
Console.WriteLine(count);
return r;
}
List<IStep> PossibleSteps(AGarbageCollector collector, object[,] grid)
{
var result = new List<IStep>();
var moveSteps = new List<IStep>()
{
new MoveStep(Direction.Up),
new MoveStep(Direction.Down),
new MoveStep(Direction.Left),
new MoveStep(Direction.Right)
};
var filteredMoveSteps = new List<IStep>();
foreach (var item in moveSteps)
{
var copyCollector = (AGarbageCollector)collector.Clone();
var copyGrid = (object[,])grid.Clone();
try
{
item.Invoke(copyCollector, grid);
var gcx = copyCollector.Coords.X;
var gcy = copyCollector.Coords.Y;
if (grid[gcx, gcy] is IRoad1 || grid[gcx, gcy] is IGarbageLocalization || grid[gcx, gcy] is ADump)
{
result.Add(item);
}
}
catch (Exception e)
{
}
}
return result;
}
KeyValuePair<List<IStep>, int> Search(AGarbageCollector collector, object[,] grid, int length)
{
count++;
if (length > 40) return new KeyValuePair<List<IStep>, int>(new List<IStep>(), length);
var possibleSteps = PossibleSteps(collector, grid);
foreach (var item in possibleSteps)
{
var copyCollector = (AGarbageCollector)collector.Clone();
var copyGrid = (object[,])grid.Clone();
//if (copyGrid[copyCollector.Coords.X, copyCollector.Coords.Y] is IRoad1) copyGrid[copyCollector.Coords.X, copyCollector.Coords.Y] = new Road2();
item.Invoke(copyCollector, copyGrid);
var s = Search(copyCollector, copyGrid, length + 1);
if (s.Key != null)
{
s.Key.Insert(0, item);
return s;
}
}
return new KeyValuePair<List<IStep>, int>(null, length);
/*var min = int.MaxValue;
var min_index = 0;
for (int i = 0; i < mapped.Count; i++)
{
if (mapped.ElementAt(i).Value <= min)
{
min = mapped.ElementAt(i).Value;
min_index = i;
}
}
return mapped.ElementAt(min_index);
*/
}
}
}
=======
using CzokoŚmieciarka.MonoGameView.DataModels.Enums; using CzokoŚmieciarka.MonoGameView.DataModels.Enums;
using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces;
using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.GarbageCollector; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.GarbageCollector;
@ -136,6 +25,7 @@ namespace CzokoŚmieciarka.MonoGameView.Algorithms
{ {
var r=Search(content, collector, grid, 0).Key; var r=Search(content, collector, grid, 0).Key;
Console.WriteLine(count); Console.WriteLine(count);
if (r == null) return new List<IStep>();
return r; return r;
} }
@ -214,4 +104,3 @@ namespace CzokoŚmieciarka.MonoGameView.Algorithms
} }
} }
} }
>>>>>>> c3875873aa1c65d56eefe5ebef2127852fe69b7a:Trunk/MonoGameView/Algorithms/DFS.cs

View File

@ -53,19 +53,7 @@ namespace CzokoŚmieciarka.MonoGameView
{ {
// TODO: Add your initialization logic here // TODO: Add your initialization logic here
roadPos = new Vector2(0, 0); roadPos = new Vector2(0, 0);
<<<<<<< HEAD
timer = 5f;
for (int x=0;x<10;x++)
{
for (int y=0;y<10;y++)
{
if (x % 2 == 0 || y % 2 == 0) grid[x, y] = new Road1();
else grid[x, y] = null;
}
}
=======
timer = 0.2f; timer = 0.2f;
>>>>>>> c3875873aa1c65d56eefe5ebef2127852fe69b7a
mapLoader.Load(out size,out grid,"map.xml"); mapLoader.Load(out size,out grid,"map.xml");
collector = new GarbageCollector(new Coords(0, 0), new List<AGarbageCollectorContainer>(), size, size); collector = new GarbageCollector(new Coords(0, 0), new List<AGarbageCollectorContainer>(), size, size);