Rubik-Tensor / src /rubik /display.py
JBAujogue's picture
change display function params
958b135
raw
history blame
894 Bytes
import torch
def stringify(state: torch.Tensor, colors: list[str], size: int) -> str:
"""
Compute a string representation of a cube.
"""
colors = pad_colors(colors)
faces = state.reshape(6, size, size).transpose(1, 2)
faces = [[[colors[i - 1] for i in row] for row in face.tolist()] for face in faces]
space = " " * max(len(c) for c in colors) * size
l1 = "\n".join(" ".join([space, "".join(row), space, space]) for row in faces[0])
l2 = "\n".join(" ".join("".join(face[i]) for face in faces[1:5]) for i in range(size))
l3 = "\n".join(" ".join((space, "".join(row), space, space)) for row in faces[-1])
return "\n".join([l1, l2, l3])
def pad_colors(colors: list[str]) -> list[str]:
"""
Pad color names to strings of equal length.
"""
max_len = max(len(c) for c in colors)
return [c + " " * (max_len - len(c)) for c in colors]