75 pointsby datavorous_3 hours ago14 comments
  • sireata few seconds ago
    [delayed]
  • jll2917 minutes ago
    Cool project. You could also use the front-end of GNU chess to save some lines, and implement only a back-end.

    Bug report:

        a b c d e f g h
      8 r n b q k b n r 8
      7 . . p p p p p p 7
      6 . p . . . . . . 6
      5 p . . . . . . . 5
      4 P . . P P . . . 4
      3 . . . . . . . . 3
      2 . P P . . P P P 2
      1 R N B Q K B N R 1
        a b c d e f g h
      move: b2b3
      ai: b6b4
    
    The pawn is not permitted to move two fields after it has already beeen moved once before: b6b4 isn't a valid move after b7b6. (First moving two fields, and then one would have been okay, in contrast.)
    • datavorous_11 minutes ago
      Thanks for pointing it out! I will try to patch it.

      Appreciate you taking the time to test it.

  • dfc10 minutes ago
    How many games did you have to throw away because stockfish wanted to castle? Or did you force stockfish to not castle? Castling seems like such a frequent move it is hard to draw any conclusions about the strength of an engine that does not support it.
  • oh_my_goodness8 minutes ago
    If you ever spent much time at a chess club, you've seen why 2kB is a really disturbing number.
  • lekevicius2 hours ago
    Do you think it would be possible to achieve 1:1 ELO:bytes? Even smaller, but can be less smart.
    • esafak29 minutes ago
      That's an awesome code golf challenge
    • datavorous_2 hours ago
      maybe for very low ratings it's plausible? 1 elo per byte might happen in a tiny range but at a useful strength it would break fast, that's what i think
      • iterance30 minutes ago
        What's the snallest possible program that accepts a chess board state and prints any legal move? True randomness may only have a couple hundred ELO, but then, that's pretty big for golf
  • tromp31 minutes ago
    https://www.chessprogramming.org/Toledo is a family a moderately strong tiny chess programs.
  • GeertB2 hours ago
    How did you handle games where Stockfish would castle or promote?
    • datavorous_2 hours ago
      i forced stockfish to play only non castling, non en passant, non promotion moves by filtering legal moves and passing only those as root_moves

      also removed castling/EP rights from FEN

  • chvid2 hours ago
    Cool that you could keep it under 2k but it would nice to have a readable version of the source code.

    Do you work with it like this or do you have some sort of script you apply to get it down to a single line, single letter variable names?

    • noutella2 hours ago
      What you’re describing is the typical output / function of a minifier
    • alansaber2 hours ago
      The real fun would be reverse-engineering the minified code (there are loads of tools to do this for chrome extensions)
  • haute_cuisinean hour ago
    This is amazing! Thanks for sharing. What would be the elo gain for 4KB engine?

    P.S. I assume 1200 elo in chess com scale (not lichess / fide elo) and bullet chess variant?

    • grumpopotamusan hour ago
      There is a TCEC category for 4k engines. The top ones are ~3000 Elo.
      • sigmoid10an hour ago
        It's wild to think that 4096 bytes are sufficient to play chess on a level beyond anything humans ever achieved. Makes you think what other difficult tasks are out there that take even highly gifted humans years or decades to master, but a superior algorithm would more or less fit into one of those big QR code formats.

        These things always make me think back to Westworld season 2, where the finale revealed that human minds are much simpler than they themselves believe and fit completely into an algorithm that could be printed in an average book.

        • vunderbaan hour ago
          Well, one of the most fundamental algorithms for building a chess AI is minimax [1] (or variants like negamax), and that’s been around for close to a century. The key difference is that as compute power and available RAM have grown, it’s become possible to search much deeper and evaluate far more plies.

          So while 4k is still very impressive for the code base, it comes with a significantly larger runtime footprint.

          [1] - https://en.wikipedia.org/wiki/Minimax

        • kevmo314an hour ago
          The core search algorithm is very simple though. 4KB engines may not run that fast if they do exhaustive search, but they’ll be quite accurate.

          According to TCEC the time control is 30 mins + 3 sec, that’s a lot of compute!

          • sigmoid10an hour ago
            If you look at the current winner [1], it does a lot more than just brute force tree search. The space state for chess is simply too big to cover without good heuristics. Deep Blue may have been a pure brute force approach to beat Kasparov after Deep Thought failed using the same core algorithm, but modern chess engines search far deeper on the tree with far fewer nodes than Deep Blue ever could thanks to better heuristics.

            [1] https://github.com/MinusKelvin/ice4

            • kevmo31430 minutes ago
              I'm not suggesting that it's only brute force tree search, just that it's not very complicated to develop a theoretically perfect chess engine in direct response to the parent

              > It's wild to think that 4096 bytes are sufficient to play chess on a level beyond anything humans ever achieved.

  • falsaberN1an hour ago
    Oh my god the source is so tiny! It's really hard to parse because of it being minified but I love it to bits.
  • burstw0wan hour ago
    Good job! I love how you obfuscated your code, really in a spirit of FOSS!
  • TZubiri2 hours ago
    Codex or Claude Code?
    • datavorous_an hour ago
      none.

      scribbling long enough on a piece of paper is more enjoyable than prompting.

  • newzino44 minutes ago
    [dead]
  • genie3io2 hours ago
    [dead]