Example #1
0
        public void Test_11_IsHappyNumber()
        {
            var value = 11;

            var cut    = new HappyNumberService();
            var actual = cut.IsHappyNumber(value);

            // 11 ->
            // 1^2 + 1^2 = 2 ->
            // 2^2 = 4 ->
            // 4^2 = 16 ->
            // 1^2 + 6^2 = 37 ->
            // 9 + 49 = 58 ->
            // 25 + 64 = 89
            // this is a endless story...
            // 64 + 81 = 145
            // how many loops do i need???
            // 1 + 16 + 25 = 42
            // 16 + 4 = 20
            // forget this kata...
            // lets make a test with 1000 iterations...
            // this is what we should learn from this kata...
            // “in the long run”...
            Assert.False(actual);
        }
Example #2
0
        static void UsualFunc2()
        {
            var happyNumberService = new HappyNumberService();
            var happyNumbersNum    = happyNumberService.CheckDiapazon(1, 100000000, 8);

            Console.WriteLine("Total: " + happyNumbersNum.ToString());
        }
Example #3
0
        public void Test_IsHappyNumber(int value, bool expected)
        {
            var cut    = new HappyNumberService();
            var actual = cut.IsHappyNumber(value);

            Assert.Equal(expected, actual);
        }
Example #4
0
        public void Test_10_IsHappyNumber()
        {
            var value = 10;

            var cut    = new HappyNumberService();
            var actual = cut.IsHappyNumber(value);

            // 10 -> 1^2 + 0^2 = 1
            Assert.True(actual);
        }
Example #5
0
        public void Test_13_IsHappyNumber()
        {
            var value = 13;

            var cut    = new HappyNumberService();
            var actual = cut.IsHappyNumber(value);

            // 13 ->
            // 1 + 9 = 10 -> = 1
            Assert.True(actual);
        }
Example #6
0
        static void UsualFunc()
        {
            var happyNumberService = new HappyNumberService();
            var happyNumbersNum    = 0;

            for (var i = 1; i < 100000000; i++)
            {
                var isHappy = happyNumberService.Calculate(i, 8);
                if (isHappy)
                {
                    happyNumbersNum++;
                    Console.WriteLine("Happy number: " + i.ToString());
                }
            }

            Console.WriteLine("Total: " + happyNumbersNum.ToString());
        }
Example #7
0
        static void ParallelFuncFor()
        {
            var    happyNumberService = new HappyNumberService();
            var    charNum            = 8;
            var    happyNumbersNum    = 0;
            object happyNumbersNum2   = 0;

            Parallel.For(1, 100000000, (int number) =>
            {
                if (happyNumberService.CheckNumber(number, charNum))
                {
                    lock (happyNumbersNum2)
                    {
                        happyNumbersNum = happyNumbersNum + 1;
                    }
                }
            });

            Console.WriteLine("Total: " + happyNumbersNum.ToString());
        }
Example #8
0
        static void ParallelFindFunc()
        {
            var happyNumberService = new HappyNumberService();
            var charNum            = 8;
            var random             = new Random();
            var goal = random.Next(100000000);

            // var goal = 99999999; // random.Next(100000000);
            Console.WriteLine("Generated number: " + goal.ToString());

            var result = Parallel.For(1, 100000000, (int number, ParallelLoopState pls) =>
            {
                var isHappy = happyNumberService.Calculate(number, charNum);
                if (number == goal)
                {
                    pls.Break();
                    Console.WriteLine("Found number: " + number.ToString());
                }
            });

            // Console.WriteLine("Break's index: " + result.LowestBreakIteration.ToString());
        }
Example #9
0
        static void ParallelFindFuncPrallelOptions()
        {
            var happyNumberService = new HappyNumberService();
            var charNum            = 8;
            var random             = new Random();
            var goal = random.Next(100000000);

            // var goal = 99999999; // random.Next(100000000);
            Console.WriteLine("Generated number: " + goal.ToString());

            CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
            CancellationToken       token             = cancelTokenSource.Token;

            try
            {
                var result = Parallel.For(1, 100000000, new ParallelOptions {
                    CancellationToken = token
                }, (int number) =>
                {
                    var isHappy = happyNumberService.Calculate(number, charNum);
                    if (number == goal)
                    {
                        cancelTokenSource.Cancel();
                        Console.WriteLine("Found number: " + number.ToString());
                    }
                });
            }
            catch (OperationCanceledException ex)
            {
                // Console.WriteLine("Операция прервана");
            }
            finally
            {
                cancelTokenSource.Dispose();
            }

            // Console.WriteLine("Break's index: " + result.LowestBreakIteration.ToString());
        }
Example #10
0
        static void ParallelFuncInvoke()
        {
            var    happyNumberService = new HappyNumberService();
            var    charNum            = 8;
            var    happyNumbersNum    = 0;
            object happyNumbersNum2   = 0;

            Parallel.Invoke(
                () => {
                var num = happyNumberService.CheckDiapazon(1, 10000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(10000001, 20000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(20000001, 30000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(30000001, 40000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(40000001, 50000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(50000001, 60000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(60000001, 70000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(70000001, 80000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(80000001, 90000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            },
                () => {
                var num = happyNumberService.CheckDiapazon(90000001, 100000000, charNum);
                lock (happyNumbersNum2)
                {
                    happyNumbersNum = happyNumbersNum + num;
                }
            }
                );

            Console.WriteLine("Total: " + happyNumbersNum.ToString());
        }
Example #11
0
        static void TasksFunc()
        {
            var happyNumberService = new HappyNumberService();
            var charNum            = 8;

            Task <int>[] tasks = new Task <int>[10]
            {
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(1, 10000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(10000001, 20000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(20000001, 30000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(30000001, 40000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(40000001, 50000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(50000001, 60000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(60000001, 70000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(70000001, 80000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(80000001, 90000000, charNum);
                    return(num);
                }),
                new Task <int>(() => {
                    var num = happyNumberService.CheckDiapazon(90000001, 100000000, charNum);
                    return(num);
                })
            };

            foreach (var task in tasks)
            {
                task.Start();
            }

            Task.WaitAll(tasks);
            var happyNumbersNum = 0;

            foreach (var task in tasks)
            {
                happyNumbersNum = happyNumbersNum + task.Result;
            }

            Console.WriteLine("Total: " + happyNumbersNum.ToString());
        }
Example #12
0
        static void TasksFindFunc()
        {
            var happyNumberService = new HappyNumberService();
            var charNum            = 8;
            var random             = new Random();
            var goal = random.Next(100000000);

            Console.WriteLine("Generated number: " + goal.ToString());

            CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
            CancellationToken       token             = cancelTokenSource.Token;

            Task[] tasks = new Task[10]
            {
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(1, 10000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(10000001, 20000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(20000001, 30000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(30000001, 40000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(40000001, 50000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(50000001, 60000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(60000001, 70000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(70000001, 80000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(80000001, 90000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(90000001, 100000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                })
            };

            foreach (var task in tasks)
            {
                task.Start();
            }

            Task.WaitAll(tasks);
            cancelTokenSource.Dispose();
        }
Example #13
0
        static void ParallelFindFunc()
        {
            var       happyNumberService = new HappyNumberService();
            var       charNum            = 8;
            const int goal = 30810401;

            CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
            CancellationToken       token             = cancelTokenSource.Token;

            var task1 = new Task <int>(() => {
                var num = happyNumberService.FindInDiapazon(10000001, 20000000, goal, charNum, cancelTokenSource, token);
                return(num);
            });

            Task[] tasks = new Task[10]
            {
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(1, 10000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(10000001, 20000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(20000001, 30000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(30000001, 40000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(40000001, 50000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(50000001, 60000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(60000001, 70000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(70000001, 80000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(80000001, 90000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                }),
                new Task(() => {
                    var res = happyNumberService.FindInDiapazon(90000001, 100000000, goal, charNum, cancelTokenSource, token);
                    if (res > 0)
                    {
                        Console.WriteLine("Found number: " + res.ToString());
                    }
                })
            };

            foreach (var task in tasks)
            {
                task.Start();
            }

            Task.WaitAll(tasks);
        }