hex:
https://www.instagram.com/p/B2TRmM7p1BB
https://www.instagram.com/p/B2Q130pJwum
rectangular:
It's a shame that regular octagons do not tile the plane. Octagons + squares might work I suppose.
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))'(how about this fancy version with SVG output? :D No longer a single line though.)
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?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.
These are really useful for subtle background patterns on footers etc.
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?
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...
onion2k•6mo ago
A particularly nice example - https://www.shadertoy.com/view/4td3zj
And a nice '3D' one - https://www.shadertoy.com/view/4lSBzm
drewnoakes•6mo ago
JKCalhoun•6mo ago