Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- White moves first:
- Game starts: White moves first
- Tracking moves, t, and ζ(s)...
- Turn 1:
- White Pawn: (0, 1) → (1, 2), Dist = 1.414214
- White Rook: (3, 0) → (2, 1), Dist = 1.414214
- White Bishop: (2, 0) → (5, 3), Dist = 4.242641
- White Queen: (4, 0) → (5, 1), Dist = 1.414214
- White Knight: (1, 0) → (2, 2), Dist = 2.236068
- White King: (5, 0) → (4, 1), Dist = 1.414214
- White: t = 12.135563, s = 0.5 + 12.135563i, ζ(s) = 0.943132 + -0.758047i, Mag = 1.210014
- Closest t = 14.134725, Off by = 1.999162
- Black King: (5, 7) → (4, 6), Dist = 1.414214
- Black Knight: (1, 7) → (3, 6), Dist = 2.236068
- Black Pawn: (0, 6) → (1, 5), Dist = 1.414214
- Black Rook: (3, 7) → (2, 6), Dist = 1.414214
- Black Bishop: (2, 7) → (7, 2), Dist = 7.071068
- Black Queen: (4, 7) → (0, 3), Dist = 5.656854
- Black: t = 19.206631, s = 0.5 + 19.206631i, ζ(s) = 1.376373 + -1.245712i, Mag = 1.856394
- Closest t = 21.02204, Off by = 1.815409
- Turn 2:
- White Rook: (2, 1) → (3, 0), Dist = 1.414214
- White Pawn: (1, 2) → (2, 3), Dist = 1.414214
- White Bishop: (5, 3) → (4, 4), Dist = 1.414214
- White Queen: (5, 1) → (3, 3), Dist = 2.828427
- White King: (4, 1) → (5, 0), Dist = 1.414214
- White Knight: (2, 2) → (4, 1), Dist = 2.236068
- White: t = 22.856912, s = 0.5 + 22.856912i, ζ(s) = 1.403911 + 0.289555i, Mag = 1.433460
- Closest t = 21.02204, Off by = 1.834872
- Black Bishop: (7, 2) → (6, 3), Dist = 1.414214
- Black Rook: (2, 6) → (3, 7), Dist = 1.414214
- Black Queen: (0, 3) → (1, 4), Dist = 1.414214
- Black King: (4, 6) → (5, 5), Dist = 1.414214
- Black Pawn: (1, 5) → (2, 4), Dist = 1.414214
- Black Knight: (3, 6) → (5, 7), Dist = 2.236068
- Black: t = 28.513767, s = 0.5 + 28.513767i, ζ(s) = 2.033297 + -1.487623i, Mag = 2.519389
- Closest t = 25.010858, Off by = 3.502909
- Turn 3:
- White Knight: (4, 1) → (5, 3), Dist = 2.236068
- White Queen: (3, 3) → (0, 0), Dist = 4.242641
- White Rook: (3, 0) → (4, 1), Dist = 1.414214
- White King: (5, 0) → (6, 1), Dist = 1.414214
- White Pawn: (2, 3) → (3, 4), Dist = 1.414214
- White Bishop: (4, 4) → (1, 7), Dist = 4.242641
- White: t = 37.820902, s = 0.5 + 37.820902i, ζ(s) = 0.213018 + 0.386058i, Mag = 0.440928
- Closest t = 25.010858, Off by = 12.810044
- Black King: (5, 5) → (6, 4), Dist = 1.414214
- Black Knight: (5, 7) → (3, 6), Dist = 2.236068
- Black Rook: (3, 7) → (2, 6), Dist = 1.414214
- Black Queen: (1, 4) → (4, 7), Dist = 4.242641
- Black Bishop: (6, 3) → (3, 0), Dist = 4.242641
- Black Pawn: (2, 4) → (1, 3), Dist = 1.414214
- Black: t = 43.477757, s = 0.5 + 43.477757i, ζ(s) = -0.138047 + 0.252474i, Mag = 0.287750
- Closest t = 25.010858, Off by = 18.466899
- Turn 4:
- White King: (6, 1) → (5, 0), Dist = 1.414214
- White Pawn: (3, 4) → (4, 5), Dist = 1.414214
- White Rook: (4, 1) → (3, 2), Dist = 1.414214
- White Knight: (5, 3) → (6, 5), Dist = 2.236068
- White Queen: (0, 0) → (3, 3), Dist = 4.242641
- White Bishop: (1, 7) → (7, 1), Dist = 8.485281
- White: t = 57.027533, s = 0.5 + 57.027533i, ζ(s) = 1.004452 + 0.646699i, Mag = 1.194631
- Closest t = 25.010858, Off by = 32.016675
- Black Rook: (2, 6) → (3, 5), Dist = 1.414214
- Black Queen: (4, 7) → (7, 4), Dist = 4.242641
- Black Pawn: (1, 3) → (0, 2), Dist = 1.414214
- Black Bishop: (3, 0) → (1, 2), Dist = 2.828427
- Black King: (6, 4) → (7, 3), Dist = 1.414214
- Black Knight: (3, 6) → (1, 7), Dist = 2.236068
- Black: t = 57.027533, s = 0.5 + 57.027533i, ζ(s) = 1.004452 + 0.646699i, Mag = 1.194631
- Closest t = 25.010858, Off by = 32.016675
- Turn 5:
- White King: (5, 0) → (4, 1), Dist = 1.414214
- White Knight: (6, 5) → (5, 7), Dist = 2.236068
- White Pawn: (4, 5) → (3, 6), Dist = 1.414214
- White Queen: (3, 3) → (1, 5), Dist = 2.828427
- White Bishop: (7, 1) → (2, 6), Dist = 7.071068
- White Rook: (3, 2) → (4, 3), Dist = 1.414214
- White: t = 73.405737, s = 0.5 + 73.405737i, ζ(s) = 3.293817 + 0.954715i, Mag = 3.429390
- Closest t = 25.010858, Off by = 48.394879
- Black King: (7, 3) → (6, 4), Dist = 1.414214
- Black Queen: (7, 4) → (6, 5), Dist = 1.414214
- Black Bishop: (1, 2) → (2, 3), Dist = 1.414214
- Black Pawn: (0, 2) → (1, 1), Dist = 1.414214
- Black Rook: (3, 5) → (4, 4), Dist = 1.414214
- Black Knight: (1, 7) → (0, 5), Dist = 2.236068
- Black: t = 66.334669, s = 0.5 + 66.334669i, ζ(s) = 0.830671 + -0.603035i, Mag = 1.026482
- Closest t = 25.010858, Off by = 41.323811
- Turn 6:
- White Rook: (4, 3) → (3, 2), Dist = 1.414214
- White Bishop: (2, 6) → (5, 3), Dist = 4.242641
- White Pawn: (3, 6) → (2, 7), Dist = 1.414214
- White Queen: (1, 5) → (3, 3), Dist = 2.828427
- White Knight: (5, 7) → (7, 6), Dist = 2.236068
- White King: (4, 1) → (5, 2), Dist = 1.414214
- White: t = 86.955513, s = 0.5 + 86.955513i, ζ(s) = 0.285304 + -0.868507i, Mag = 0.914168
- Closest t = 25.010858, Off by = 61.944655
- Black Bishop: (2, 3) → (3, 4), Dist = 1.414214
- Black Rook: (4, 4) → (3, 5), Dist = 1.414214
- Black King: (6, 4) → (5, 5), Dist = 1.414214
- Black Knight: (0, 5) → (2, 6), Dist = 2.236068
- Black Queen: (6, 5) → (5, 6), Dist = 1.414214
- Black Pawn: (1, 1) → (0, 0), Dist = 1.414214
- Black: t = 75.641805, s = 0.5 + 75.641805i, ζ(s) = -0.091802 + -0.071041i, Mag = 0.116080
- Closest t = 25.010858, Off by = 50.630947
- Turn 7:
- White Knight: (7, 6) → (6, 4), Dist = 2.236068
- White Bishop: (5, 3) → (1, 7), Dist = 5.656854
- White Rook: (3, 2) → (4, 1), Dist = 1.414214
- White Queen: (3, 3) → (4, 4), Dist = 1.414214
- White King: (5, 2) → (6, 1), Dist = 1.414214
- White: t = 99.091076, s = 0.5 + 99.091076i, ζ(s) = 0.283356 + 0.847070i, Mag = 0.893207
- Closest t = 25.010858, Off by = 74.080218
- Black King: (5, 5) → (6, 6), Dist = 1.414214
- Black Queen: (5, 6) → (1, 2), Dist = 5.656854
- Black Rook: (3, 5) → (4, 6), Dist = 1.414214
- Black Knight: (2, 6) → (0, 5), Dist = 2.236068
- Black Bishop: (3, 4) → (0, 7), Dist = 4.242641
- Black: t = 90.605795, s = 0.5 + 90.605795i, ζ(s) = 4.362554 + 0.868068i, Mag = 4.448080
- Closest t = 25.010858, Off by = 65.594937
- Turn 8:
- White Knight: (6, 4) → (4, 3), Dist = 2.236068
- White King: (6, 1) → (5, 0), Dist = 1.414214
- White Bishop: (1, 7) → (0, 6), Dist = 1.414214
- White Rook: (4, 1) → (3, 2), Dist = 1.414214
- White Queen: (4, 4) → (5, 5), Dist = 1.414214
- White: t = 106.983998, s = 0.5 + 106.983998i, ζ(s) = 0.461903 + -0.176695i, Mag = 0.494545
- Closest t = 25.010858, Off by = 81.973140
- Black Queen: (1, 2) → (6, 7), Dist = 7.071068
- Black King: (6, 6) → (7, 5), Dist = 1.414214
- Black Rook: (4, 6) → (3, 5), Dist = 1.414214
- Black Knight: (0, 5) → (1, 3), Dist = 2.236068
- Black Bishop: (0, 7) → (1, 6), Dist = 1.414214
- Black: t = 104.155571, s = 0.5 + 104.155571i, ζ(s) = 0.674236 + 0.353757i, Mag = 0.761405
- Closest t = 25.010858, Off by = 79.144713
- Turn 9:
- White Knight: (4, 3) → (2, 4), Dist = 2.236068
- White King: (5, 0) → (4, 1), Dist = 1.414214
- White Queen: (5, 5) → (7, 7), Dist = 2.828427
- White Rook: (3, 2) → (2, 1), Dist = 1.414214
- White Bishop: (0, 6) → (6, 0), Dist = 8.485281
- White: t = 123.362202, s = 0.5 + 123.362202i, ζ(s) = 0.318103 + 0.450356i, Mag = 0.551371
- Closest t = 25.010858, Off by = 98.351344
- Black Queen: (6, 7) → (0, 1), Dist = 8.485281
- Black Bishop: (1, 6) → (5, 2), Dist = 5.656854
- Black Rook: (3, 5) → (4, 6), Dist = 1.414214
- Black King: (7, 5) → (6, 4), Dist = 1.414214
- Black Knight: (1, 3) → (3, 4), Dist = 2.236068
- Black: t = 123.362202, s = 0.5 + 123.362202i, ζ(s) = 0.318103 + 0.450356i, Mag = 0.551371
- Closest t = 25.010858, Off by = 98.351344
- Turn 10:
- White King: (4, 1) → (3, 2), Dist = 1.414214
- White Knight: (2, 4) → (0, 3), Dist = 2.236068
- White Bishop: (6, 0) → (3, 3), Dist = 4.242641
- White Queen: (7, 7) → (5, 5), Dist = 2.828427
- White Rook: (2, 1) → (3, 0), Dist = 1.414214
- White: t = 135.497765, s = 0.5 + 135.497765i, ζ(s) = 0.330659 + 2.746725i, Mag = 2.766556
- Closest t = 25.010858, Off by = 110.486907
- Black Knight: (3, 4) → (2, 2), Dist = 2.236068
- Black King: (6, 4) → (7, 5), Dist = 1.414214
- Black Rook: (4, 6) → (3, 5), Dist = 1.414214
- Black Queen: (0, 1) → (2, 3), Dist = 2.828427
- Black Bishop: (5, 2) → (2, 5), Dist = 4.242641
- Black: t = 135.497765, s = 0.5 + 135.497765i, ζ(s) = 0.330659 + 2.746725i, Mag = 2.766556
- Closest t = 25.010858, Off by = 110.486907
- Turn 11:
- White Knight: (0, 3) → (2, 4), Dist = 2.236068
- White King: (3, 2) → (4, 3), Dist = 1.414214
- White Queen: (5, 5) → (4, 6), Dist = 1.414214
- White Rook: (3, 0) → (2, 1), Dist = 1.414214
- White Bishop: (3, 3) → (1, 5), Dist = 2.828427
- White: t = 144.804901, s = 0.5 + 144.804901i, ζ(s) = 3.611080 + -1.657800i, Mag = 3.973437
- Closest t = 25.010858, Off by = 119.794043
- Black King: (7, 5) → (6, 4), Dist = 1.414214
- Black Bishop: (2, 5) → (3, 4), Dist = 1.414214
- Black Rook: (3, 5) → (4, 4), Dist = 1.414214
- Black Knight: (2, 2) → (4, 1), Dist = 2.236068
- Black Queen: (2, 3) → (0, 5), Dist = 2.828427
- Black: t = 144.804901, s = 0.5 + 144.804901i, ζ(s) = 3.611080 + -1.657800i, Mag = 3.973437
- Closest t = 25.010858, Off by = 119.794043
- Turn 12:
- White Knight: (2, 4) → (4, 5), Dist = 2.236068
- White Queen: (4, 6) → (3, 7), Dist = 1.414214
- White King: (4, 3) → (5, 4), Dist = 1.414214
- White Bishop: (1, 5) → (3, 3), Dist = 2.828427
- White Rook: (2, 1) → (3, 2), Dist = 1.414214
- White: t = 154.112036, s = 0.5 + 154.112036i, ζ(s) = 3.931968 + 2.306577i, Mag = 4.558582
- Closest t = 25.010858, Off by = 129.101178
- Black Bishop: (3, 4) → (2, 5), Dist = 1.414214
- Black King: (6, 4) → (7, 3), Dist = 1.414214
- Black Knight: (4, 1) → (6, 2), Dist = 2.236068
- Black Rook: (4, 4) → (5, 3), Dist = 1.414214
- Black Queen: (0, 5) → (1, 6), Dist = 1.414214
- Black: t = 152.697823, s = 0.5 + 152.697823i, ζ(s) = 1.115739 + -0.409455i, Mag = 1.188498
- Closest t = 25.010858, Off by = 127.686965
- Turn 13:
- White Queen: (3, 7) → (0, 4), Dist = 4.242641
- White Rook: (3, 2) → (2, 1), Dist = 1.414214
- White Bishop: (3, 3) → (7, 7), Dist = 5.656854
- White Knight: (4, 5) → (6, 6), Dist = 2.236068
- White King: (5, 4) → (4, 5), Dist = 1.414214
- White: t = 169.076026, s = 0.5 + 169.076026i, ζ(s) = -0.005725 + -0.028176i, Mag = 0.028752
- --> White hits a zeta zero!
- Game Over: White wins!
- Zeta Chess Python Code:
- import math
- from mpmath import mp, zeta
- import random
- import plotly.graph_objects as go
- from plotly.subplots import make_subplots
- # Precision
- mp.dps = 20
- # Chessboard: 8x8
- def is_valid(x, y):
- return 0 <= x <= 7 and 0 <= y <= 7
- # Distance
- def distance(x1, y1, x2, y2):
- return math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
- # Piece class
- class Piece:
- def __init__(self, name, x, y, color):
- self.name = name
- self.x = x
- self.y = y
- self.color = color
- def get_sloped_moves(self, occupied):
- moves = []
- if self.name == "Pawn":
- dy = 1 if self.color == "White" else -1
- for dx in [-1, 1]:
- nx, ny = self.x + dx, self.y + dy
- if is_valid(nx, ny) and (nx, ny) not in occupied:
- moves.append((nx, ny))
- elif self.name == "Knight":
- deltas = [(-2, -1), (-2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2), (2, -1), (2, 1)]
- moves = [(self.x + dx, self.y + dy) for dx, dy in deltas if is_valid(self.x + dx, self.y + dy) and (self.x + dx, self.y + dy) not in occupied]
- elif self.name == "Bishop" or self.name == "Queen":
- for d in range(-7, 8):
- if d != 0:
- if is_valid(self.x + d, self.y + d) and (self.x + d, self.y + d) not in occupied:
- moves.append((self.x + d, self.y + d))
- if is_valid(self.x + d, self.y - d) and (self.x + d, self.y - d) not in occupied:
- moves.append((self.x + d, self.y - d))
- elif self.name == "Rook":
- for dx in [-1, 1]:
- for dy in [-1, 1]:
- nx, ny = self.x + dx, self.y + dy
- if is_valid(nx, ny) and (nx, ny) not in occupied:
- moves.append((nx, ny))
- elif self.name == "King":
- deltas = [(-1, -1), (-1, 1), (1, -1), (1, 1)]
- moves = [(self.x + dx, self.y + dy) for dx, dy in deltas if is_valid(self.x + dx, self.y + dy) and (self.x + dx, self.y + dy) not in occupied]
- return moves
- def is_checkmated(self, occupied):
- return len(self.get_sloped_moves(occupied)) == 0
- # Test zeta
- def test_zeta(t):
- sigma = 0.5
- s = mp.mpc(real=str(sigma), imag=str(t))
- z = zeta(s)
- mag = abs(z)
- return s, z, mag < 0.05
- # Chess-zeta game with data collection
- def chess_zeta_game(first_player="White"):
- white_pieces = [
- Piece("Pawn", 0, 1, "White"), Piece("Knight", 1, 0, "White"), Piece("Bishop", 2, 0, "White"),
- Piece("Rook", 3, 0, "White"), Piece("Queen", 4, 0, "White"), Piece("King", 5, 0, "White")
- ]
- black_pieces = [
- Piece("Pawn", 0, 6, "Black"), Piece("Knight", 1, 7, "Black"), Piece("Bishop", 2, 7, "Black"),
- Piece("Rook", 3, 7, "Black"), Piece("Queen", 4, 7, "Black"), Piece("King", 5, 7, "Black")
- ]
- players = [("White", white_pieces, "Red"), ("Black", black_pieces, "Blue")]
- if first_player == "Black":
- players.reverse()
- white_t, black_t = 0.0, 0.0
- all_occupied = {(p.x, p.y) for p in white_pieces + black_pieces}
- turn = 0
- # Data storage
- data = {"White": {"turns": [], "t_values": [], "s_values": [], "zeta_values": [], "mags": [], "tooltips": []},
- "Black": {"turns": [], "t_values": [], "s_values": [], "zeta_values": [], "mags": [], "tooltips": []}}
- print(f"\nGame starts: {first_player} moves first")
- while True:
- turn += 1
- print(f"\nTurn {turn}:")
- for player, pieces, color in players:
- random.shuffle(pieces)
- king = next(p for p in pieces if p.name == "King")
- total_dist = 0.0
- move_log = []
- for piece in pieces:
- moves = piece.get_sloped_moves(all_occupied)
- if not moves:
- continue
- nx, ny = random.choice(moves)
- dist = distance(piece.x, piece.y, nx, ny)
- total_dist += dist
- move_log.append(f"{piece.name}: ({piece.x},{piece.y})→({nx},{ny}), Dist={dist:.4f}")
- all_occupied.remove((piece.x, piece.y))
- all_occupied.add((nx, ny))
- piece.x, piece.y = nx, ny
- if player == "White":
- white_t += total_dist
- t_value = white_t
- else:
- black_t += total_dist
- t_value = black_t
- s, z, near_zero = test_zeta(t_value)
- mag = float(abs(z))
- s_str = f"0.5 + {float(t_value):.6f}i"
- z_str = f"{float(z.real):.6f} + {float(z.imag):.6f}i"
- closest_t = min([14.134725, 21.022040, 25.010858], key=lambda z: abs(z - t_value))
- dist_to_zero = abs(t_value - closest_t)
- # Store data
- tooltip = (f"Turn: {turn}<br>Player: {player} ({color})<br>t: {t_value:.6f}<br>"
- f"s: {s_str}<br>ζ(s): {z_str}<br>Mag: {mag:.6f}<br>"
- f"Nearest Zero t: {closest_t}<br>Dist to Zero: {dist_to_zero:.6f}<br>"
- f"Moves:<br>{'<br>'.join(move_log)}")
- data[player]["turns"].append(turn)
- data[player]["t_values"].append(float(t_value))
- data[player]["s_values"].append(s_str)
- data[player]["zeta_values"].append(z_str)
- data[player]["mags"].append(mag)
- data[player]["tooltips"].append(tooltip)
- print(f"{player}: t = {t_value:.6f}, Mag = {mag:.6f}")
- if near_zero:
- print(f"--> {player} hits a zeta zero!")
- plot_game(data, first_player)
- return player
- elif king.is_checkmated(all_occupied):
- print(f"--> {player}'s King checkmated!")
- plot_game(data, first_player)
- return "White" if player == "Black" else "Black"
- # Plotting function
- def plot_game(data, first_player):
- fig = go.Figure()
- # Red (White)
- fig.add_trace(go.Scatter(
- x=data["White"]["turns"], y=data["White"]["t_values"],
- mode="lines+markers", name="White (Red)", line=dict(color="red"),
- text=data["White"]["tooltips"], hoverinfo="text"
- ))
- # Blue (Black)
- fig.add_trace(go.Scatter(
- x=data["Black"]["turns"], y=data["Black"]["t_values"],
- mode="lines+markers", name="Black (Blue)", line=dict(color="blue"),
- text=data["Black"]["tooltips"], hoverinfo="text"
- ))
- # Known zeros
- for t in [14.134725, 21.022040, 25.010858]:
- fig.add_hline(y=t, line_dash="dash", line_color="green", annotation_text=f"Zero at {t}")
- fig.update_layout(
- title=f"Chess-Zeta Game: {first_player} Moves First",
- xaxis_title="Turn Number",
- yaxis_title="t (Imaginary Part)",
- hovermode="closest"
- )
- fig.write_html(f"chess_zeta_{first_player}_first.html")
- print(f"Plot saved as 'chess_zeta_{first_player}_first.html'")
- # Run
- for first in ["White", "Black"]:
- print(f"\n{first} moves first:")
- winner = chess_zeta_game(first)
- print(f"\nGame Over: {winner} wins!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement