using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;
namespace Prim { public partial class MainWindow : Window { const int size = 10; private Point[] Positions = new Point[size]; private Single[,] Network = new Single[size, size]; private Random R = new Random(); public MainWindow() { InitializeComponent(); } private void setnet(Single[,] Net, Point[] Pos) { int maxlength = (int)(Math.Min(canvas1.Width, canvas1.Height) * 0.9); int minlength = maxlength / size; for (int i = 0; i < size; i++) { Pos[i].X = R.Next(minlength, maxlength); Pos[i].Y = R.Next(minlength, maxlength); for (int j = 0; j <= i; j++) { Net[i, j] = distance(Pos[i], Pos[j]); Net[j, i] = Net[i, j]; if (i == j) Net[i, j] = 0; } } } private Single distance(Point a, Point b) { return (Single)Math.Sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y)); } private void shownet(Single[,] Net) { canvas1.Children.Clear(); Line myLine; for (int i = 0; i < size; i++) { for (int j = 0; j < i; j++) { if (Net[i, j] != 0) { myLine = new Line(); myLine.Stroke = Brushes.Black; myLine.X1 = Positions[i].X; myLine.X2 = Positions[j].X; myLine.Y1 = Positions[i].Y; myLine.Y2 = Positions[j].Y; myLine.StrokeThickness = 1; canvas1.Children.Add(myLine); } } }
Rectangle myMarker; for (int i = 0; i < size; i++) { myMarker = new Rectangle(); myMarker.Stroke = Brushes.Black; myMarker.Fill = Brushes.Red; myMarker.Height = 10; myMarker.Width = 10; myMarker.SetValue(Canvas.TopProperty, Positions[i].Y - myMarker.Height / 2); myMarker.SetValue(Canvas.LeftProperty, Positions[i].X - myMarker.Width / 2); canvas1.Children.Add(myMarker); } } private void button_Click(object sender, RoutedEventArgs e) { canvas1.Width = 600; canvas1.Height = 600; setnet(Network, Positions); shownet(Network); } private void Find_MST_Click(object sender, RoutedEventArgs e) { prims(); } void prims() { int[] included = new int[size]; int[] excluded = new int[size]; Single[,] finished = new Single[size, size]; int start = 0; int finish = 0; for (int i = 0; i < size; i++)
Setting up a point-to-point VPN is relatively easy but site-to-site is much more complicated involving certificates and more IP addresses than you can count. Find out how to do it using OpenVPN.
Having an accurate weather forecast is critical for many situations, in particular for deciding weather conditions are suitable for to deploy infrastructure inspection drones. This [ ... ]
The talks presented at the 2023 PyCon Australia and SciPy are now available as YouTube playlists. Topics ranged from Data cleaning and visualization to APIs, GUIs and Parallelism.
I was pleasantly surprised when I noticed that a Perl course has been published on FreeCodeCamp. Amongst the myriad of Javascript and Python courses, there it is, a lone star.