public HanoiTowerWindow() { InitializeComponent(); this.diskNumbersTxt.Text = "5"; tower = new HanoiTower(5); DrawTower(); }
private SceneNodeBase GetRootNode() { var group = new GroupNode(); var filenames = new string[] { "floor.obj_", }; var colors = new Color[] { Color.Green, }; for (int i = 0; i < filenames.Length; i++) { string folder = System.Windows.Forms.Application.StartupPath; string filename = System.IO.Path.Combine(folder + @"\..\..\..\..\Infrastructure\CSharpGL.Models", filenames[i]); var parser = new ObjVNFParser(true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { MessageBox.Show(result.Error.ToString()); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); var node = ShadowMappingNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.WorldPosition = new vec3(0, i * 5, 0); node.Color = colors[i].ToVec3(); node.Name = filename; group.Children.Add(node); } } { var hanoiTower = new GroupNode(); ObjItem[] items = HanoiTower.GetDataSource(); foreach (var item in items) { var objFormat = item.model; var filename = item.GetType().Name; objFormat.DumpObjFile(filename, filename); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); var node = ShadowMappingNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.WorldPosition = item.position; node.Color = item.color; node.Name = filename; hanoiTower.Children.Add(node); } } group.Children.Add(hanoiTower); } return(group); }
private void InitializeTowers(int amountOfTowers) { Towers = new HanoiTower[amountOfTowers]; for (int i = 0; i < amountOfTowers; i++) { Towers[i] = new HanoiTower(i); } }
public void HanoiTest() { var hanoiTower = new HanoiTower(); for (int i = 0; i < 6; i++) { hanoiTower.stackA.Push(i.ToString()); } hanoiTower.Hanoi(hanoiTower.stackA.Count, hanoiTower.stackA, hanoiTower.stackB, hanoiTower.stackC); }
public void HanoiTowerRecTest(int disks) { var game = new HanoiTower(disks); var solvedStack = game.SolveRec(); Assert.Equal(disks, solvedStack.Count); int prev = 0; for (var i = 0; i < disks; i++) { var current = solvedStack.Pop(); Assert.Equal(prev + 1, current); prev = current; } }
static void Main(string[] args) { Console.WriteLine("Hello World!"); List <int> A = new List <int>() { 2, 1, 0 }; List <int> B = new List <int>(); List <int> C = new List <int>(); // A.Add(2); // A.Add(1); // A.Add(0); // StringBuilder stringBuilder = new StringBuilder("123"); // stringBuilder.Append("456"); // Console.WriteLine(stringBuilder.ToString()); HanoiTower.Hanoi(A, B, C); }
private SceneNodeBase GetRootNode() { var group = new GroupNode(); var filenames = new string[] { "floor.obj_", }; for (int i = 0; i < filenames.Length; i++) { string folder = System.Windows.Forms.Application.StartupPath; string filename = System.IO.Path.Combine(folder + @"\..\..\..\..\Infrastructure\CSharpGL.Models", filenames[i]); var parser = new ObjVNFParser(true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { MessageBox.Show(result.Error.ToString()); } else { ObjVNFMesh mesh = result.Mesh; var model = new AdjacentTriangleModel(mesh); var node = ShadowVolumeNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.WorldPosition = new vec3(0, i * 5, 0); node.Name = filename; group.Children.Add(node); } } { var parser = new ObjVNFParser(false); var dataSource = HanoiTower.GetDataSource(); foreach (var item in dataSource) { item.model.DumpObjFile("tmp"); var result = parser.Parse("tmp"); var model = new AdjacentTriangleModel(result.Mesh); var node = ShadowVolumeNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.Name = item.model.GetType().Name; node.Color = item.color; node.WorldPosition = item.position; group.Children.Add(node); } } return(group); }
public void Test() { var towers = new HanoiTower[3]; for (int i = 0; i < towers.Length; i++) { towers[i] = new HanoiTower(i.ToString(CultureInfo.InvariantCulture)); } const int n = 5; for (int i = n - 1; i >= 0; i--) { towers[0].Add(i); } towers[0].MoveDisks(n, towers[2], towers[1]); CollectionAssert.AreEqual(new int[] {}, towers[0].ToArray()); CollectionAssert.AreEqual(new int[] {}, towers[1].ToArray()); CollectionAssert.AreEqual(new[] { 0, 1, 2, 3, 4 }, towers[2].ToArray()); }
public void create_hanoi_tower_expect_rules() { // =1 = = // =2= = = // ==3== = = // ===4=== = = // ====5==== = = //================================= var amountOfDisks = 8; var tower = new HanoiTower(); var source = new Stack <int>().AddRange(amountOfDisks); var destination = new Stack <int>(); var temporary = new Stack <int>(); tower.MoveTower(source.Count, source, destination, temporary); Assert.AreEqual(0, source.Count); Assert.AreEqual(amountOfDisks, destination.Count); Assert.AreEqual(0, temporary.Count); }
private void start_Click(object sender, RoutedEventArgs e) { ushort count = 0; ushort speed; if (!ushort.TryParse(diskNumbersTxt.Text, out count) || (count < 1 || count > 10)) { MessageBox.Show("Choose a number between 1 and 10"); return; } if (speedTxt.Text.Trim() != string.Empty) { if (!ushort.TryParse(speedTxt.Text, out speed) || (speed < 1 || speed > 5)) { MessageBox.Show("Choose speed from 1 to 5"); return; } } tower = new HanoiTower(count); start.IsEnabled = false; tower.DiskMoved += Tower_DiskMoved; tower.Solve(1, 3, count); start.IsEnabled = true; }
private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(5, 6, 4) * 3; var center = new vec3(0, 0, 0); var up = new vec3(0, 1, 0); var camera = new Camera(position, center, up, CameraType.Perspecitive, this.winGLCanvas1.Width, this.winGLCanvas1.Height); this.scene = new Scene(camera); //(new FormTree(scene)).Show(); this.scene.RootNode = new GroupNode(); { var axisNode = AxisNode.Create(); axisNode.Scale = new vec3(1, 1, 1) * 30; this.scene.RootNode.Children.Add(axisNode); } var list = new ActionList(); var transformAction = new TransformAction(scene); list.Add(transformAction); var renderAction = new RenderAction(scene); list.Add(renderAction); this.actionList = list; this.pickingAction = new Picking(scene); //this.triangleTip = new LegacyTriangleNode(); //this.quadTip = new LegacyQuadNode(); this.tipNode = HighlightGeometryNode.Create(); var manipulater = new FirstPerspectiveManipulater(); manipulater.Bind(camera, this.winGLCanvas1); { ObjItem[] items = HanoiTower.GetDataSource(); for (int i = 0; i < items.Length; i++) { var item = items[i]; var filename = "item" + (i) + ".obj"; item.model.DumpObjFile(filename, "item" + (i)); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { //Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var node = ObjVNFNode.Create(mesh); node.Children.Add(new LegacyBoundingBoxNode(node.ModelSize)); //float max = node.ModelSize.max(); //node.Scale *= 7.0f / max; node.WorldPosition = item.position; node.Diffuse = item.color; var rootElement = this.scene.RootNode; this.scene.RootNode.Children.Add(node); //if (rootElement != null) { rootElement.Dispose(); } } } } }
static void Main(string[] args) { { Console.WriteLine("sphere"); var sphere = new Sphere(1, 40, 80); var filename = "sphere.obj_"; sphere.DumpObjFile(filename, "sphere"); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); model.DumpObjFile("vnf" + filename, "sphere"); } } { Console.WriteLine("prismoid"); var prismoid = new PrismoidModel(5, 5, 6, 6, 2); var filename = "prismoid.obj_"; prismoid.DumpObjFile(filename, "prismoid"); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); model.DumpObjFile("vnf" + filename, "prismoid"); } } { Console.WriteLine("cylinder"); var cylinder = new CylinderModel(0.25f, 6, 17); var filename = "cylinder.obj_"; cylinder.DumpObjFile(filename, "cylinder"); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); model.DumpObjFile("vnf" + filename, "cylinder"); } } { Console.WriteLine("annulus"); var annulus = new AnnulusModel(0.5f + 0.4f, 0.3f, 17, 17); var filename = "annulus.obj_"; annulus.DumpObjFile(filename, "annulus"); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); model.DumpObjFile("vnf" + filename, "annulus"); } } { Console.WriteLine("disk"); var disk = new DiskModel(0.5f + 0.4f, 0.3f, 0.3f, 17, 17); var filename = "disk.obj_"; disk.DumpObjFile(filename, "disk"); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); model.DumpObjFile("vnf" + filename, "disk"); } } { Console.WriteLine("hanoiTower"); var list = HanoiTower.GetDataSource(); uint nextIndex = 0; var positionList = new List <vec3>(); var indexList = new List <uint>(); foreach (var item in list) { vec3[] positions = item.model.GetPositions(); uint[] indexes = item.model.GetIndexes(); for (int i = 0; i < positions.Length; i++) { positionList.Add(positions[i] + item.position); } for (int i = 0; i < indexes.Length; i++) { indexList.Add(indexes[i] + nextIndex); } nextIndex += (uint)positions.Length; } var hanoiTower = new TmpModel(positionList.ToArray(), indexList.ToArray()); var filename = "HanoiTower.obj_"; hanoiTower.DumpObjFile(filename, "hanoiTower"); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); model.DumpObjFile("vnf" + filename, "hanoiTower"); } } Console.WriteLine("done"); }
public void HanoiCorrect() { HanoiTower.Solve(3, new MockLogger(3)); HanoiTower.Solve(3, new ConsoleHanoiLogger()); }
public void HanoiTowerTest(int disks) { var game = new HanoiTower(disks); game.Solve(); }
public void HanoiTower_5Disks() { var game = new HanoiTower(5); game.Solve(); }