On Wed, Jul 01, 2026 at 06:47:33PM -0400, funkymail via cypherpunks wrote: > On Fri, Jun 26, 2026 at 11:30:46PM -0400, funkymail via cypherpunks wrote: > > > > > > > > > > > > > https://ar.anyone.tech/QkHIWrCSy3iXoP_fS-2snSKIdPYBqGHNmPDya89lWHE#QE8jBZoNzMY9kVYQG13A6oMuI7XhK_sR11WTxCAJ1FqzSRctyUo5iAX14G3o541X#1941075 > > > > > > > > > > > > > https://ar.anyone.tech/ExicPTy-13WSydg1y-DHVOPtR8L6IMDMiMc7ZAGt2_Q > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > class Go: > > > > > > > https://ar.anyone.tech/TR4YX5YIB93wYCr6QEa8x8QTmR8OlexgIBDax4pSF88#1kZvnXfgdcSig3uBZIy_KBN6K3YSV5y_qKu5FPWNEnxR-xyl6gSnlaFdxwM_4r4t#1947193 > > > > https://ar.anyone.tech/Bb-FKg6i6ow-CoAiXBpYFEApMYKKrXjBiPONm5sHJaQ > > > > > > Here is the current state of the simple gogame code: > > > > > > import numpy as np > > > > > > class Go: > > > EMPTY = ' ' > > > BLACK = 'X' > > > WHITE = 'O' > > > EDGE = '#' > > > MARK = '\0' > > > NEIGHBORS = np.array([[-1,0],[0,-1],[1,0],[0,1]]) > > > def __init__(self, size=10): > > > self.clear(size) > > > @property > > > def board(self): > > > return self.edged_board[1:-1,1:-1] > > > @property > > > def size(self): > > > return self.board.shape[0] > > > def __repr__(self): > > > return '\n'.join([' '.join(row) for row in > > > self.edged_board.T[::-1]]) > > > def clear(self, size = None): > > > if size is not None: > > > self.edged_board = np.full((size+2, size+2), Go.EDGE) > > > col_axis_len = min(size, 27) > > > row_axis_len = min(size, 9) > > > self.edged_board[1:col_axis_len+1,0] = [chr(X) for X in > > > np.arange(col_axis_len)+ord('A')] > > > self.edged_board[0,1:row_axis_len+1] = [str(Y) for Y in > > > np.arange(row_axis_len)+1] > > > self.board[:] = Go.EMPTY > > > self.turn = Go.BLACK > > > self.passes = 0 > > > self.captures = {Go.BLACK:0, Go.WHITE:0} > > > def pass_(self, player): > > > if player != self.turn: > > > raise ValueError(f"It is {self.turn}'s turn, not {player}'s") > > > self.turn = Go.BLACK if player == Go.WHITE else Go.WHITE > > > self.passes += 1 > > > def naive_score_needslock(self): > > > unscored_territory = self.board == Go.EMPTY > > > #while len > > > @staticmethod > > > def str2coord(coord : str): > > > col = ord(coord[0].upper()) > > > row = coord[1:] > > > if col < ord('A') or col > ord('Z'): > > > raise ValueError(f'Column "{col}" not A-Z') > > > return np.array([col - ord('A'), int(row) - 1]) > > > @staticmethod > > > def coord2str(col, row = None): > > > if row is None: > > > col, row = col > > > return chr(ord('A') + col) + str(1 + row) > > > def move(self, col, row, player): > > > if player != self.turn: > > > raise ValueError(f"It is {self.turn}'s turn, not {player}'s") > > > try: > > > if row < 0 or col < 0: > > > raise IndexError() > > > if self.board[col, row] != Go.EMPTY: > > > raise ValueError(f"{self.board[col, row]} has already > > > moved there.") > > > except IndexError: > > > raise ValueError(f"{col}, {row} is off the board.") > > > captures = [] > > > self.board[col, row] = player > > > self.turn = Go.BLACK if player == Go.WHITE else Go.WHITE > > > try: > > > for neighbor in Go.NEIGHBORS + 1: > > > colrow = neighbor + [col, row] > > > if self.edged_board[*colrow] == self.turn: > > > members, liberties = > > > self.liberties_needslock(*(colrow - 1)) > > > if len(liberties) == 0: > > > captures.extend(members) > > > self.board[*members.T] = Go.EMPTY > > > > > > members, liberties = self.liberties_needslock(col, row) > > > if len(liberties) == 0: > > > raise ValueError(f"No liberties for {player}: > > > {[self.coord2str(*coord) for coord in members]}.") > > > except: > > > self.board[col, row] = Go.EMPTY > > > self.board[*np.array(captures).T] = self.turn > > > self.turn = player > > > raise > > > self.captures[player] += len(captures) > > > self.passes = 0 > > > def play(self): > > > while self.passes < 2: > > > self.play1() > > > def play1(self): > > > print(self) > > > move = input(f'{self.turn}: ') > > > if move: > > > try: > > > self.move(*self.str2coord(move), self.turn) > > > except Exception as e: > > > print(type(e),e) > > > else: > > > self.pass_(self.turn) > > > def liberties_needslock(self, col, row): > > > colrow = np.array([col, row]) > > > player = self.board[*colrow] > > > members = [colrow] > > > liberties = [] > > > next_index = 0 > > > try: > > > while next_index < len(members): > > > colrow = members[next_index] > > > next_index += 1 > > > self.board[*colrow] = Go.MARK > > > neighbor_colrows = Go.NEIGHBORS + colrow[None] > > > neighbors = self.edged_board[*(neighbor_colrows.T + 1)] > > > if player != Go.EMPTY: > > > liberties.extend(neighbor_colrows[neighbors == > > > Go.EMPTY]) > > > else: > > > liberties.extend(neighbor_colrows[neighbors == > > > Go.BLACK or neighbors == Go.WHITE]) > > > new_members = neighbor_colrows[neighbors == player] > > > members.extend(new_members) > > > self.board[*new_members.T] = Go.MARK > > > finally: > > > self.board[*np.array(members).T] = player > > > assert (self.edged_board != Go.MARK).all() > > > return np.array(members), np.array(liberties) > > > def atari_needslock(self, col, row): > > > members, liberties = self.liberties_needslock(col, row) > > > return len(liberties) == 1 > > > > > > if __name__ == '__main__': > > > def main(): > > > go = Go(5) > > > go.move(0,0,go.turn) > > > go.pass_(go.turn) > > > assert(go.board[0,0] == go.turn) > > > go.pass_(go.turn) > > > go.move(1,0,go.turn) > > > go.move(1,1,go.turn) > > > go.move(0,1,go.turn) > > > assert(go.board[0,0] == Go.EMPTY) > > > go.pass_(go.turn) > > > go.move(0,0,go.turn) > > > go.pass_(go.turn) > > > assert(go.board[0,0] == go.turn) > > > go.clear() > > > go.move(0,0,go.turn) > > > go.move(1,1,go.turn) > > > go.move(0,1,go.turn) > > > go.pass_(go.turn) > > > assert(go.board[0,1] == go.turn) > > > go.clear() > > > import traceback > > > while True: > > > try: > > > go.move(np.random.randint(go.size), > > > np.random.randint(go.size), > > > go.turn) > > > except Exception as e: > > > if "has already moved" in str(e): > > > continue > > > traceback.print_exc() > > > #print(type(e), e, repr(e.__traceback__)) > > > go.play1() > > > continue > > > print(go) > > > go.play() > > > > > > main() > > > > > > > > > https://ar.anyone.tech/avN9UKjg-MuEP6JkPV3-jZ_giKvpalfrMPGg5ejzOmc#solCOXHasYsThT2R-MCJK-qXhMs1n8GfMjKKRUn1f0AlD6Tq1o6PRNJC72TOJ5FC#1947222 > > > https://ar.anyone.tech/mVPpGtZd5jBVzUc44l6MtY48kfQJdMq6o6OCubaR2eU > > > > 7 dimensional checkers. older star trek had "tri-dimensional chess". i > > played once this game. there are floating board partitions and rules for > > moving the pieces between the board partitions -- more like 2.5d > > uncertain > > > > ahmmmmm > > > > https://ar.anyone.tech/trIB7Z9WE4t7Nf8mXgK6RG2PQoZbzaf6dj3qHmYKKNI#NUmAYW_ulyg0QQu8tMCIYKKTAj5GrngiKK-2VkP5DjZ4k_ZW5Ck3fIRTkY18WTsh#1947263 > > https://ar.anyone.tech/GqtLDIu6YDgzmW84K4NsdPlgAUx7z4vRL2WQDpXq794 > > i got stressed today and came online again and talked to chatgpt > > i am trying to try out https://github.com/t8/memoryport which is > purportedly an AI LLM frontrnd that purportedly provides infinite memory > using arweave and vectordb (vectordb r--). it takes a l-ng time to build > on termux and i ran into a build error which chatgpt fixed since i am > new to rust. > > this is my change to this project: > diff --git a/Cargo.toml b/Cargo.toml > index bcef5fe..49ca171 100644 > --- a/Cargo.toml > +++ b/Cargo.toml > @@ -77,3 +77,6 @@ metrics-exporter-prometheus = "0.16" > uc-arweave = { path = "crates/uc-arweave" } > uc-embeddings = { path = "crates/uc-embeddings" } > uc-core = { path = "crates/uc-core" } > + > +[patch.crates-io] > +lance-core = { path = "../rust-lance-termux/rust/lance-core" } > > and then i cloned https://github.com/lance-format/lance into > ../rust-lance-termux with --branch=v0.22.0 and --filter=blob:none and > did git cherry-pick d74bdb21ce8e6429314c14f40b595fbcc23b2683 to add > android support to that old;version > > it's still building > > i also asked chatgpt about making tendon wire arms with coin motors and > it didn't like it and we argued badly. i also learned that there are > different japanese/chinese go rules and komi is 6.5-7.5 points and it > sounds like it can be estimated by playing out the game and measuring > the best play score, but it feeds back changing play if changed, and > it's genetally bigger for smaller boards so often people just keep it > the same value (it's only agreed on for 19x19 boards) > > ... > > https://ar.anyone.tech/hYkVZAUtqnbOK_6MT0-REDRqQrNtH9ST1incyKbxrAk#_3vzlk8gEdNDAwmN5B4HB38DlPI5jHGxZtyobdjVTKrNDa0s7PnhT8xA6Yr3LbaV#1950499 > https://ar.anyone.tech/6P20Y47zLvlY70B7iqN_mXz3vgVbzob2jbxT2KbHwCQ
I am very excited to have reversed mynegative progress fixing my broken harddrive where i then broke the machines i was using to fix it right before jt worked I have successfully rebuilt all the packages needed to resume the harddrive work and passed memory tests on the machines. this took a long time! but not nearly as long as the whole venture. it took so long it's confusing it finished. it's quite satisfying. i spent days going to libraries and spending the day at the library poking at builds, then continued with other approach abagaba slave boss in dunge-- https://ar.anyone.tech/JAE8H7jE9PiHLXZVnxMhkaRAsYirmaj9880pslHn5vk#CmZwS1tB5yoymp54qujvpl507CrSFLRVqX3F-8uYwKXy_EvEb2YRMfaZlI0hZpZz#1950504 https://ar.anyone.tech/fhQ0dj9XvkddfVpYerZv6rnDHDIhhH69tp7hooW3_5k I am not affiliated with https://ar.anyone.tech .
