diff --git a/notebooks/problem0040.ipynb b/notebooks/problem0040.ipynb new file mode 100644 index 0000000..08f9fa3 --- /dev/null +++ b/notebooks/problem0040.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "42c30745", + "metadata": {}, + "source": [ + "# [Champernowne's Constant](https://projecteuler.net/problem=40)\n", + "\n", + "This is certainly not the fastest or most clever solution for calculating digits of [Champernowne's constant](https://en.wikipedia.org/wiki/Champernowne_constant), but it's fast enough, and pretty comprehensible.\n", + "\n", + "Since there are so many strings to concatenate, for performance it is helpful to use the [`str.join` method](https://docs.python.org/3/library/stdtypes.html#str.join)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "deed40a4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "210" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from itertools import count\n", + "\n", + "c = '.' + ''.join(str(k) for k in range(1, 1_000_001))\n", + "prod(int(c[i]) for i in (1, 10, 100, 1000, 10000, 100000, 1000000))" + ] + }, + { + "cell_type": "markdown", + "id": "59074921", + "metadata": {}, + "source": [ + "## Relevant sequences\n", + "* Digits of Champernowne's constant: [A033307](https://oeis.org/A033307)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 9.5", + "language": "sage", + "name": "sagemath" + }, + "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.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}