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); }
static void UsualFunc2() { var happyNumberService = new HappyNumberService(); var happyNumbersNum = happyNumberService.CheckDiapazon(1, 100000000, 8); Console.WriteLine("Total: " + happyNumbersNum.ToString()); }
public void Test_IsHappyNumber(int value, bool expected) { var cut = new HappyNumberService(); var actual = cut.IsHappyNumber(value); Assert.Equal(expected, actual); }
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); }
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); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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(); }
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); }