Enable ruff RUF002 rule (#11377)

* Enable ruff RUF002 rule

* Fix

---------

Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
Maxim Smolskiy 2024-04-22 22:51:47 +03:00 committed by GitHub
parent 79dc7c97ac
commit 4700297b3e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
69 changed files with 132 additions and 131 deletions

View File

@ -1,7 +1,7 @@
"""
Given a partially filled 9×9 2D array, the objective is to fill a 9×9
Given a partially filled 9x9 2D array, the objective is to fill a 9x9
square grid with digits numbered 1 to 9, so that every row, column, and
and each of the nine 3×3 sub-grids contains all of the digits.
and each of the nine 3x3 sub-grids contains all of the digits.
This can be solved using Backtracking and is similar to n-queens.
We check to see if a cell is safe or not and recursively call the

View File

@ -8,8 +8,8 @@ def set_bit(number: int, position: int) -> int:
Set the bit at position to 1.
Details: perform bitwise or for given number and X.
Where X is a number with all the bits zeroes and bit on given
position one.
Where X is a number with all the bits - zeroes and bit on given
position - one.
>>> set_bit(0b1101, 1) # 0b1111
15
@ -26,8 +26,8 @@ def clear_bit(number: int, position: int) -> int:
Set the bit at position to 0.
Details: perform bitwise and for given number and X.
Where X is a number with all the bits ones and bit on given
position zero.
Where X is a number with all the bits - ones and bit on given
position - zero.
>>> clear_bit(0b10010, 1) # 0b10000
16
@ -42,8 +42,8 @@ def flip_bit(number: int, position: int) -> int:
Flip the bit at position.
Details: perform bitwise xor for given number and X.
Where X is a number with all the bits zeroes and bit on given
position one.
Where X is a number with all the bits - zeroes and bit on given
position - one.
>>> flip_bit(0b101, 1) # 0b111
7
@ -79,7 +79,7 @@ def get_bit(number: int, position: int) -> int:
Get the bit at the given position
Details: perform bitwise and for the given number and X,
Where X is a number with all the bits zeroes and bit on given position one.
Where X is a number with all the bits - zeroes and bit on given position - one.
If the result is not equal to 0, then the bit on the given position is 1, else 0.
>>> get_bit(0b1010, 0)

View File

@ -1,7 +1,7 @@
"""
https://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform
The BurrowsWheeler transform (BWT, also called block-sorting compression)
The Burrows-Wheeler transform (BWT, also called block-sorting compression)
rearranges a character string into runs of similar characters. This is useful
for compression, since it tends to be easy to compress a string that has runs
of repeated characters by techniques such as move-to-front transform and

View File

@ -1,5 +1,5 @@
"""
One of the several implementations of LempelZivWelch compression algorithm
One of the several implementations of Lempel-Ziv-Welch compression algorithm
https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch
"""
@ -43,7 +43,7 @@ def add_key_to_lexicon(
def compress_data(data_bits: str) -> str:
"""
Compresses given data_bits using LempelZivWelch compression algorithm
Compresses given data_bits using Lempel-Ziv-Welch compression algorithm
and returns the result as a string
"""
lexicon = {"0": "0", "1": "1"}

View File

@ -1,5 +1,5 @@
"""
One of the several implementations of LempelZivWelch decompression algorithm
One of the several implementations of Lempel-Ziv-Welch decompression algorithm
https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch
"""
@ -26,7 +26,7 @@ def read_file_binary(file_path: str) -> str:
def decompress_data(data_bits: str) -> str:
"""
Decompresses given data_bits using LempelZivWelch compression algorithm
Decompresses given data_bits using Lempel-Ziv-Welch compression algorithm
and returns the result as a string
"""
lexicon = {"0": "0", "1": "1"}

View File

@ -17,7 +17,7 @@ class RedBlackTree:
and slower for reading in the average case, though, because they're
both balanced binary search trees, both will get the same asymptotic
performance.
To read more about them, https://en.wikipedia.org/wiki/Redblack_tree
To read more about them, https://en.wikipedia.org/wiki/Red-black_tree
Unless otherwise specified, all asymptotic runtimes are specified in
terms of the size of the tree.
"""

View File

@ -74,9 +74,9 @@ def detect_high_low_threshold(
image_shape, destination, threshold_low, threshold_high, weak, strong
):
"""
High-Low threshold detection. If an edge pixels gradient value is higher
High-Low threshold detection. If an edge pixel's gradient value is higher
than the high threshold value, it is marked as a strong edge pixel. If an
edge pixels gradient value is smaller than the high threshold value and
edge pixel's gradient value is smaller than the high threshold value and
larger than the low threshold value, it is marked as a weak edge pixel. If
an edge pixel's value is smaller than the low threshold value, it will be
suppressed.

View File

@ -182,7 +182,7 @@ class IndexCalculation:
Atmospherically Resistant Vegetation Index 2
https://www.indexdatabase.de/db/i-single.php?id=396
:return: index
0.18+1.17*(self.nirself.red)/(self.nir+self.red)
-0.18+1.17*(self.nir-self.red)/(self.nir+self.red)
"""
return -0.18 + (1.17 * ((self.nir - self.red) / (self.nir + self.red)))

View File

@ -18,7 +18,7 @@ Approach:
The basic idea is to go over recursively to find the way such that the sum
of chosen elements is tar. For every element, we have two choices
1. Include the element in our set of chosen elements.
2. Dont include the element in our set of chosen elements.
2. Don't include the element in our set of chosen elements.
"""

View File

@ -20,8 +20,8 @@ def couloumbs_law(
Reference
----------
Coulomb (1785) "Premier mémoire sur lélectricité et le magnétisme,"
Histoire de lAcadémie Royale des Sciences, pp. 569577.
Coulomb (1785) "Premier mémoire sur l'électricité et le magnétisme,"
Histoire de l'Académie Royale des Sciences, pp. 569-577.
Parameters
----------

View File

@ -1,6 +1,6 @@
"""
The Fletcher checksum is an algorithm for computing a position-dependent
checksum devised by John G. Fletcher (19342012) at Lawrence Livermore Labs
checksum devised by John G. Fletcher (1934-2012) at Lawrence Livermore Labs
in the late 1970s.[1] The objective of the Fletcher checksum was to
provide error-detection properties approaching those of a cyclic
redundancy check but with the lower computational effort associated

View File

@ -1,5 +1,5 @@
"""
Lowerupper (LU) decomposition factors a matrix as a product of a lower
Lower-upper (LU) decomposition factors a matrix as a product of a lower
triangular matrix and an upper triangular matrix. A square matrix has an LU
decomposition under the following conditions:
- If the matrix is invertible, then it has an LU decomposition if and only

View File

@ -18,7 +18,7 @@ def schur_complement(
the pseudo_inv argument.
Link to Wiki: https://en.wikipedia.org/wiki/Schur_complement
See also Convex Optimization Boyd and Vandenberghe, A.5.5
See also Convex Optimization - Boyd and Vandenberghe, A.5.5
>>> import numpy as np
>>> a = np.array([[1, 2], [2, 1]])
>>> b = np.array([[0, 3], [3, 0]])

View File

@ -11,7 +11,7 @@ for polynomial regression:
β = (XᵀX)¹Xᵀy = Xy
where X is the design matrix, y is the response vector, and X denotes the MoorePenrose
where X is the design matrix, y is the response vector, and X denotes the Moore-Penrose
pseudoinverse of X. In the case of polynomial regression, the design matrix is
|1 x₁ x₁² x₁ᵐ|
@ -106,7 +106,7 @@ class PolynomialRegression:
β = (XᵀX)¹Xᵀy = Xy
where X denotes the MoorePenrose pseudoinverse of the design matrix X. This
where X denotes the Moore-Penrose pseudoinverse of the design matrix X. This
function computes X using singular value decomposition (SVD).
References:

View File

@ -5,7 +5,7 @@ from math import ceil, factorial
def pi(precision: int) -> str:
"""
The Chudnovsky algorithm is a fast method for calculating the digits of PI,
based on Ramanujans PI formulae.
based on Ramanujan's PI formulae.
https://en.wikipedia.org/wiki/Chudnovsky_algorithm

View File

@ -21,10 +21,10 @@ def calculate_prob(text: str) -> None:
:return: Prints
1) Entropy of information based on 1 alphabet
2) Entropy of information based on couples of 2 alphabet
3) print Entropy of H(X nXn1)
3) print Entropy of H(X n|Xn-1)
Text from random books. Also, random quotes.
>>> text = ("Behind Winstons back the voice "
>>> text = ("Behind Winston's back the voice "
... "from the telescreen was still "
... "babbling and the overfulfilment")
>>> calculate_prob(text)

View File

@ -1,12 +1,12 @@
"""
In mathematics, the LucasLehmer test (LLT) is a primality test for Mersenne
In mathematics, the Lucas-Lehmer test (LLT) is a primality test for Mersenne
numbers. https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test
A Mersenne number is a number that is one less than a power of two.
That is M_p = 2^p - 1
https://en.wikipedia.org/wiki/Mersenne_prime
The LucasLehmer test is the primality test used by the
The Lucas-Lehmer test is the primality test used by the
Great Internet Mersenne Prime Search (GIMPS) to locate large primes.
"""

View File

@ -9,7 +9,7 @@ def modular_division(a: int, b: int, n: int) -> int:
GCD ( Greatest Common Divisor ) or HCF ( Highest Common Factor )
Given three integers a, b, and n, such that gcd(a,n)=1 and n>1, the algorithm should
return an integer x such that 0xn1, and b/a=x(modn) (that is, b=ax(modn)).
return an integer x such that 0xn-1, and b/a=x(modn) (that is, b=ax(modn)).
Theorem:
a has a multiplicative inverse modulo n iff gcd(a,n) = 1

View File

@ -1,5 +1,5 @@
"""
Given a function on floating number f(x) and two floating numbers a and b such that
Given a function on floating number f(x) and two floating numbers `a` and `b` such that
f(a) * f(b) < 0 and f(x) is continuous in [a, b].
Here f(x) represents algebraic or transcendental equation.
Find root of function in interval [a, b] (Or find a value of x such that f(x) is 0)

View File

@ -1,7 +1,7 @@
"""
Python program to show how to interpolate and evaluate a polynomial
using Neville's method.
Nevilles method evaluates a polynomial that passes through a
Neville's method evaluates a polynomial that passes through a
given set of x and y points for a particular x value (x0) using the
Newton polynomial form.
Reference:

View File

@ -2,10 +2,10 @@
https://en.wikipedia.org/wiki/Augmented_matrix
This algorithm solves simultaneous linear equations of the form
λa + λb + λc + λd + ... = γ as [λ, λ, λ, λ, ..., γ]
Where λ & γ are individual coefficients, the no. of equations = no. of coefficients - 1
λa + λb + λc + λd + ... = y as [λ, λ, λ, λ, ..., y]
Where λ & y are individual coefficients, the no. of equations = no. of coefficients - 1
Note in order to work there must exist 1 equation where all instances of λ and γ != 0
Note in order to work there must exist 1 equation where all instances of λ and y != 0
"""

View File

@ -31,7 +31,7 @@ Explanation: There is no 1 in the matrix.
Approach:
We initialize another matrix (dp) with the same dimensions
as the original one initialized with all 0s.
as the original one initialized with all 0's.
dp_array(i,j) represents the side length of the maximum square whose
bottom right corner is the cell with index (i,j) in the original matrix.
@ -39,7 +39,7 @@ bottom right corner is the cell with index (i,j) in the original matrix.
Starting from index (0,0), for every 1 found in the original matrix,
we update the value of the current element as
dp_array(i,j)=dp_array(dp(i1,j),dp_array(i1,j1),dp_array(i,j1)) + 1.
dp_array(i,j)=dp_array(dp(i-1,j),dp_array(i-1,j-1),dp_array(i,j-1)) + 1.
"""

View File

@ -89,7 +89,7 @@ def spiral_traversal(matrix: list[list]) -> list[int]:
Algorithm:
Step 1. first pop the 0 index list. (which is [1,2,3,4] and concatenate the
output of [step 2])
Step 2. Now perform matrixs Transpose operation (Change rows to column
Step 2. Now perform matrix's Transpose operation (Change rows to column
and vice versa) and reverse the resultant matrix.
Step 3. Pass the output of [2nd step], to same recursive function till
base case hits.

View File

@ -2,10 +2,10 @@
"""
A Framework of Back Propagation Neural NetworkBP model
A Framework of Back Propagation Neural Network (BP) model
Easy to use:
* add many layers as you want
* add many layers as you want ! ! !
* clearly see how the loss decreasing
Easy to expand:
* more activation functions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
"""
DavisPutnamLogemannLoveland (DPLL) algorithm is a complete, backtracking-based
Davis-Putnam-Logemann-Loveland (DPLL) algorithm is a complete, backtracking-based
search algorithm for deciding the satisfiability of propositional logic formulae in
conjunctive normal form, i.e, for solving the Conjunctive Normal Form SATisfiability
(CNF-SAT) problem.

View File

@ -1,6 +1,6 @@
#!/usr/bin/python
"""
The FisherYates shuffle is an algorithm for generating a random permutation of a
The Fisher-Yates shuffle is an algorithm for generating a random permutation of a
finite sequence.
For more details visit
wikipedia/Fischer-Yates-Shuffle.

View File

@ -3,7 +3,7 @@ Calculate the buoyant force of any body completely or partially submerged in a s
fluid. This principle was discovered by the Greek mathematician Archimedes.
Equation for calculating buoyant force:
Fb = ρ * V * g
Fb = p * V * g
https://en.wikipedia.org/wiki/Archimedes%27_principle
"""

View File

@ -16,8 +16,8 @@ assumed to be concentrated to visualize its motion. In other words, the center o
is the particle equivalent of a given object for the application of Newton's laws of
motion.
In the case of a system of particles P_i, i = 1,...,n, each with mass m_i that are
located in space with coordinates r_i, i = 1,...,n, the coordinates R of the center
In the case of a system of particles P_i, i = 1, ..., n , each with mass m_i that are
located in space with coordinates r_i, i = 1, ..., n , the coordinates R of the center
of mass corresponds to:
R = (Σ(mi * ri) / Σ(mi))
@ -36,8 +36,8 @@ def center_of_mass(particles: list[Particle]) -> Coord3D:
Input Parameters
----------------
particles: list(Particle):
A list of particles where each particle is a tuple with it´s (x, y, z) position and
it´s mass.
A list of particles where each particle is a tuple with it's (x, y, z) position and
it's mass.
Returns
-------

View File

@ -6,7 +6,7 @@ or centre of curvature.
The unit of centripetal force is newton.
The centripetal force is always directed perpendicular to the
direction of the objects displacement. Using Newtons second
direction of the object's displacement. Using Newton's second
law of motion, it is found that the centripetal force of an object
moving in a circular path always acts towards the centre of the circle.
The Centripetal Force Formula is given as the product of mass (in kg)

View File

@ -12,13 +12,13 @@ two inertial reference frames and X' moves in the x direction with velocity v
with respect to X, then the Lorentz transformation from X to X' is X' = BX,
where
| γ -γβ 0 0|
B = |-γβ γ 0 0|
| y -γβ 0 0|
B = |-γβ y 0 0|
| 0 0 1 0|
| 0 0 0 1|
is the matrix describing the Lorentz boost between X and X',
γ = 1 / (1 - /) is the Lorentz factor, and β = v/c is the velocity as
y = 1 / (1 - /) is the Lorentz factor, and β = v/c is the velocity as
a fraction of c.
Reference: https://en.wikipedia.org/wiki/Lorentz_transformation
@ -63,7 +63,7 @@ def beta(velocity: float) -> float:
def gamma(velocity: float) -> float:
"""
Calculate the Lorentz factor γ = 1 / (1 - /) for a given velocity
Calculate the Lorentz factor y = 1 / (1 - /) for a given velocity
>>> gamma(4)
1.0000000000000002
>>> gamma(1e5)
@ -90,12 +90,12 @@ def transformation_matrix(velocity: float) -> np.ndarray:
"""
Calculate the Lorentz transformation matrix for movement in the x direction:
| γ -γβ 0 0|
|-γβ γ 0 0|
| y -γβ 0 0|
|-γβ y 0 0|
| 0 0 1 0|
| 0 0 0 1|
where γ is the Lorentz factor and β is the velocity as a fraction of c
where y is the Lorentz factor and β is the velocity as a fraction of c
>>> transformation_matrix(29979245)
array([[ 1.00503781, -0.10050378, 0. , 0. ],
[-0.10050378, 1.00503781, 0. , 0. ],

View File

@ -8,10 +8,10 @@ pipe. Reynolds number is defined by the ratio of inertial forces to that of
viscous forces.
R = Inertial Forces / Viscous Forces
R = (ρ * V * D)/μ
R = (p * V * D)/μ
where :
ρ = Density of fluid (in Kg/m^3)
p = Density of fluid (in Kg/m^3)
D = Diameter of pipe through which fluid flows (in m)
V = Velocity of flow of the fluid (in m/s)
μ = Viscosity of the fluid (in Ns/m^2)

View File

@ -8,13 +8,13 @@ and buoyancy is equal to the downward gravity force acting on the
object. The acceleration of the object is zero as the net force acting on
the object is zero.
Vt = ((2 * m * g)/(ρ * A * Cd))^0.5
Vt = ((2 * m * g)/(p * A * Cd))^0.5
where :
Vt = Terminal velocity (in m/s)
m = Mass of the falling object (in Kg)
g = Acceleration due to gravity (value taken : imported from scipy)
ρ = Density of the fluid through which the object is falling (in Kg/m^3)
p = Density of the fluid through which the object is falling (in Kg/m^3)
A = Projected area of the object (in m^2)
Cd = Drag coefficient (dimensionless)

View File

@ -4,7 +4,7 @@ Project Euler Problem 4: https://projecteuler.net/problem=4
Largest palindrome product
A palindromic number reads the same both ways. The largest palindrome made
from the product of two 2-digit numbers is 9009 = 91 × 99.
from the product of two 2-digit numbers is 9009 = 91 x 99.
Find the largest palindrome made from the product of two 3-digit numbers.

View File

@ -4,7 +4,7 @@ Project Euler Problem 4: https://projecteuler.net/problem=4
Largest palindrome product
A palindromic number reads the same both ways. The largest palindrome made
from the product of two 2-digit numbers is 9009 = 91 × 99.
from the product of two 2-digit numbers is 9009 = 91 x 99.
Find the largest palindrome made from the product of two 3-digit numbers.

View File

@ -4,7 +4,7 @@ Project Euler Problem 8: https://projecteuler.net/problem=8
Largest product in a series
The four adjacent digits in the 1000-digit number that have the greatest
product are 9 × 9 × 8 × 9 = 5832.
product are 9 x 9 x 8 x 9 = 5832.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843

View File

@ -4,7 +4,7 @@ Project Euler Problem 8: https://projecteuler.net/problem=8
Largest product in a series
The four adjacent digits in the 1000-digit number that have the greatest
product are 9 × 9 × 8 × 9 = 5832.
product are 9 x 9 x 8 x 9 = 5832.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843

View File

@ -4,7 +4,7 @@ Project Euler Problem 8: https://projecteuler.net/problem=8
Largest product in a series
The four adjacent digits in the 1000-digit number that have the greatest
product are 9 × 9 × 8 × 9 = 5832.
product are 9 x 9 x 8 x 9 = 5832.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843

View File

@ -1,9 +1,9 @@
"""
Problem 15: https://projecteuler.net/problem=15
Starting in the top left corner of a 2×2 grid, and only being able to move to
Starting in the top left corner of a 2x2 grid, and only being able to move to
the right and down, there are exactly 6 routes to the bottom right corner.
How many such routes are there through a 20×20 grid?
How many such routes are there through a 20x20 grid?
"""
from math import factorial

View File

@ -1,9 +1,9 @@
"""
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1
n! means n x (n - 1) x ... x 3 x 2 x 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
For example, 10! = 10 x 9 x ... x 3 x 2 x 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Find the sum of the digits in the number 100!

View File

@ -1,9 +1,9 @@
"""
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1
n! means n x (n - 1) x ... x 3 x 2 x 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
For example, 10! = 10 x 9 x ... x 3 x 2 x 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Find the sum of the digits in the number 100!

View File

@ -1,9 +1,9 @@
"""
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1
n! means n x (n - 1) x ... x 3 x 2 x 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
For example, 10! = 10 x 9 x ... x 3 x 2 x 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Find the sum of the digits in the number 100!

View File

@ -1,9 +1,9 @@
"""
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1
n! means n x (n - 1) x ... x 3 x 2 x 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
For example, 10! = 10 x 9 x ... x 3 x 2 x 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Find the sum of the digits in the number 100!

View File

@ -10,7 +10,7 @@ score.
For example, when the list is sorted into alphabetical order, COLIN, which is
worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would
obtain a score of 938 × 53 = 49714.
obtain a score of 938 x 53 = 49714.
What is the total of all the name scores in the file?
"""

View File

@ -10,7 +10,7 @@ score.
For example, when the list is sorted into alphabetical order, COLIN, which is
worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would
obtain a score of 938 × 53 = 49714.
obtain a score of 938 x 53 = 49714.
What is the total of all the name scores in the file?
"""

View File

@ -1,7 +1,7 @@
"""
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
Fn = Fn-1 + Fn-2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:

View File

@ -1,7 +1,7 @@
"""
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
Fn = Fn-1 + Fn-2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:

View File

@ -1,7 +1,7 @@
"""
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
Fn = Fn-1 + Fn-2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:

View File

@ -9,12 +9,12 @@ n2 + n + 41
It turns out that the formula will produce 40 primes for the consecutive values
n = 0 to 39. However, when n = 40, 402 + 40 + 41 = 40(40 + 1) + 41 is divisible
by 41, and certainly when n = 41, 412 + 41 + 41 is clearly divisible by 41.
The incredible formula n2 79n + 1601 was discovered, which produces 80 primes
for the consecutive values n = 0 to 79. The product of the coefficients, 79 and
1601, is 126479.
The incredible formula n2 - 79n + 1601 was discovered, which produces 80 primes
for the consecutive values n = 0 to 79. The product of the coefficients, -79 and
1601, is -126479.
Considering quadratics of the form:
+ an + b, where |a| &lt; 1000 and |b| &lt; 1000
where |n| is the modulus/absolute value of ne.g. |11| = 11 and |4| = 4
where |n| is the modulus/absolute value of ne.g. |11| = 11 and |-4| = 4
Find the product of the coefficients, a and b, for the quadratic expression that
produces the maximum number of primes for consecutive values of n, starting with
n = 0.

View File

@ -2,14 +2,14 @@
Coin sums
Problem 31: https://projecteuler.net/problem=31
In England the currency is made up of pound, £, and pence, p, and there are
In England the currency is made up of pound, f, and pence, p, and there are
eight coins in general circulation:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
It is possible to make £2 in the following way:
1p, 2p, 5p, 10p, 20p, 50p, f1 (100p) and f2 (200p).
It is possible to make f2 in the following way:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
How many different ways can £2 be made using any number of coins?
1xf1 + 1x50p + 2x20p + 1x5p + 1x2p + 3x1p
How many different ways can f2 be made using any number of coins?
"""

View File

@ -3,17 +3,17 @@ Problem 31: https://projecteuler.net/problem=31
Coin sums
In England the currency is made up of pound, £, and pence, p, and there are
In England the currency is made up of pound, f, and pence, p, and there are
eight coins in general circulation:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
It is possible to make £2 in the following way:
1p, 2p, 5p, 10p, 20p, 50p, f1 (100p) and f2 (200p).
It is possible to make f2 in the following way:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
How many different ways can £2 be made using any number of coins?
1xf1 + 1x50p + 2x20p + 1x5p + 1x2p + 3x1p
How many different ways can f2 be made using any number of coins?
Hint:
> There are 100 pence in a pound (£1 = 100p)
> There are 100 pence in a pound (f1 = 100p)
> There are coins(in pence) are available: 1, 2, 5, 10, 20, 50, 100 and 200.
> how many different ways you can combine these values to create 200 pence.

View File

@ -3,7 +3,7 @@ We shall say that an n-digit number is pandigital if it makes use of all the
digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through
5 pandigital.
The product 7254 is unusual, as the identity, 39 × 186 = 7254, containing
The product 7254 is unusual, as the identity, 39 x 186 = 7254, containing
multiplicand, multiplier, and product is 1 through 9 pandigital.
Find the sum of all products whose multiplicand/multiplier/product identity can

View File

@ -3,9 +3,9 @@ Project Euler Problem 38: https://projecteuler.net/problem=38
Take the number 192 and multiply it by each of 1, 2, and 3:
192 × 1 = 192
192 × 2 = 384
192 × 3 = 576
192 x 1 = 192
192 x 2 = 384
192 x 3 = 576
By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call
192384576 the concatenated product of 192 and (1,2,3)

View File

@ -11,7 +11,7 @@ It can be seen that the 12th digit of the fractional part is 1.
If dn represents the nth digit of the fractional part, find the value of the
following expression.
d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000
d1 x d10 x d100 x d1000 x d10000 x d100000 x d1000000
"""

View File

@ -1,14 +1,14 @@
"""
Problem 44: https://projecteuler.net/problem=44
Pentagonal numbers are generated by the formula, Pn=n(3n1)/2. The first ten
Pentagonal numbers are generated by the formula, Pn=n(3n-1)/2. The first ten
pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their difference,
70 22 = 48, is not pentagonal.
70 - 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference
are pentagonal and D = |Pk Pj| is minimised; what is the value of D?
are pentagonal and D = |Pk - Pj| is minimised; what is the value of D?
"""

View File

@ -3,8 +3,8 @@ Problem 45: https://projecteuler.net/problem=45
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle T(n) = (n * (n + 1)) / 2 1, 3, 6, 10, 15, ...
Pentagonal P(n) = (n * (3 * n 1)) / 2 1, 5, 12, 22, 35, ...
Hexagonal H(n) = n * (2 * n 1) 1, 6, 15, 28, 45, ...
Pentagonal P(n) = (n * (3 * n - 1)) / 2 1, 5, 12, 22, 35, ...
Hexagonal H(n) = n * (2 * n - 1) 1, 6, 15, 28, 45, ...
It can be verified that T(285) = P(165) = H(143) = 40755.
Find the next triangle number that is also pentagonal and hexagonal.

View File

@ -4,12 +4,12 @@ Problem 46: https://projecteuler.net/problem=46
It was proposed by Christian Goldbach that every odd composite number can be
written as the sum of a prime and twice a square.
9 = 7 + 2 × 12
15 = 7 + 2 × 22
21 = 3 + 2 × 32
25 = 7 + 2 × 32
27 = 19 + 2 × 22
33 = 31 + 2 × 12
9 = 7 + 2 x 12
15 = 7 + 2 x 22
21 = 3 + 2 x 32
25 = 7 + 2 x 32
27 = 19 + 2 x 22
33 = 31 + 2 x 12
It turns out that the conjecture was false.

View File

@ -5,14 +5,14 @@ Problem 47
The first two consecutive numbers to have two distinct prime factors are:
14 = 2 × 7
15 = 3 × 5
14 = 2 x 7
15 = 3 x 5
The first three consecutive numbers to have three distinct prime factors are:
644 = 2² × 7 × 23
645 = 3 × 5 × 43
646 = 2 × 17 × 19.
644 = 2² x 7 x 23
645 = 3 x 5 x 43
646 = 2 x 17 x 19.
Find the first four consecutive integers to have four distinct prime factors each.
What is the first of these numbers?

View File

@ -10,7 +10,7 @@ In combinatorics, we use the notation, 5C3 = 10.
In general,
nCr = n!/(r!(nr)!),where r n, n! = n×(n1)×...×3×2×1, and 0! = 1.
nCr = n!/(r!(n-r)!),where r n, n! = nx(n-1)x...x3x2x1, and 0! = 1.
It is not until n = 23, that a value exceeds one-million: 23C10 = 1144066.
How many, not necessarily distinct, values of nCr, for 1 n 100, are greater

View File

@ -1,7 +1,7 @@
"""
The first known prime found to exceed one million digits was discovered in 1999,
and is a Mersenne prime of the form 2**6972593 1; it contains exactly 2,098,960
digits. Subsequently other Mersenne primes, of the form 2**p 1, have been found
and is a Mersenne prime of the form 2**6972593 - 1; it contains exactly 2,098,960
digits. Subsequently other Mersenne primes, of the form 2**p - 1, have been found
which contain more digits.
However, in 2004 there was found a massive non-Mersenne prime which contains
2,357,207 digits: (28433 * (2 ** 7830457 + 1)).

View File

@ -3,7 +3,7 @@ Project Euler Problem 104 : https://projecteuler.net/problem=104
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
Fn = Fn-1 + Fn-2, where F1 = 1 and F2 = 1.
It turns out that F541, which contains 113 digits, is the first Fibonacci number
for which the last nine digits are 1-9 pandigital (contain all the digits 1 to 9,
but not necessarily in order). And F2749, which contains 575 digits, is the first

View File

@ -3,7 +3,7 @@ Problem 120 Square remainders: https://projecteuler.net/problem=120
Description:
Let r be the remainder when (a1)^n + (a+1)^n is divided by a^2.
Let r be the remainder when (a-1)^n + (a+1)^n is divided by a^2.
For example, if a = 7 and n = 3, then r = 42: 6^3 + 8^3 = 728 42 mod 49.
And as n varies, so too will r, but for a = 7 it turns out that r_max = 42.
For 3 a 1000, find r_max.

View File

@ -4,7 +4,7 @@ Problem 123: https://projecteuler.net/problem=123
Name: Prime square remainders
Let pn be the nth prime: 2, 3, 5, 7, 11, ..., and
let r be the remainder when (pn1)^n + (pn+1)^n is divided by pn^2.
let r be the remainder when (pn-1)^n + (pn+1)^n is divided by pn^2.
For example, when n = 3, p3 = 5, and 43 + 63 = 280 5 mod 25.
The least value of n for which the remainder first exceeds 10^9 is 7037.

View File

@ -3,9 +3,9 @@ Project Euler Problem 135: https://projecteuler.net/problem=135
Given the positive integers, x, y, and z, are consecutive terms of an arithmetic
progression, the least value of the positive integer, n, for which the equation,
x2 y2 z2 = n, has exactly two solutions is n = 27:
x2 - y2 - z2 = n, has exactly two solutions is n = 27:
342 272 202 = 122 92 62 = 27
342 - 272 - 202 = 122 - 92 - 62 = 27
It turns out that n = 1155 is the least value which has exactly ten solutions.

View File

@ -6,7 +6,7 @@ works its way back out.
The specific white cell we will be considering is an ellipse with the equation
4x^2 + y^2 = 100
The section corresponding to 0.01 x +0.01 at the top is missing, allowing the
The section corresponding to -0.01 x +0.01 at the top is missing, allowing the
light to enter and exit through the hole.
The light beam in this problem starts at the point (0.0,10.1) just outside the white
@ -20,7 +20,7 @@ In the figure on the left, the red line shows the first two points of contact be
the laser beam and the wall of the white cell; the blue line shows the line tangent to
the ellipse at the point of incidence of the first bounce.
The slope m of the tangent line at any point (x,y) of the given ellipse is: m = 4x/y
The slope m of the tangent line at any point (x,y) of the given ellipse is: m = -4x/y
The normal line is perpendicular to this tangent line at the point of incidence.

View File

@ -14,7 +14,7 @@ t = 32 is type L(2).
Let N(n) be the number of t 1000000 such that t is type L(n); for example,
N(15) = 832.
What is N(n) for 1 n 10?
What is sum N(n) for 1 n 10?
"""
from collections import defaultdict

View File

@ -10,6 +10,7 @@ lint.ignore = [ # `ruff rule S101` for a description of that rule
"PLW2901", # PLW2901: Redefined loop variable -- FIX ME
"PT011", # `pytest.raises(Exception)` is too broad, set the `match` parameter or use a more specific exception
"PT018", # Assertion should be broken down into multiple parts
"RUF001", # String contains ambiguous {}. Did you mean {}?
"RUF002", # Docstring contains ambiguous {}. Did you mean {}?
"RUF003", # Comment contains ambiguous {}. Did you mean {}?
"S101", # Use of `assert` detected -- DO NOT FIX

View File

@ -3,7 +3,7 @@
def jaro_winkler(str1: str, str2: str) -> float:
"""
JaroWinkler distance is a string metric measuring an edit distance between two
Jaro-Winkler distance is a string metric measuring an edit distance between two
sequences.
Output value is between 0.0 and 1.0.

View File

@ -5,7 +5,7 @@ def palindromic_string(input_string: str) -> str:
>>> palindromic_string('ababa')
'ababa'
Manachers algorithm which finds Longest palindromic Substring in linear time.
Manacher's algorithm which finds Longest palindromic Substring in linear time.
1. first this convert input_string("xyx") into new_string("x|y|x") where odd
positions are actual input characters.

View File

@ -1,7 +1,7 @@
"""
https://cp-algorithms.com/string/prefix-function.html
Prefix function KnuthMorrisPratt algorithm
Prefix function Knuth-Morris-Pratt algorithm
Different algorithm than Knuth-Morris-Pratt pattern finding