My protracted, imperfect solution
This week I decided to try another python code challenge and found these 5 problems in Daniel Borowski’s Medium article. I decided to try problem #1; it seemed straightforward enough — until it wasn’t. It took me several days to complete this — working on it here and there in fits and starts — and my solution is not pythonic or elegant. Here it is anyway.
“Take an input string parameter and determine if exactly 3 question marks exist between every pair of numbers that add up to 10. If so, return true, otherwise return false. “
Here are the example test cases I used (‘testa’ is my creation and ‘testb’ is Daniel’s) :
testa = “1??aaaaaaaaaaaaaaaaaaa?4?3”
testb = ‘acc?7??sss?3rr1??????5’
My first step was to find the digits in the test string and determine if there was a pair of numbers (I went with consecutive numbers, not combinations of all numbers) that equal 10. If there is a pair equal to 10, those two numbers are appended to a list called ‘success’, otherwise the list is empty.
And the result:
Step two was to split the test string into a list of separate elements.
Finally, time for the big show! And for me to put the bits and pieces together. The main function calls sum_finder and checks if the return is an empty string (print “False” and the program ends) or has a pair of numbers equal to 10.
The test string is split into a list, using the split function, the indices of the two numbers determined, and a smaller list is created. The smaller list is a slice of the larger string of the characters between the number pair. A question mark counter is set to 0, the slice is iterated over to count the question marks in the slice and if there are exactly 3 question marks “True” is printed out. Otherwise, it is “False”.
Even as I write this, I know my code is overdone and could be much cleaner. However, success was reaching the end of this challenge on my own. Refactoring resides in the future.