• 0 Posts
  • 13 Comments
Joined 5 months ago
cake
Cake day: February 18th, 2026

help-circle
  • Yes, this would work — but it comes with a subtle statistical bias: the character ‘W’ ends up underrepresented. With a naïve “avoid COW” approach, only about 25% of the grid will typically be ‘W’.

    A more elegant solution would be:

    • fill the grid completely at random
      • search for every “COW” cluster
        • whenever one is found, copy a random character from one cell in the cluster into another cell of the same cluster
      • Iterate until no “COW” remains

    That keeps the distribution much closer to uniform while still guaranteeing a valid puzzle. Then just insert the single “COW” manually wherever you want the hidden solution to be.

    Julia code example
    s= (320,180)            #size
    m=rand(['C','O','W'],s) #random init
    c=1
    while c>0      #iterate till solved
        c=0
        for i in 1:first(s)
            for j in 1:last(s)
    
                #check for 'COW' in each cluster of 3 and copy a character
                #from a rendom cell to an other random cell of the cluster if found
                
                if i>2 &&  m[i-2:i,j] ==['C','O','W']   #vertical
                    c +=1
                    r =shuffle([1,2])
                    m[i-r[1],j] = m[i-r[2],j]
                end
                if j>2 && m[i,j-2:j]  ==['C','O','W']   #horizontal
                    c +=1
                    r =shuffle([0,1,2])
                    m[i,j-r[1]] = m[i,j-r[2]]
                end
            end
        end
    end
    

    The neat part is that this preserves an almost perfectly balanced character frequency.

    For comparison, the puzzle in the example image seems to contain roughly:

    C: ~260 (~25%) O: ~520 (~50%) W: ~244 (~25%)

    So the original author clearly used a different generation strategy.

    Possibly on purpose: visually, ‘C’ and ‘O’ are much easier to confuse than ‘W’. Reducing the number of 'W’s therefore increases the search difficulty. In that sense, the approach suggested by @Snazz@lemmy.world is probably preferable: keep the distribution mostly balanced, but intentionally bias it just enough to make the puzzle psychologically annoying.

    I wonder if there is a non iterative way to generate this puzzle with a ‘uniform’ character distribution 🤔




  • I definitively also observe the recent increase of spam (mostly on info@domain) however spamassassin (after some training) does a decent job sorting the trash out. Also I use a unique email address for each website I register, this way a lot of spam was removed by blocking an email-address I’ve used for login to facebook 10 years ago.







  • I absolutely feel your pain. However, there is also the side that all this complexity must be handled somehow. The other extreme is that you’d have to compile all the software and its dependencies from scratch, as well as read and understand the source code.

    In the end, it boils down to the people who actually care (like you, who is probably one of them) to exercise caution—looking at the output of curl https://some.rando.url/install.sh before doing the | sudo bash -c and constantly insisting on the validity and absolute necessity of signature checks, transparency, and so on. Meanwhile, all the other folks get at least a foothold in self-sovereignty without being completely smashed by the details of compiler flags.


  • All these speeds the providers advertise (especially the faster ones) are often cut down by bad peering. I often had an issue downloading bigger files from my storage when I was traveling. Only got some single digit MBit transfer speeds due to bad peering, while speed tests has shown decent results. When it comes down to Selfhosting the upload/download figures alone not always tell the truth. In my point of view 20Mbps is actually even sufficient for most of private stuff, even streaming HD content to one ore two peers simultaneously.