[HN Gopher] Truchet Tiles
       ___________________________________________________________________
        
       Truchet Tiles
        
       Author : downboots
       Score  : 109 points
       Date   : 2025-07-25 22:53 UTC (4 days ago)
        
 (HTM) web link (en.wikipedia.org)
 (TXT) w3m dump (en.wikipedia.org)
        
       | onion2k wrote:
       | Truchet tiling is a staple of the shader community -
       | https://www.shadertoy.com/results?query=Truchet
       | 
       | A particularly nice example -
       | https://www.shadertoy.com/view/4td3zj
       | 
       | And a nice '3D' one - https://www.shadertoy.com/view/4lSBzm
        
         | drewnoakes wrote:
         | They also come up a lot in pen plotter art.
        
         | JKCalhoun wrote:
         | Like the hexagonal one.
        
       | joshu wrote:
       | some truchet tiles i did for a plotter a million years ago:
       | 
       | hex:
       | 
       | https://www.instagram.com/p/B2TRmM7p1BB
       | 
       | https://www.instagram.com/p/B2Q130pJwum
       | 
       | rectangular:
       | 
       | https://www.instagram.com/p/BxUMO05p3Cx
       | 
       | https://www.instagram.com/p/BxO1H3cJ57V
        
         | gilleain wrote:
         | Nice.
         | 
         | It's a shame that regular octagons do not tile the plane.
         | Octagons + squares might work I suppose.
        
           | johanvts wrote:
           | You can use the monotile! See my links below.
        
             | gilleain wrote:
             | Ah perfect! I went away at lunch and tried to work it out,
             | including for the spectre tile (monotile), although I took
             | a different approach.
        
         | pavel_lishin wrote:
         | Man, I've tried writing my own version of things like this, but
         | it ended up looking like pubes on paper.
        
       | joshu wrote:
       | 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
        
         | WantonQuantum wrote:
         | I used to do this on my VIC-20 a million years ago. Just
         | looking at this line brought back the visual image like it was
         | yesterday.
        
         | teddyh wrote:
         | python3 -c 'import random, time, itertools;
         | any(time.sleep(0.01) or print(random.choice("\u2571\u2572"),
         | end="", flush=True) for x in itertools.repeat(None))'
        
           | binaryturtle wrote:
           | https://github.com/the-real-
           | tokai/macuahuitl/blob/master/tem...
           | 
           | (how about this fancy version with SVG output? :D No longer a
           | single line though.)
        
           | o11c wrote:
           | Quite a few bytes can be golfed out of that still:
           | python3 -c 'while I := __import__: I("time").sleep(0.01);
           | print(I("random").choice("\u2571\u2572"), end="", flush=1)'
           | 
           | My reasoning including most failures:
           | 
           | Whitespace is _mostly_ trivial and not worth mentioning,
           | except that the space between  "or" and "print" can be
           | eliminated by moving the `time.sleep` to before a string
           | literal. Alternatively, using `!=` works almost anywhere
           | (though not with some alternative ideas), or `;` with the
           | `while` version.
           | 
           | There are several shorter ways to get an infinite loop:
           | itertools.repeat(None) # for reference
           | itertools.repeat(0)       itertools.count()
           | iter(lambda: 0, 1) # also removes the import, so 10 chars
           | shorter       iter(''.upper, 1) # same length when spaces
           | removed, shorter if not removed       iter(int.mro, 1) #
           | spooky, but one char shorter still       range(9**99) # much
           | longer than the age of the universe       range(9**9) # 44
           | days       # but it turns out we can skip it entirely
           | 
           | The loop itself:                 any(expr for x in it) #
           | theoretically prevents the memory leak       [expr for x in
           | it] # wastes 800 bytes per sec, 69 MB/day, 1 GB per 14 days
           | while 1: expr # breaks one-liner unless longer
           | `__import__("")` is used, but worth it since it eliminates
           | the entire iterable, even before doing I=__import__
           | while I := __import__: # 2 chars shorter than doing the
           | assignment inside the loop
           | 
           | I looked into alternatives to calling sleep at all, but
           | computers are too fast (and variable in speed) nowadays.
           | `os.sync` looked promising but is only slow the first time.
           | Trying to pass its return value as an argument also failed.
           | 
           | `flush=1` is shorter than `flush=True`. Otherwise ... I tried
           | `sys.stdout` but hardly anything was even close:
           | any(time.sleep(0.01) or print(random.choice("\u2571\u2572"),
           | end="", flush=True) for it)       any(time.sleep(0.01) or
           | print(random.choice("\u2571\u2572"), end="", flush=1) for it)
           | sys.stdout.writelines(time.sleep(0.1) or
           | random.choice("\u2571\u2572")+"\0"*8191 for it) # can avoid
           | the flush by filling the buffer manually, but requires
           | several more chars to import sys as well
           | 
           | Random:                 random.choice("\u2571\u2572")       #
           | UTF-8 b"\xe2\x95\xb1" doesn't seem useful
           | chr(9585+random.randrange(2)) # sigh
           | chr(9585+(random.random()<.5)) # nope
           | chr(9585+(os.getrandom(1)[0]&1)) # + has tigher precedence
           | than &       # that last would save 1 byte with normal
           | `import` (since the identifier is repeated), but loses with
           | `__import__`       # is there a way to eliminate parens? Is
           | >> or | or - useful? What about *splat?
        
       | pan69 wrote:
       | 8-Bit Show and Tell recently did a video about Truchet Tiles on
       | PETSCII. Fun watch:
       | 
       | https://www.youtube.com/watch?v=MVQJykMJSH0
        
       | Jgoauh wrote:
       | not sure why this is on top of the feed but i appreciate it ! Is
       | there a website where you can draw on the truchet tiles live ?
       | would be cool
        
         | johanvts wrote:
         | Not exactly what you are requesting, but I added truchet
         | patterns to a monotile renderer a while back. See here
         | https://www.johansivertsen.com/post/monotile/ The drawing tool
         | is here: https://www.johansivertsen.com/customhatviz/app.html
         | Press 'build supertiles' a few times and enable the truchet
         | overlay.
        
       | calvinmorrison wrote:
       | did anyone have wooden truchet tiles of various colors as a kid
       | that you would place on a board and flip them around to make
       | various designs
        
       | ItCouldBeWorse wrote:
       | These are also good to avoid tiling textures having a
       | https://en.wikipedia.org/wiki/Moir%C3%A9_pattern. Just do a
       | randomized labyrinth per square and voila.
        
         | qiine wrote:
         | oh! moire and the double slit experiment are related things,
         | TIL
        
       | nedbat wrote:
       | Using multi-level Carlson Truchet tiles for half-toning images:
       | https://nedbatchelder.com/blog/202208/truchet_images.html
        
       | onychomys wrote:
       | We have this card-tiling game based on this idea.
       | 
       | https://www.ravensburger.us/en-US/products/games/thinkfun/iz...
       | 
       | It's not a great game, but it's fun enough. The box is small, so
       | we keep it around even if we don't play it much.
        
       | coldcode wrote:
       | I use a lot of truchet tiles in my art (https://andrewwulf.com),
       | but I color them afterwards, which seems fairly uncommon (article
       | from last year, https://thecodist.com/my-art-and-color-after-
       | tiling/) outside of shaders. I focus on 2d art for print. I also
       | use various combinations of 1x1, 1x2, 2x2, 3x3 and 4x4 tiles,
       | sometimes all in one work.
        
       | nojs wrote:
       | Reminds me of this, created by one of the tailwind guys:
       | https://heropatterns.com/
       | 
       | These are really useful for subtle background patterns on footers
       | etc.
        
       | WillieMacBride wrote:
       | "Scramble Squares" is a card-tiling puzzle which looks like a
       | specialized form of Truchet Tiling.
       | 
       | https://scramblesquares.com
       | 
       | There are 9 square (non-identical) tiles in a set. Each edge of
       | each tile displays half of a two-sided symbol (eg cats, dogs,
       | flags, etc.). Goal is to arrange the tiles in a 3x3 grid so that
       | all touching edges match with corresponding symbol halves.
       | 
       | Looks simple at first, but a real challenge.
       | 
       | Size of the entire solution space is 9! * 4^9 (billions), and
       | brute-force solvers have been written in Python:
       | 
       | https://github.com/roadfoodr/scramble-squares-solver
       | 
       | What are the combinatorial rule(s) used to construct these tiles
       | ?? Some clues:
       | https://www.reddit.com/r/puzzles/comments/1e09up6/help_how_t...
       | 
       | Kathie Gavin (designer of Scramble Squares) says the design was
       | inspired by "ancient Egyptian tile patterns" she saw in a museum.
       | Does anyone know more about this?
        
       | frankus wrote:
       | I need some of these mathematical tiles to be available as
       | physical ceramic tiles for nerdy backsplashes and bathrooms.
        
       | o11c wrote:
       | Wow, Wikipedia is pretty minimal in giving examples. Clicking
       | through various links in comments for more examples should be
       | considered mandatory (though many of the 3D ones are actually
       | "some effect on top of Truchet").
       | 
       | I suppose I don't normally think about how you're actually using
       | minimal Truchet tiles when you play one of SGT's puzzle games,
       | since it's the most boring tileset:
       | 
       | https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/slan...
        
       | calvinmorrison wrote:
       | https://thewoodenwagon.com/woodentoy/CAF3064.html
        
       ___________________________________________________________________
       (page generated 2025-07-29 23:01 UTC)