# oeis-sequences
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
Python functions to generate [The On-Line Encyclopedia of Integer Sequences](https://oeis.org/) (OEIS) sequences.
Python is the ideal language for this purpose because of the following reasons:
1. Python is a general purpose programming language with support for file I/O and graphing.
2. Arbitrary size integer format is standard in Python. This is important as many sequences in OEIS contain very large integers that will not fit in 64-bit integer formats. This allows the implemented functions to generate terms for arbitrary large `n` and they do not depend on floating point precision. For higher performance, one can use [`gmpy2`](https://pypi.org/project/gmpy2/).
3. There exists extensive modules for combinatorics and number theory such as `math`, `itertools` and [`sympy`](https://www.sympy.org/en/index.html).
Although Python can be slow as it is an interpreted language, this can be mitigated somewhat using tools such as [`pypy`](https://www.pypy.org/) and [`numba`](https://numba.pydata.org/).
## Requirements
Requires `python` >= 3.8
## Installation
`pip install OEISsequences`
## Usage
After installation, `from oeis_sequences import OEISsequences` will import all the functions accessible via `OEISsequences.Axxxxxx`.
Alternatively, invidividual functions can be imported as `from oeis_sequences.OEISsequences import Axxxxxx`.
For each sequence, there are (up to) 3 different kinds of functions:
1. Functions named `Axxxxxx`: Axxxxxx(n) returns the *n*-th term of OEIS sequence Axxxxxx.
2. Functions named `Axxxxxx_T`: returns T(n,k) for OEIS sequences where the natural definition is a 2D table *T*.
3. Functions named `Axxxxxx_gen`: Axxxxxx_gen() returns a generator of OEIS sequence Axxxxxx.
The function `Axxxxxx` is best used to compute a single term. The generator `Axxxxxx_gen` is typically defined for sequences where terms are best generated sequentially and is best used when computing a sequence of consecutive terms.
For the generator, we can for example use `list(islice(Axxxxxx_gen(),10))` to return the first 10 terms of sequence Axxxxxx
Alternatively, setting `gen = Axxxxxx_gen()` and using `next(gen)` returns the next term of the sequence.
Given `Axxxxxx_gen`, one can define a function `Axxxxxx` as:
```
def Axxxxxx(n,offset=1): return next(islice(Axxxxxx_gen(),n-offset,None))
```
where a(*offset*) is the first term returned by the generator. This value of *offset* is the same as the *offset* parameter in the OEIS database.
Some functions `Axxxxxx_gen` contain an optional keyword `startvalue` that returns a generator of terms that are larger than or equal to `startvalue`. This keyword is only available on sequences that are nondecreasing.
For some sequences, e.g. `A269483`, both types of functions `Axxxxxx` and `Axxxxxx_gen` are provided.
## Examples
Least power of 3 having exactly n consecutive 7's in its decimal representation.
```
from oeis_sequences.OEISsequences import A131546
print(A131546(5))
>> 721
```
Minimal exponents m such that the fractional part of (10/9)<sup>m</sup> obtains a maximum (when starting with m=1).
```
from itertools import islice
from oeis_sequences.OEISsequences import A153695_gen
print(list(islice(A153695_gen(),10)))
>> [1, 2, 3, 4, 5, 6, 13, 17, 413, 555]
```
Numbers n such that n<sup>3</sup> has one or more occurrences of exactly nine different digits.
```
from oeis_sequences.OEISsequences import A235811_gen
print(list(islice(A235811_gen(startvalue=1475),10))) # print first 10 terms >= 1475
>> [1475, 1484, 1531, 1706, 1721, 1733, 1818, 1844, 1895, 1903]
```
## Utility functions
The module also includes some utility functions for exploring integer sequences in OEIS such as palindrome generator, Boustrophedon transform, run length transform, Faulhaber's formula, lunar arithmetic, squarefree numbers, *k*-almost primes, squarefree *k*-almost primes, etc.
Raw data
{
"_id": null,
"home_page": "https://github.com/postvakje/oeis-sequences",
"name": "OEISsequences",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Chai Wah Wu",
"author_email": "cwwuieee@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/4e/88/7b48051d53c049b42211824891c0a85b85ea507904ed91772ca97deee16b/oeissequences-0.2.4.4.tar.gz",
"platform": null,
"description": "# oeis-sequences\r\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\r\n\r\nPython functions to generate [The On-Line Encyclopedia of Integer Sequences](https://oeis.org/) (OEIS) sequences.\r\n\r\nPython is the ideal language for this purpose because of the following reasons:\r\n\r\n1. Python is a general purpose programming language with support for file I/O and graphing.\r\n2. Arbitrary size integer format is standard in Python. This is important as many sequences in OEIS contain very large integers that will not fit in 64-bit integer formats. This allows the implemented functions to generate terms for arbitrary large `n` and they do not depend on floating point precision. For higher performance, one can use [`gmpy2`](https://pypi.org/project/gmpy2/).\r\n3. There exists extensive modules for combinatorics and number theory such as `math`, `itertools` and [`sympy`](https://www.sympy.org/en/index.html).\r\n\r\nAlthough Python can be slow as it is an interpreted language, this can be mitigated somewhat using tools such as [`pypy`](https://www.pypy.org/) and [`numba`](https://numba.pydata.org/).\r\n\r\n## Requirements\r\nRequires `python` >= 3.8\r\n\r\n## Installation\r\n`pip install OEISsequences`\r\n\r\n## Usage\r\nAfter installation, `from oeis_sequences import OEISsequences` will import all the functions accessible via `OEISsequences.Axxxxxx`.\r\nAlternatively, invidividual functions can be imported as `from oeis_sequences.OEISsequences import Axxxxxx`.\r\n\r\nFor each sequence, there are (up to) 3 different kinds of functions:\r\n\r\n1. Functions named `Axxxxxx`: Axxxxxx(n) returns the *n*-th term of OEIS sequence Axxxxxx.\r\n\r\n2. Functions named `Axxxxxx_T`: returns T(n,k) for OEIS sequences where the natural definition is a 2D table *T*.\r\n\r\n3. Functions named `Axxxxxx_gen`: Axxxxxx_gen() returns a generator of OEIS sequence Axxxxxx.\r\n\r\nThe function `Axxxxxx` is best used to compute a single term. The generator `Axxxxxx_gen` is typically defined for sequences where terms are best generated sequentially and is best used when computing a sequence of consecutive terms. \r\n\r\nFor the generator, we can for example use `list(islice(Axxxxxx_gen(),10))` to return the first 10 terms of sequence Axxxxxx\r\nAlternatively, setting `gen = Axxxxxx_gen()` and using `next(gen)` returns the next term of the sequence.\r\n\r\nGiven `Axxxxxx_gen`, one can define a function `Axxxxxx` as: \r\n\r\n```\r\ndef Axxxxxx(n,offset=1): return next(islice(Axxxxxx_gen(),n-offset,None))\r\n```\r\n\r\nwhere a(*offset*) is the first term returned by the generator. This value of *offset* is the same as the *offset* parameter in the OEIS database.\r\n\r\nSome functions `Axxxxxx_gen` contain an optional keyword `startvalue` that returns a generator of terms that are larger than or equal to `startvalue`. This keyword is only available on sequences that are nondecreasing.\r\n\r\nFor some sequences, e.g. `A269483`, both types of functions `Axxxxxx` and `Axxxxxx_gen` are provided.\r\n\r\n## Examples\r\n\r\nLeast power of 3 having exactly n consecutive 7's in its decimal representation.\r\n``` \r\nfrom oeis_sequences.OEISsequences import A131546\r\nprint(A131546(5))\r\n>> 721\r\n``` \r\nMinimal exponents m such that the fractional part of (10/9)<sup>m</sup> obtains a maximum (when starting with m=1). \r\n```\r\nfrom itertools import islice\r\nfrom oeis_sequences.OEISsequences import A153695_gen\r\nprint(list(islice(A153695_gen(),10)))\r\n>> [1, 2, 3, 4, 5, 6, 13, 17, 413, 555]\r\n```\r\n\r\nNumbers n such that n<sup>3</sup> has one or more occurrences of exactly nine different digits.\r\n```\r\nfrom oeis_sequences.OEISsequences import A235811_gen \r\nprint(list(islice(A235811_gen(startvalue=1475),10))) # print first 10 terms >= 1475\r\n>> [1475, 1484, 1531, 1706, 1721, 1733, 1818, 1844, 1895, 1903]\r\n```\r\n\r\n## Utility functions\r\nThe module also includes some utility functions for exploring integer sequences in OEIS such as palindrome generator, Boustrophedon transform, run length transform, Faulhaber's formula, lunar arithmetic, squarefree numbers, *k*-almost primes, squarefree *k*-almost primes, etc.\r\n",
"bugtrack_url": null,
"license": "LICENSE",
"summary": "Python functions to generate OEIS sequences",
"version": "0.2.4.4",
"project_urls": {
"Homepage": "https://github.com/postvakje/oeis-sequences"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2600ed84d9f3188e772b2be43e70f67dec2c1ffabd2789a3cbb6ee13d7b1ac46",
"md5": "12c5914fb474197f91d8ce458c412e4d",
"sha256": "68a07ba3af32f695b56859ff7f0a24fe7ef56f33d7d645d679039be95bba573b"
},
"downloads": -1,
"filename": "OEISsequences-0.2.4.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "12c5914fb474197f91d8ce458c412e4d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 291313,
"upload_time": "2024-11-16T15:29:26",
"upload_time_iso_8601": "2024-11-16T15:29:26.986214Z",
"url": "https://files.pythonhosted.org/packages/26/00/ed84d9f3188e772b2be43e70f67dec2c1ffabd2789a3cbb6ee13d7b1ac46/OEISsequences-0.2.4.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e887b48051d53c049b42211824891c0a85b85ea507904ed91772ca97deee16b",
"md5": "36acc8cfddd879981371df458f6bf1b7",
"sha256": "07ac2a98357f5e1fd6bbf254803112f205f7d70f319539fa5407a7f8d89f3ce0"
},
"downloads": -1,
"filename": "oeissequences-0.2.4.4.tar.gz",
"has_sig": false,
"md5_digest": "36acc8cfddd879981371df458f6bf1b7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 279019,
"upload_time": "2024-11-16T15:29:29",
"upload_time_iso_8601": "2024-11-16T15:29:29.026529Z",
"url": "https://files.pythonhosted.org/packages/4e/88/7b48051d53c049b42211824891c0a85b85ea507904ed91772ca97deee16b/oeissequences-0.2.4.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-16 15:29:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "postvakje",
"github_project": "oeis-sequences",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "oeissequences"
}