Home
About
Resume
Projects
Links
Blog
Download notebook
{ "cells": [ { "cell_type": "markdown", "id": "5fa33a6c-fbac-4e90-846a-4d5d42a8c1c8", "metadata": {}, "source": [ "### Q17\n", "If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?" ] }, { "cell_type": "code", "execution_count": 1, "id": "e9be7678-b256-42f3-8b0e-303c862468d2", "metadata": {}, "outputs": [], "source": [ "number_word_map = {\n", " 1:\"one\",\n", " 2:\"two\",\n", " 3:\"three\",\n", " 4:\"four\",\n", " 5:\"five\",\n", " 6:\"six\",\n", " 7:\"seven\",\n", " 8:\"eight\",\n", " 9:\"nine\",\n", " 10:\"ten\",\n", " 11:\"eleven\",\n", " 12:\"twelve\",\n", " 13:\"thirteen\",\n", " 14:\"fourteen\",\n", " 15:\"fifteen\",\n", " 16:\"sixteen\",\n", " 17:\"seventeen\",\n", " 18:\"eighteen\",\n", " 19:\"nineteen\",\n", " 20:\"twenty\",\n", " 30:\"thirty\",\n", " 40:\"forty\",\n", " 50:\"fifty\",\n", " 60:\"sixty\",\n", " 70:\"seventy\",\n", " 80:\"eighty\",\n", " 90:\"ninety\",\n", " 100:\"hundred\",\n", " 1000:\"thousand\"\n", "}\n", "def num_to_word(num,sep=\" \"):\n", " if num > 9999 or 1 > num:\n", " print(\"out of range\")\n", " return \"out of range\"\n", " word_string_list = []\n", " for key in [1000,100]:\n", " if num >= key:\n", " coeff = num // key\n", " num -= coeff * key\n", " word_string_list += [number_word_map[coeff],number_word_map[key]]\n", " if word_string_list and num != 0:\n", " word_string_list += [\"and\"]\n", " for key in (*range(90,19,-10),*range(19,0,-1)):\n", " if num >= key:\n", " num -= key\n", " word_string_list += [number_word_map[key]]\n", " return sep.join(word_string_list)\n", " " ] }, { "cell_type": "code", "execution_count": 2, "id": "73bdc922-b39d-4fa6-bd59-cc887158e88e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 900 µs, sys: 289 µs, total: 1.19 ms\n", "Wall time: 1.19 ms\n" ] }, { "data": { "text/plain": [ "21124" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "sum([len(num_to_word(n,''))for n in range(1,1001)])" ] }, { "cell_type": "code", "execution_count": null, "id": "0e5e4228-36a3-4355-8af8-a232868a2349", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }
Previous Notebook:
Project Euler Q16
Next Notebook:
Project Euler Q18
Loading