Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -7,7 +7,7 @@ from typing import List
|
|
| 7 |
|
| 8 |
model = Llama(
|
| 9 |
model_path=hf_hub_download(
|
| 10 |
-
repo_id=os.environ.get("REPO_ID", "Lyte/QuadConnect2.5-0.5B-v0.0.8b"), #"Lyte/QuadConnect2.5-0.5B-v0.0.6b"), #"Lyte/QuadConnect-Llama-1B-v0.0.7b"),#"
|
| 11 |
filename=os.environ.get("MODEL_FILE", "unsloth.Q8_0.gguf"), #"quadconnect.Q8_0.gguf"),
|
| 12 |
),
|
| 13 |
n_ctx=16384
|
|
@@ -102,20 +102,34 @@ def parse_coordinate_list(board_str: str) -> List[List[str]]:
|
|
| 102 |
grid[row][col] = piece
|
| 103 |
return grid
|
| 104 |
|
| 105 |
-
def get_available_positions(
|
| 106 |
-
"""
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
available = []
|
| 112 |
for col in range(7):
|
| 113 |
col_letter = chr(ord('a') + col)
|
| 114 |
-
|
| 115 |
for row in range(6):
|
| 116 |
-
if
|
| 117 |
-
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
return "\n ".join(available)
|
| 120 |
|
| 121 |
class ConnectFour:
|
|
|
|
| 7 |
|
| 8 |
model = Llama(
|
| 9 |
model_path=hf_hub_download(
|
| 10 |
+
repo_id=os.environ.get("REPO_ID", "Lyte/QuadConnect2.5-0.5B-v0.0.9b"),#"Lyte/QuadConnect2.5-0.5B-v0.0.8b"), #"Lyte/QuadConnect2.5-0.5B-v0.0.6b"), #"Lyte/QuadConnect-Llama-1B-v0.0.7b"),#"
|
| 11 |
filename=os.environ.get("MODEL_FILE", "unsloth.Q8_0.gguf"), #"quadconnect.Q8_0.gguf"),
|
| 12 |
),
|
| 13 |
n_ctx=16384
|
|
|
|
| 102 |
grid[row][col] = piece
|
| 103 |
return grid
|
| 104 |
|
| 105 |
+
def get_available_positions(board_moves: List[str]) -> str:
|
| 106 |
+
"""Returns all available positions per column after simulating gravity."""
|
| 107 |
+
# Initialize empty grid ('.' means empty)
|
| 108 |
+
grid = [['.' for _ in range(7)] for _ in range(6)]
|
| 109 |
+
|
| 110 |
+
# Place each move into the lowest available slot in its column
|
| 111 |
+
for i, move in enumerate(board_moves):
|
| 112 |
+
if not move:
|
| 113 |
+
continue
|
| 114 |
+
col = ord(move[0]) - ord('a')
|
| 115 |
+
for row in range(6):
|
| 116 |
+
if grid[row][col] == '.':
|
| 117 |
+
grid[row][col] = 'X' if i % 2 == 0 else 'O'
|
| 118 |
+
break
|
| 119 |
+
|
| 120 |
+
# For each column, list all empty positions (which will be above the placed pieces)
|
| 121 |
available = []
|
| 122 |
for col in range(7):
|
| 123 |
col_letter = chr(ord('a') + col)
|
| 124 |
+
positions = []
|
| 125 |
for row in range(6):
|
| 126 |
+
if grid[row][col] == '.':
|
| 127 |
+
positions.append(f"{col_letter}{row + 1}")
|
| 128 |
+
if positions:
|
| 129 |
+
available.append(f"Column {col_letter}: {', '.join(positions)}")
|
| 130 |
+
else:
|
| 131 |
+
available.append(f"Column {col_letter}: Full")
|
| 132 |
+
|
| 133 |
return "\n ".join(available)
|
| 134 |
|
| 135 |
class ConnectFour:
|