




from math import factorial



def 					UpperCamelCase__       (						lowercase__					:       Optional[int]    ,       lowercase__					:       Union[str, Any]				):
		return factorial(SCREAMING_SNAKE_CASE_				) / (factorial(SCREAMING_SNAKE_CASE_				) * factorial(n - r				))



def 					UpperCamelCase__       (						):
		snake_case						:  List[Any]        =			0

		for i in range(1    ,       101				):
				for j in range(1    ,       i + 1				):
						if combinations(SCREAMING_SNAKE_CASE_    ,       SCREAMING_SNAKE_CASE_				) > 1E6:
								total += 1
		return total


if __name__ == "__main__":
							print(solution())







"""simple docstring"""

import matplotlib.pyplot as plt
import numpy as np



def 					UpperCamelCase__       (						lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       float				):
		snake_case						:  Any        =			len(lowercase__				)  # Number of training samples
		snake_case						:  str        =			np.eye(lowercase__				)  # Initialize weights as identity matrix
		for j in range(lowercase__				):
				snake_case						:  Any        =			point - x_train[j]
				snake_case						:  Dict        =			np.exp(diff @ diff.T / (-2.0 * tau**2)				)

		return weights



def 					UpperCamelCase__       (						lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       float				):
		snake_case						:  str        =			weight_matrix(lowercase__    ,       lowercase__    ,       lowercase__				)
		snake_case						:  str        =			np.linalg.inv(x_train.T @ weight_mat @ x_train				) @ (
		    x_train.T @ weight_mat @ y_train.T
		)

		return weight



def 					UpperCamelCase__       (						lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       float				):
		snake_case						:  Optional[int]        =			np.zeros(len(lowercase__				)				)  # Initialize array of predictions
		for i, item in enumerate(lowercase__				):
				snake_case						:  Dict        =			item @ local_weight(lowercase__    ,       lowercase__    ,       lowercase__    ,       lowercase__				)

		return y_pred



def 					UpperCamelCase__       (						lowercase__					:       str    ,       lowercase__					:       str    ,       lowercase__					:       str				):
		import seaborn as sns

		snake_case						:  Union[str, Any]        =			sns.load_dataset(lowercase__				)
		snake_case						:  Any        =			np.array(data[x_name]				)
		snake_case						:  str        =			np.array(data[y_name]				)

		snake_case						:  Any        =			np.ones(len(lowercase__				)				)

		# pairing elements of one and x_data
		snake_case						:  Optional[int]        =			np.column_stack((one, x_data)				)

		return x_train, x_data, y_data



def 					UpperCamelCase__       (						lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       np.ndarray    ,       lowercase__					:       str    ,       lowercase__					:       str    ,       ):
		snake_case						:  List[str]        =			np.sort(lowercase__    ,       axis=0				)
		plt.scatter(lowercase__    ,       lowercase__    ,       color="blue"				)
		plt.plot(
		    x_train_sorted[:, 1]    ,       preds[x_train[:, 1].argsort(0				)]    ,       color="yellow"    ,       linewidth=5    ,       )
		plt.title("Local Weighted Regression"				)
		plt.xlabel(lowercase__				)
		plt.ylabel(lowercase__				)
		plt.show()


if __name__ == "__main__":
							import doctest

							doctest.testmod()

							# Demo with a dataset from the seaborn module
							__A						,    __A						,    __A							=     load_data("tips", "total_bill", "tip")
							__A							=     local_weight_regression(training_data_x, tip, 5)
							plot_preds(training_data_x, predictions, total_bill, tip, "total_bill", "tip")

