diff --git a/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben.sln b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben.sln new file mode 100644 index 0000000..7e94df9 --- /dev/null +++ b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28922.388 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "29-Ben", "29-Ben\29-Ben.vcxproj", "{29524107-1C9D-4049-A791-254DEB6AE45F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {29524107-1C9D-4049-A791-254DEB6AE45F}.Debug|x64.ActiveCfg = Debug|x64 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Debug|x64.Build.0 = Debug|x64 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Debug|x86.ActiveCfg = Debug|Win32 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Debug|x86.Build.0 = Debug|Win32 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Release|x64.ActiveCfg = Release|x64 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Release|x64.Build.0 = Release|x64 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Release|x86.ActiveCfg = Release|Win32 + {29524107-1C9D-4049-A791-254DEB6AE45F}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {09519332-8EB4-46DA-91B0-23C67A47CF88} + EndGlobalSection +EndGlobal diff --git a/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.cpp b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.cpp new file mode 100644 index 0000000..7a3a403 --- /dev/null +++ b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.cpp @@ -0,0 +1,105 @@ +#include +#include // malloc +#include + +// TO CLARIFY FOR ANYONE READING THIS +// THIS CODE ISNT WRITTEN SERIOUSLY AND +// IS INTENTIONALLY AWFUL, THAT BEING +// SAID, ENJOY :) + +// Returns ammount of double matches, if there's 3 in a row it will return -1 +int matchesInRowOfThree(int first, int second, int third) { + + // Check if all of the numbers are the same, if so then it will return + // -1, indicating that all of the numbers were the same + if (first == second && second == third) + return -1; + + if (first == second || second == third) + return 1; + + // If all else fails, there was no matches, so it will return 0 + return 0; +} + + +// Returns ammount of double matches in a row of 2 +int matchesInRowOfTwo(int first, int second) { + + // Check if all of the numbers are the same, if so then it will return + // 1, indicating that all of the numbers were the same and there was 1 match + if (first == second) + return 1; + + // If all else fails, there was no matches, so it will return 0 + return 0; +} + +int main(int theAmmountOfArgumentsThatWillBePassedInTheArgumentVectorThatProcedesThis, char** argumentVectorThatIsInputtedIntoTheProgramFromTheOSsCommandLineArguments) { + // Firstly announce to the user that numbers are expected to be inputted and provide them a format to input said numbers in + std::cout << "Enter 8 numbers such like '10 12 1 3 4 4 4 1': "; + + // Allocate the array that the numbers will be stored in + // TODO: Find a more efficient way to allocate an array + int* inputArray = (int*)malloc(sizeof(int) * 9); + + // Wait for the users formatted input and then store in the inputArray + std::cin >> inputArray[0] >> inputArray[1] >> inputArray[2] >> inputArray[3] >> inputArray[4] + >> inputArray[5] >> inputArray[6] >> inputArray[7] >> inputArray[8]; + + // End the line for consistant formatting + std::cout << std::endl << std::endl; + + int numberOfTriplets = 0; + int numberOfDoubles = 0; + + // Check the horizontal rows for matches by using the 2 functions defined above + int matchesOnTheFirstHorizontalRow = matchesInRowOfThree(inputArray[0], inputArray[1], inputArray[2]); + int matchesOnTheSecondHorizontalRow = matchesInRowOfThree(inputArray[3], inputArray[4], inputArray[5]); + int matchesOnTheThirdHorizontalRow = matchesInRowOfThree(inputArray[6], inputArray[7], inputArray[8]); + + if (matchesOnTheFirstHorizontalRow == -1) numberOfTriplets = numberOfTriplets + 1; + if (matchesOnTheSecondHorizontalRow == -1) numberOfTriplets = numberOfTriplets + 1; + if (matchesOnTheThirdHorizontalRow == -1) numberOfTriplets = numberOfTriplets + 1; + + if (matchesOnTheFirstHorizontalRow == 1) numberOfDoubles = numberOfDoubles + 1; + if (matchesOnTheSecondHorizontalRow == 1) numberOfDoubles = numberOfDoubles + 1; + if (matchesOnTheThirdHorizontalRow == 1) numberOfDoubles = numberOfDoubles + 1; + + // Check the vertical columns (but to keep consistency, rows) + int matchesOnTheFirstVerticalRow = matchesInRowOfThree(inputArray[0], inputArray[3], inputArray[6]); + int matchesOnTheSecondVerticalRow = matchesInRowOfThree(inputArray[1], inputArray[4], inputArray[7]); + int matchesOnTheThirdVerticalRow = matchesInRowOfThree(inputArray[2], inputArray[5], inputArray[8]); + + if (matchesOnTheFirstVerticalRow == -1) numberOfTriplets = numberOfTriplets + 1; + if (matchesOnTheSecondVerticalRow == -1) numberOfTriplets = numberOfTriplets + 1; + if (matchesOnTheThirdVerticalRow == -1) numberOfTriplets = numberOfTriplets + 1; + + if (matchesOnTheFirstVerticalRow == 1) numberOfDoubles = numberOfDoubles + 1; + if (matchesOnTheSecondVerticalRow == 1) numberOfDoubles = numberOfDoubles + 1; + if (matchesOnTheThirdVerticalRow == 1) numberOfDoubles = numberOfDoubles + 1; + + // Check the big 3 long diagonal rows + int matchesOnRightHandUpLongDiagonal = matchesInRowOfThree(inputArray[6], inputArray[4], inputArray[2]); + int matchesOnLeftHandUpLongDiagonal = matchesInRowOfThree(inputArray[8], inputArray[4], inputArray[0]); + + if (matchesOnRightHandUpLongDiagonal == -1) numberOfTriplets = numberOfTriplets + 1; + if (matchesOnLeftHandUpLongDiagonal == -1) numberOfTriplets = numberOfTriplets + 1; + + if (matchesOnRightHandUpLongDiagonal == 1) numberOfDoubles = numberOfDoubles + 1; + if (matchesOnLeftHandUpLongDiagonal == 1) numberOfDoubles = numberOfDoubles + 1; + + // Check the 4 2 long diagonal rows + int matchesOnRightHandBottomUpDiagonal = matchesInRowOfTwo(inputArray[7], inputArray[5]); + int matchesOnLeftHandBottomUpDiagonal = matchesInRowOfTwo(inputArray[7], inputArray[3]); + int matchesOnRightHandTopDownDiagonal = matchesInRowOfTwo(inputArray[1], inputArray[5]); + int matchesOnLeftHandTopDownDiagonal = matchesInRowOfTwo(inputArray[1], inputArray[3]); + + numberOfDoubles = numberOfDoubles + matchesOnRightHandBottomUpDiagonal; + numberOfDoubles = numberOfDoubles + matchesOnLeftHandBottomUpDiagonal; + numberOfDoubles = numberOfDoubles + matchesOnRightHandTopDownDiagonal; + numberOfDoubles = numberOfDoubles + matchesOnLeftHandTopDownDiagonal; + + // Output the correct calculations to the user + std::cout << "Triplets=" << numberOfTriplets << " Doubles=" << numberOfDoubles << std::endl; +} diff --git a/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.vcxproj b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.vcxproj new file mode 100644 index 0000000..c0a34fd --- /dev/null +++ b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.vcxproj @@ -0,0 +1,159 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + {29524107-1C9D-4049-A791-254DEB6AE45F} + Win32Proj + My29Ben + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + Level3 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.vcxproj.filters b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.vcxproj.filters new file mode 100644 index 0000000..b3a8e84 --- /dev/null +++ b/C++/OLC-Challenges/29-Ben/29-Ben/29-Ben/29-Ben.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file