


'''simple docstring'''
from manim import *






class 					__lowerCAmelCase   (   lowercase						):

						"""simple docstring"""






						def 				_UpperCAmelCase       (  self							:      Any	):
													A_			    =		Rectangle(height=0.5 ,  width=0.5	)
													A_			    =		Rectangle(height=0.2_5 ,  width=0.2_5	)
													A_			    =		Rectangle(height=0.4_6 ,  width=0.4_6	).set_stroke(width=0	)

													A_			    =		[mem.copy() for i in range(6	)]
													A_			    =		[mem.copy() for i in range(6	)]
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		VGroup(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		Text("CPU" ,  font_size=24	)
													A_			    =		Group(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0.5 ,  aligned_edge=lowerCAmelCase	)
													cpu.move_to([-2.5, -0.5, 0]	)
													self.add(lowerCAmelCase	)

													A_			    =		[mem.copy() for i in range(4	)]
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		Text("GPU" ,  font_size=24	)
													A_			    =		Group(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0.5 ,  aligned_edge=lowerCAmelCase	)
													gpu.move_to([-1, -1, 0]	)
													self.add(lowerCAmelCase	)

													A_			    =		[mem.copy() for i in range(6	)]
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)

													A_			    =		Text("Model" ,  font_size=24	)
													A_			    =		Group(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0.5 ,  aligned_edge=lowerCAmelCase	)
													model.move_to([3, -1.0, 0]	)
													self.add(lowerCAmelCase	)

													A_			    =		[]
													A_			    =		[]
													A_			    =		[]

													for i, rect in enumerate(lowerCAmelCase	):
																				rect.set_stroke(lowerCAmelCase	)

																				A_			    =		Rectangle(height=0.4_6 / 4 ,  width=0.4_6 / 3	).set_stroke(width=0.0	).set_fill(lowerCAmelCase ,  opacity=0.7	)

																				if i == 0:
																											cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT	) ,  buff=0.0_2 ,  direction=lowerCAmelCase	)
																											cpu_target.set_x(cpu_target.get_x() + 0.1	)
																				elif i == 3:
																											cpu_target.next_to(model_cpu_arr[0] ,  direction=lowerCAmelCase ,  buff=0.0	)
																				else:
																											cpu_target.next_to(model_cpu_arr[i - 1] ,  direction=lowerCAmelCase ,  buff=0.0	)
																				self.add(lowerCAmelCase	)
																				model_cpu_arr.append(lowerCAmelCase	)

													self.add(*lowerCAmelCase ,  *lowerCAmelCase ,  *lowerCAmelCase	)

													A_			    =		[mem.copy() for i in range(6	)]
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)

													A_			    =		Text("Loaded Checkpoint" ,  font_size=24	)
													A_			    =		Group(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0.5 ,  aligned_edge=lowerCAmelCase	)
													checkpoint.move_to([3, 0.5, 0]	)

													self.add(lowerCAmelCase	)

													A_			    =		[]
													A_			    =		[]

													for i, rect in enumerate(lowerCAmelCase	):
																				A_			    =		fill.copy().set_fill(lowerCAmelCase ,  opacity=0.7	)
																				target.move_to(lowerCAmelCase	)
																				ckpt_arr.append(lowerCAmelCase	)

																				A_			    =		target.copy()
																				if i < 5:
																											cpu_target.move_to(cpu_left_col_base[i + 1]	)
																				else:
																											cpu_target.move_to(cpu_right_col_base[i - 5]	)
																				ckpt_cpu_arr.append(lowerCAmelCase	)
													self.add(*lowerCAmelCase ,  *lowerCAmelCase	)

													A_			    =		Square(side_length=2.2	)
													key.move_to([-5, 2, 0]	)

													A_			    =		MarkupText(
													    F"<b>Key:</b>\n\n<span fgcolor='{YELLOW}'>●</span> Empty Model" ,  font_size=18 ,  )

													key_text.move_to([-5, 2.4, 0]	)

													self.add(lowerCAmelCase ,  lowerCAmelCase	)

													A_			    =		MarkupText(
													    F"<span fgcolor='{BLUE}'>●</span> Checkpoint" ,  font_size=18 ,  )

													blue_text.next_to(lowerCAmelCase ,  DOWN * 2.4 ,  aligned_edge=key_text.get_left()	)
													self.add(lowerCAmelCase	)

													A_			    =		MarkupText(
													    F"Based on the passed in configuration, weights are stored in\na variety of np.memmaps on disk or to a particular device." ,  font_size=24 ,  )
													step_a.move_to([2, 2, 0]	)

													A_			    =		[meta_mem.copy() for i in range(6	)]
													A_			    =		[meta_mem.copy() for i in range(6	)]
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		VGroup(*lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		VGroup(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0	)
													A_			    =		Text("Disk" ,  font_size=24	)
													A_			    =		Group(lowerCAmelCase ,  lowerCAmelCase	).arrange(lowerCAmelCase ,  buff=0.5 ,  aligned_edge=lowerCAmelCase	)
													disk.move_to([-4.0, -1.2_5, 0]	)
													self.play(Write(lowerCAmelCase ,  run_time=3	) ,  Write(lowerCAmelCase ,  run_time=1	) ,  Create(lowerCAmelCase ,  run_time=1	)	)

													A_			    =		[]
													for i, rect in enumerate(lowerCAmelCase	):
																				A_			    =		rect.copy()
																				target.generate_target()
																				target.target.move_to(disk_left_col_base[i]	).scale(0.5	)
																				animations.append(MoveToTarget(lowerCAmelCase ,  run_time=1.5	)	)
													self.play(*lowerCAmelCase	)

													self.play(FadeOut(lowerCAmelCase	)	)

													A_			    =		MarkupText(F"Then, the checkpoint is removed from memory\nthrough garbage collection." ,  font_size=24	)
													step_a.move_to([2, 2, 0]	)

													self.play(Write(lowerCAmelCase ,  run_time=3	)	)

													self.play(
													    FadeOut(lowerCAmelCase ,  lowerCAmelCase ,  *lowerCAmelCase ,  *lowerCAmelCase	) ,  )

													self.wait()









'''simple docstring'''
def       a_				(	UpperCamelCase_ ):

							if length <= 0 or not isinstance(UpperCamelCase_						,  UpperCamelCase_ ):
														raise ValueError("Length must be a positive integer." )
							return [n * (2 * n - 1) for n in range(UpperCamelCase_ )]


if __name__ == "__main__":
							print(hexagonal_numbers(length=5))
							print(hexagonal_numbers(length=10))





