예제 #1
0
        static void Main()
        {
            var valRange = 55;

            int[] probDecay  = new int[valRange];
            int[] probGrowth = new int[valRange];

            for (var i = 4; i < valRange; i++)
            {
                var prob = (50 + (i - 4)) * 200_000;
                probDecay[i] = prob;
            }
            for (var i = 3; i < valRange - 1; i++)
            {
                var prob = (int)(Math.Pow(0.762718, i) * 2253927.46861);
                probGrowth[i] = prob;
            }

            var piles = new Core.Sandpiles(100, 100, probDecay, probGrowth);

            piles.Init();

            while (true)
            {
                piles.ComputeRound();
            }
        }
예제 #2
0
        public MainWindow()
        {
            InitializeComponent();
            btnNext.Click += BtnNext_Click;
            this.Loaded   += MainWindow_Loaded;
            var valRange = 55;

            int[] probDecay  = new int[valRange];
            int[] probGrowth = new int[valRange];

            for (var i = 4; i < valRange; i++)
            {
                var prob = (50 + (i - 4)) * 200_000;
                probDecay[i] = prob;
            }
            for (var i = 3; i < valRange - 1; i++)
            {
                var prob = (int)(Math.Pow(0.762718, i) * 2253927.46861);
                probGrowth[i] = prob;
            }
            _piles = new Core.Sandpiles(25, 25, probDecay, probGrowth);
            _piles.Init((i, j) =>
            {
                if (i != 12 || j != 12)
                {
                    return(0);
                }
                return(25);
            });

            _timer = new DispatcherTimer {
                Interval = TimeSpan.FromMilliseconds(250)
            };
            _timer.Tick += Timer_Tick;
            _timer.Start();
        }