i want you to complete this function first: "def moves\_to\_nested\_dict(moves: list[list[str]]) -> dict[tuple[str,
 int], dict]:
 """
 Convert into a nested dictionary representing the sequence of moves
 made in the games.

 Each list in corresponds to one game, with the i'th str being the
 i'th move of the game.

 The nested dictionary's keys are tuples containing the string representing
 the move made on that turn and an integer indicating how many games ended
 immediately after this move. See the docstring example below.

 The values of each nested dictionary are themselves nested dictionaries of
 this structure. An empty dictionary is stored as the value for a move that
 will correspond to a leaf

 Note: to keep the docstring short, we use single letters in place
 of real chess moves, as it has no impact on the logic of how this
 code needs to be implemented, since it should work for arbitary
 strings used to denote moves.
 >>> moves\_to\_nested\_dict([[]]) # empty lists are ignored
 {}
 >>> moves\_to\_nested\_dict([])
 {}
 >>> moves\_to\_nested\_dict([['a'], []])
 {('a', 1): {}}
 >>> d = moves\_to\_nested\_dict([["a", "b", "c"],
 ... ["a", "b"], ["d", "e"], ["d", "e"]])
 >>> d
 {('a', 0): {('b', 1): {('c', 1): {}}}, ('d', 0): {('e', 2): {}}}
 >>> d = moves\_to\_nested\_dict([
 ... ["a", "b", "c"], ["a", "b"], ["d", "e", "a"], ["d", "e"]])
 >>> d
 {('a', 0): {('b', 1): {('c', 1): {}}}, ('d', 0): {('e', 1): {('a', 1): {}}}}
 """
 # TODO: (Task 6) Implement this function", using "
class ChessTree(TMTree):
 """
 A chess tree representing sequences of moves in a collection of chess games
 """
 # === Private Attributes ===
 # \_white\_to\_play: True iff it is white's turn to make the next move.

 \_white\_to\_play: bool

 # TODO: (Task 6) complete the implementation of this class, including
 # extending or overriding any methods inherited from TMTree.

 def \_\_init\_\_(self, move\_dict: dict[tuple[str, int], dict],
 last\_move: str = "-",
 white\_to\_play: bool = True,
 num\_games\_ended: int = 0) -> None:
 """
 Initialize this ChessTree given the nested . See the
 moves\_to\_nested\_dict function for the exact format of .

 represents the move that was last played. The root of the
 tree has a last move of '-' (default parameter value).

 indicates where it is white's turn (True) or black's
 turn (False).

 indicates how many games ended after the sequence of
 moves corresponding to this ChessTree. Note, this quantity is zero by
 default and, when creating subtrees, should be set based on the int
 from the tuple-keys of .

 Preconditions:
 contains a valid representation of a ChessTree.
 is a non-empty string.
 > 0 if the resulting ChessTree will be a leaf,
 since at least one game must have ended for it to be a leaf.

 >>> ct = ChessTree({('e2e4', 0) : {('e7e5', 1) : {}}})
 >>> ct.is\_displayed\_tree\_leaf()
 False
 >>> ct.data\_size
 1
 >>> ct.rect is None
 True
 >>> print(ct)
 - | (1) None
 e2e4 | (1) None
 e7e5(1) None
 """
 # TODO: (Task 6) Implement this method

 def get\_suffix(self) -> str:
 """
 Return ' (white to play)' if white is next to move,
 ' (black to play)' if black is next to move
 and ' (end)' if this ChessTree has no subtrees.

 >>> ct = ChessTree({('e2e4', 0) : {('e7e5', 1) : {}}})
 >>> ct.get\_suffix()
 ' (white to play)'
 >>> last\_node = ct.expand\_all()
 >>> last\_node.get\_suffix()
 ' (end)'
 >>> second\_last\_node = last\_node.collapse()
 >>> second\_last\_node.get\_suffix()
 ' (black to play)'
 """
 # TODO: (Task 6) Implement this method" as reference
이 함수를 먼저 완성하기를 원합니다: "def moves\_to\_nested\_dict(moves: list[list[str]]) -> dict[tuple[str, int], 딕셔너리]: """ 게임에서 행한 이동의 순서를 나타내는 중첩된 딕셔너리로 변환합니다. 중첩된 사전으로 변환합니다. 의 각 목록은 하나의 게임에 해당하며, i 번째 문자열은 게임의 i번째 수를 나타냅니다. 중첩 딕셔너리의 키는 해당 턴의 수를 나타내는 문자열을 포함하는 튜플입니다. 해당 턴에 한 이동과 이 이동 직후에 끝난 게임 수를 나타내는 정수 수를 나타내는 정수를 포함하는 튜플입니다. 아래 문서 문자열 예제를 참조하세요. 각 중첩 딕셔너리의 값은 그 자체로 이 구조의 구조의 중첩 딕셔너리입니다. 빈 사전은 이동에 대한 값으로 저장됩니다. 리프에 해당하는 값으로 저장됩니다. 참고: 문서 문자열을 짧게 유지하기 위해 실제 체스 기보의 경우처럼 대신 한 글자를 사용합니다. 실제 체스 기보의 로직에는 영향을 미치지 않기 때문입니다. 코드가 어떻게 구현되어야 하는지에 영향을 미치지 않기 때문에 한 글자를 사용합니다. 문자열에서 작동해야 하기 때문입니다. >>> moves\_to\_nested\_dict([[]]) # 빈 리스트는 무시됩니다. {} >>> moves\_to\_nested\_dict([]) {} >>> moves\_to\_nested\_dict([['a'], []]) {('a', 1): {}} >>> d = moves\_to\_nested\_dict([["a", "b", "c"], ... ["a", "b"], ["d", "e"], ["d", "e"]])) >>> d {('a', 0): {('b', 1): {('c', 1): {}}}, ('d', 0): {('e', 2): {}}} >>> d = moves\_to\_nested\_dict([ ... ["a", "b", "c"], ["a", "b"], ["d", "e", "a"], ["d", "e"]])) >>> d {('a', 0): {('b', 1): {('c', 1): {}}}, ('d', 0): {('e', 1): {('a', 1): {}}}} """ # TODO: (Task 6) 이 함수 구현", "" 사용클래스 체스트리(TMTree): """ 체스 게임 모음에서 이동 시퀀스를 나타내는 체스 트리입니다. """ # === 개인 속성 === # \_화이트\_투\_플레이: 다음 수를 둘 백의 차례가 되면 참입니다. \_white\_to\_play: bool # TODO: (작업 6) 다음을 포함하여 이 클래스의 구현을 완료합니다. # TMTree에서 상속된 메서드를 확장하거나 재정의합니다. def \_\_init\_\_(self, move\_dict: dict[tuple[str, int], dict], last\_move: str = "-", white\_to\_play: bool = True, num\_games\_ended: int = 0) -> None: """ 중첩된 이 체스 트리를 초기화합니다. 중첩된 체스 트리의 의 정확한 형식은 moves\_to\_nested\_dict 함수를 참조하세요. 는 마지막으로 플레이한 수를 나타냅니다. 체스 트리의 루트는 트리의 마지막 이동은 '-'(기본 매개변수 값)입니다. 는 백의 차례(참) 또는 흑의 차례(거짓)를 나타냅니다. 턴(거짓)을 나타냅니다. 이 체스 트리에 해당하는 일련의 수를 나타냅니다. 이 수량은 기본적으로 0입니다. 이며, 하위 트리를 만들 때 튜플 키의 int 의 튜플 키에 따라 설정해야 합니다. 전제 조건: 는 유효한 체스 트리의 표현을 포함합니다. 는 비어 있지 않은 문자열입니다. 결과 체스 트리가 잎이 될 경우 > 0입니다, 리프가 되려면 적어도 하나의 게임이 종료되어야 하기 때문입니다. >>> ct = ChessTree({('e2e4', 0) : {('e7e5', 1) : {}}}) >>> ct.is\_displayed\_tree\_leaf() False >>> ct.data\_size 1 >>> ct.rect는 없음 True >>> print(ct) - | (1) None e2e4 | (1) None e7e5(1) None """ # TODO: (작업 6)