"""simple docstring"""


from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# Load iris file
a							=load_iris()
iris.keys()


print(F'''Target names: \n {iris.target_names} ''')
print(F'''\n Features: \n {iris.feature_names}''')

# Train set e Test set
a							,      a							,      a							,      a							=train_test_split(
    iris['data'], iris['target'], random_state=4
)

# KNN

a							=KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

# new array to test
a							=[[1, 2, 1, 4], [2, 3, 4, 5]]

a							=knn.predict(X_new)

print(
    F'''\nNew array: \n {X_new}\n\nTarget Names Prediction: \n'''
    F''' {iris["target_names"][prediction]}'''
)





from __future__ import annotations

SCREAMING_SNAKE_CASE_						=					'Alexander Joslin'

def 							__SCREAMING_SNAKE_CASE							( lowerCAmelCase:     int       )      ->				int:

				if number <= 0:
								_UpperCAmelCase				:						Optional[Any]       						=			F'n must be greater than 0. Got n = {number}'
								raise ValueError(lowerCAmelCase       )

				_UpperCAmelCase				:						Dict       						=			[number + 1] * (number + 1)

				# starting position
				_UpperCAmelCase				:						Dict       						=			0
				for i in range(1     ,					lowerCAmelCase       ):
								_UpperCAmelCase				:						int       						=			min(table[i + 1]     ,					table[i] + 1       )
								# check if out of bounds
								if i * 2 <= number:
												_UpperCAmelCase				:						int       						=			min(table[i * 2]     ,					table[i] + 1       )
								# check if out of bounds
								if i * 3 <= number:
												_UpperCAmelCase				:						int       						=			min(table[i * 3]     ,					table[i] + 1       )
				return table[number]


if __name__ == "__main__":
					import doctest

					doctest.testmod()


