diff --git a/katas/FizzBuzz/solution/baxa68486/FizzBuzz.Unit.Tests/FizzBuzz.Unit.Tests.csproj b/katas/FizzBuzz/solution/baxa68486/FizzBuzz.Unit.Tests/FizzBuzz.Unit.Tests.csproj new file mode 100644 index 0000000..f8ae983 --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/FizzBuzz.Unit.Tests/FizzBuzz.Unit.Tests.csproj @@ -0,0 +1,29 @@ + + + + net6.0 + enable + enable + + false + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + diff --git a/katas/FizzBuzz/solution/baxa68486/FizzBuzz.Unit.Tests/FizzBuzzTests.cs b/katas/FizzBuzz/solution/baxa68486/FizzBuzz.Unit.Tests/FizzBuzzTests.cs new file mode 100644 index 0000000..696f905 --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/FizzBuzz.Unit.Tests/FizzBuzzTests.cs @@ -0,0 +1,37 @@ +using FluentAssertions; +using Xunit; + +namespace FizzBuzz.Unit.Tests +{ + public class FizzBuzzTests + { + private readonly RulesEngine _rulesEngine = new RulesEngine(); + + [Theory] + [InlineData(3)] + public void EveluateNumbers_CheckDivisionToThreeRule_ReturnsFizz(int n) + { + var expected = new List { "1", "2", "Fizz" }; + var res = _rulesEngine.EveluateNumbers(n); + expected.Should().BeEquivalentTo(res); + } + + [Theory] + [InlineData(5)] + public void EveluateNumbers_CheckDivisionToFiveRule_ReturnsBuzz(int n) + { + var expected = new List { "1", "2", "Fizz", "4", "Buzz" }; + var res = _rulesEngine.EveluateNumbers(n); + expected.Should().BeEquivalentTo(res); + } + + + [Theory] + [InlineData(15)] + public void EveluateNumbers_CheckDivisionToThreeAndFiveRule_ResultContainsFizzBuzz(int n) + { + var res = _rulesEngine.EveluateNumbers(n); + res.Should().Contain("FizzBuzz"); + } + } +} \ No newline at end of file diff --git a/katas/FizzBuzz/solution/baxa68486/FizzBuzz/FizzBuzz.csproj b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/FizzBuzz.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/FizzBuzz.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/katas/FizzBuzz/solution/baxa68486/FizzBuzz/FizzBuzz.sln b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/FizzBuzz.sln new file mode 100644 index 0000000..8be80fc --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/FizzBuzz.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33103.201 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FizzBuzz", "FizzBuzz.csproj", "{00C63E22-4318-4176-8A4B-08CBDA95B217}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FizzBuzz.Unit.Tests", "..\FizzBuzz.Unit.Tests\FizzBuzz.Unit.Tests.csproj", "{35F85DDA-9071-4E73-BE6F-1EF5B30A29EC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {00C63E22-4318-4176-8A4B-08CBDA95B217}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00C63E22-4318-4176-8A4B-08CBDA95B217}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00C63E22-4318-4176-8A4B-08CBDA95B217}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00C63E22-4318-4176-8A4B-08CBDA95B217}.Release|Any CPU.Build.0 = Release|Any CPU + {35F85DDA-9071-4E73-BE6F-1EF5B30A29EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {35F85DDA-9071-4E73-BE6F-1EF5B30A29EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35F85DDA-9071-4E73-BE6F-1EF5B30A29EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {35F85DDA-9071-4E73-BE6F-1EF5B30A29EC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7F83EDA8-AF89-40E9-B20C-069085CA3916} + EndGlobalSection +EndGlobal diff --git a/katas/FizzBuzz/solution/baxa68486/FizzBuzz/Program.cs b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/Program.cs new file mode 100644 index 0000000..139ec4e --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/Program.cs @@ -0,0 +1,3 @@ +// See https://aka.ms/new-console-template for more information + +Console.WriteLine("Hello, World!"); diff --git a/katas/FizzBuzz/solution/baxa68486/FizzBuzz/RulesEngine.cs b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/RulesEngine.cs new file mode 100644 index 0000000..d4efa2d --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/FizzBuzz/RulesEngine.cs @@ -0,0 +1,43 @@ +using System.Data; +using System.Text; + +namespace FizzBuzz +{ + /* + It could be implemented using OOP by encapsulating rules in separate classes + and handling them in RulesEngine + */ + public class RulesEngine + { + List, string>> _rules = + new List, string>> + { + new KeyValuePair, string>(x => x%3 == 0, "Fizz"), + new KeyValuePair, string>(x => x%5 == 0, "Buzz"), + }; + + public List EveluateNumbers(int n) + { + List ls = new List(); + var res = new StringBuilder(); + + for (int i = 1; i <= n; i++) + { + foreach (var rule in _rules) + { + if (rule.Key(i)) + { + res.Append(rule.Value); + } + } + if (res.Length == 0) + ls.Add(i.ToString()); + else + ls.Add(res.ToString()); + + res.Clear(); + } + return ls; + } + } +} diff --git a/katas/FizzBuzz/solution/baxa68486/index.html b/katas/FizzBuzz/solution/baxa68486/index.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/katas/FizzBuzz/solution/baxa68486/index.html @@ -0,0 +1 @@ + diff --git a/katas/Palindrom/Palindrom.iml b/katas/Palindrom/Palindrom.iml new file mode 100644 index 0000000..06bff9e --- /dev/null +++ b/katas/Palindrom/Palindrom.iml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/katas/Palindrom/Palindrome.iml b/katas/Palindrom/Palindrome.iml new file mode 100644 index 0000000..2041916 --- /dev/null +++ b/katas/Palindrom/Palindrome.iml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/katas/Palindrom/out/production/Palindrome/classpath.index b/katas/Palindrom/out/production/Palindrome/classpath.index new file mode 100644 index 0000000..28fd1ff Binary files /dev/null and b/katas/Palindrom/out/production/Palindrome/classpath.index differ diff --git a/katas/Palindrom/out/production/Palindrome/main/Main.class b/katas/Palindrom/out/production/Palindrome/main/Main.class new file mode 100644 index 0000000..7acf454 Binary files /dev/null and b/katas/Palindrom/out/production/Palindrome/main/Main.class differ diff --git a/katas/Palindrom/out/production/Palindrome/main/Palindrome.class b/katas/Palindrom/out/production/Palindrome/main/Palindrome.class new file mode 100644 index 0000000..834afe0 Binary files /dev/null and b/katas/Palindrom/out/production/Palindrome/main/Palindrome.class differ diff --git a/katas/Palindrom/out/production/Palindrome/test/PalindromeTest.class b/katas/Palindrom/out/production/Palindrome/test/PalindromeTest.class new file mode 100644 index 0000000..b5e2f76 Binary files /dev/null and b/katas/Palindrom/out/production/Palindrome/test/PalindromeTest.class differ diff --git a/katas/Palindrom/solution/baxa68486/index.html b/katas/Palindrom/solution/baxa68486/index.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/katas/Palindrom/solution/baxa68486/index.html @@ -0,0 +1 @@ + diff --git a/katas/Palindrom/solution/baxa68486/src/main/Main.java b/katas/Palindrom/solution/baxa68486/src/main/Main.java new file mode 100644 index 0000000..94493c5 --- /dev/null +++ b/katas/Palindrom/solution/baxa68486/src/main/Main.java @@ -0,0 +1,9 @@ +package main; + +public class Main { + public static void main(String[] args) { + var res = new Palindrome().isPalindrome("amma"); + System.out.println(res); + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/katas/Palindrom/solution/baxa68486/src/main/Palindrome.java b/katas/Palindrom/solution/baxa68486/src/main/Palindrome.java new file mode 100644 index 0000000..7b2b3d0 --- /dev/null +++ b/katas/Palindrom/solution/baxa68486/src/main/Palindrome.java @@ -0,0 +1,34 @@ +package main; + +public class Palindrome { + + public boolean isPalindrome(String s) { + if(s == null) + return false; + int start = 0; + int end = (s.length() - 1); + while ((start < end)) { + + char first = s.charAt(start); + char second = s.charAt(end); + if(!Character.isLetterOrDigit(first)){ + start++; + continue; + } + + if(!Character.isLetterOrDigit(second)) { + end--; + continue; + } + + if (Character.toLowerCase(first) != Character.toLowerCase(second)) { + return false; + } + + start++; + end--; + } + + return true; + } +} diff --git a/katas/Palindrom/solution/baxa68486/src/test/PalindromeTests.java b/katas/Palindrom/solution/baxa68486/src/test/PalindromeTests.java new file mode 100644 index 0000000..de3fe7c --- /dev/null +++ b/katas/Palindrom/solution/baxa68486/src/test/PalindromeTests.java @@ -0,0 +1,43 @@ +package test; + +import main.Palindrome; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; + +class PalindromeTests { + @ParameterizedTest(name = "{index} => s=''{0}'', expected={1}") + @MethodSource("testData") + void isPalindrome(String s, boolean expected) + { + var palindrome = new Palindrome(); + var res = palindrome.isPalindrome(s); + assertEquals(expected, res); + } + + + private static Stream testData() { + return Stream.of( + Arguments.of("amma", true), + Arguments.of("A man, a plan, a canal: Panama", true), + Arguments.of("race a car", false), + Arguments.of("street", false), + Arguments.of(" ", true), + Arguments.of("Tarne nie deinen Rat!", true) + ); + } + + @Test + void isPalindrome_StringIsNull_ReturnFalse() + { + var palindrome = new Palindrome(); + String s = null; + var res = palindrome.isPalindrome(s); + assertEquals(false, res); + } +} \ No newline at end of file