Overview of Hollow Knight Timer Generator and LiveSplit
.lss template files required by LiveSplit.website·Indexed 30 days ago
https://cutereimu.cnA collection of personal technical practices, mathematical essays, and physics notes, with a heavy focus on speedrunning guides and technical analysis for Hollow Knight and Silksong, including route optimization, save file structure, and API integration.
.lss template files required by LiveSplit.// Point.java: Represents a coordinate on the board
public final class Point {
public final int x;
public final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {return "(" + x + "," + y + ")";}
}
// Constant.java: Board dimensions
public abstract class Constant {
public static int MAX_LEN = 15;
}
// ChessBoard.java: Game loop and state management
public class ChessBoard {
private byte[][] board = new byte[Constant.MAX_LEN][Constant.MAX_LEN];
private Player[] players = new Player[2];
private int whoseTurn = 0;
private int count = 0;
private boolean isEnd = false;
private boolean checkForWin(Point p) {
// Logic to check if the last move created five in a row
return false;
}
public void play() {
if (isEnd) return;
Point p = players[whoseTurn].play(); // Get move from current player
if (board[p.y][p.x] != 0)
throw new IllegalArgumentException(p.toString() + board[p.y][p.x]);
board[p.y][p.x] = (byte) (whoseTurn + 1);
if (++count == Constant.MAX_LEN * Constant.MAX_LEN) isEnd = true;
if (checkForWin(p)) isEnd = true;
whoseTurn = 1 - whoseTurn; // Switch turn
players[whoseTurn].display(p); // Notify next player of the move
if (isEnd) {
players[0].notifyWinner(2 - whoseTurn);
players[1].notifyWinner(2 - whoseTurn);
}
}
public static void main(String[] args) {
ChessBoard b = new ChessBoard();
b.players[0] = new HumanPlayer(1); // Black
b.players[1] = new RobotPlayer(2); // White
while (b.getWinner() == null) {
b.play();
}
}
}A perceptron is a basic unit of a neural network that takes multiple binary inputs ($x_j$), applies weights ($w_j$), and produces a binary output based on a threshold.
Mathematically, the output is 1 if the weighted sum $\sum_j w_j x_j$ exceeds a threshold, and 0 otherwise. This can be simplified using a bias $b$ (where $b = -\text{threshold}$) and vector dot product notation:
$ ext{output} = 1$ if $\vec{w} \cdot \vec{x} + b > 0$, else $0$.
[]byte and string).type Constraint interface { ~[]byte | ~string }
func Slice[T Constraint](s T) T {
return s[1:3] // Valid for both []byte and string
}json/v2 package to stable, and a new uuid package. It also includes memory allocation optimizations for small objects (under 80 bytes), reducing overhead by up to 30%, and adds support for goroutine leak analysis.Choosing a frontend language depends on the target platform and project scale:
.claude/ directory (similar to .vscode/).User Level: ~/.claude/
Project Level: [repo-root]/.claude/ (and [repo-root] for some files)