Finding solutions to programming challenges