Skip to main content

Problem 17 Project Euler Solution with python

Number letter counts

If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?


NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.

If you have come till here I am assuming that you have already solved Problem 14(Largest Collatz sequence). In problem 14 we have created a dictionary and have cached the values of the previous sequences and have reduced the run time by 90%. If you have not done the solution in that method I suggest you to have a look at the problem 14 solution and find the concept, because we have used the same concept here.

To be simple first we have stored the value of 1-20, 30, 40, 50, 60, 70, 80, 90 manually and then we have used a for loop from 20-99, created the values of these numbers and stores them in the dictionary so that we can use them again afterwards without repetition.

For example if I were to wite 115 in words then I would just break the number to 1, 15 and then find the value of 1 in dictionary as 'one'(3) and 15 in dictionary as 'fifteen'(7) and then simply add 'and hundred'(10) in the middle and get the value. As simple as that. If I had not used the memorization technique/dynamic programming then I will have to generate the value of the numbers again and again which will consume a lot of resources.

Okay anyways you will get a clear cut idea, once you will see the program.

Program

I am assuming that if you were given a number you can write it in words. If not it is very easy and you can learn it from here: Number Pronunciation and Spelling About.com.
And here is the program(It might look very large but the content in it is really small 😋):
The code is well commented again and I am assuming that there is no need for explaining each and every line. I have already explained the concept behind it(Not in a elaborate way but in a brief manner 😄).

If you want to download above program then you can download it from Github Gist

Output


Summary 

I think this problem first tested whether you knew how to write numbers in words. And then tested if we will remember the concept behind problem 14. Leaving these apart the problem was straight forward and there were no twists, except someone would have missed adding the value of 'one thousand'. That's a silly mistake and the person would soon have rectified after re checking the code.

Guys I have not explained any part code directly because I have commented the code in a very neat and tidy way(Atleast for my imagination😝). But if you have any doubt or didn't understand anything then please do comment in the comment box below and I will be glad to answer your question.

Please feel free to comment in the comment box if I have made any typo or if you have a better/different code when compared to mine. Comment even if your code has more execution time compared to mine. Thinking different is important.

You can also contact me if you want to.

Thank you. Have a nice day😃.

Popular posts from this blog

Making a quiz web app with python and flask

Edit : When you are creating a web app with h tml templates, then y ou will have to sa ve the html file in templates folder in the Current Wor ki ng Directory( CWD). If you save the file in the C W D directl y you will get a TemplateNotFound error. Thank you Udhay for pointing it out.   In this post we will create a quiz website using python . I will be using the flask framework . After reading this tutorial you will learn form submission , flask templates , python code in flask templates , shuffling the questions and options with the random module and few others.  Please note that this tutorial is not big as it seems to be. Some of the code has been rewritten to maintain consistency and also font size is somewhat big so that your eyes won't get stressed reading this tutorial. Also the content has not occupied the full width of the page. In this tutorial I am assuming that you are having a very basic understanding of the flask framework . Please refer the documentation

Problem 11 Project Euler Solution with python

Largest product in a grid In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He