Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Challenges

Comments on Net​​ or​​ not?

Parent

Net​​ or​​ not?

+1
−0

Given a hexomino, indicate whether it is a net of a cube.

Input

  • A 6 by 6 grid containing exactly 6 filled squares.
  • The 6 filled squares will be in a single edge connected set (a hexomino).
  • The topmost row and leftmost column will never be empty (the hexomino will be as far up and left as it can go).
  • The grid is represented as 6 newline separated strings of 6 characters, with # for a filled square and . for an empty square.

Output

  • One of 2 distinct values to indicate whether the hexomino can be folded to give a cube.

The hexominoes

A hexomino is an edge connected subset of the square tiling, composed of exactly 6 squares.

Up to rotation and reflection, there are 35 edge connected hexominoes, 11 of which are nets of a cube.

The 35 hexominoes[1]

The 35 hexominoes

The 11 nets of a cube[2]

The 11 nets of a cube

Your code must also accept inputs that are rotations and reflections of these. There are a total of 216 hexominoes including all rotations by a multiple of 90 degrees and reflections, 64 of which are cube nets. The test cases include all of these.

Test cases

Cube nets

The 64 hexominoes that can be folded into a cube.

#.....
####..
#.....
......
......
......

.#....
.#....
.#....
###...
......
......

...#..
####..
...#..
......
......
......

###...
.#....
.#....
.#....
......
......

.##...
.#....
.#....
##....
......
......

...#..
####..
#.....
......
......
......

##....
.#....
.#....
.##...
......
......

#.....
####..
...#..
......
......
......

##....
.###..
.#....
......
......
......

#.....
###...
.#....
.#....
......
......

..#...
###...
.#....
.#....
......
......

.#....
.###..
##....
......
......
......

.#....
.#....
###...
#.....
......
......

..##..
###...
..#...
......
......
......

.#....
.#....
###...
..#...
......
......

..#...
###...
..##..
......
......
......

##....
.##...
..##..
......
......
......

#.....
##....
.##...
..#...
......
......

..##..
.##...
##....
......
......
......

..#...
.##...
##....
#.....
......
......

###...
..###.
......
......
......
......

..###.
###...
......
......
......
......

#.....
#.....
##....
.#....
.#....
......

.#....
.#....
##....
#.....
#.....
......

.#....
###...
.#....
.#....
......
......

.#....
.#....
###...
.#....
......
......

..#...
####..
..#...
......
......
......

.#....
####..
.#....
......
......
......

.#....
###...
..##..
......
......
......

..#...
.##...
##....
.#....
......
......

##....
.###..
..#...
......
......
......

.#....
.##...
##....
#.....
......
......

#.....
##....
.##...
.#....
......
......

..##..
###...
.#....
......
......
......

..#...
.###..
##....
......
......
......

.#....
##....
.##...
..#...
......
......

#.....
##....
.#....
.##...
......
......

..##..
###...
#.....
......
......
......

##....
.#....
.##...
..#...
......
......

.##...
.#....
##....
#.....
......
......

##....
.###..
...#..
......
......
......

#.....
###...
..##..
......
......
......

..#...
.##...
.#....
##....
......
......

...#..
.###..
##....
......
......
......

...#..
####..
..#...
......
......
......

.##...
##....
.#....
.#....
......
......

##....
.##...
.#....
.#....
......
......

.#....
####..
#.....
......
......
......

#.....
####..
.#....
......
......
......

.#....
.#....
##....
.##...
......
......

.#....
.#....
.##...
##....
......
......

..#...
####..
...#..
......
......
......

.#....
.##...
##....
.#....
......
......

.#....
####..
..#...
......
......
......

..#...
####..
.#....
......
......
......

.#....
##....
.##...
.#....
......
......

.#....
.##...
.#....
##....
......
......

.#....
##....
.#....
.##...
......
......

.##...
.#....
##....
.#....
......
......

##....
.#....
.##...
.#....
......
......

#.....
####..
..#...
......
......
......

..#...
####..
#.....
......
......
......

...#..
####..
.#....
......
......
......

.#....
####..
...#..
......
......
......

Not cube nets

The 152 hexominoes that cannot be folded into a cube.

..#...
#####.
......
......
......
......

#####.
..#...
......
......
......
......

.#....
.#....
##....
.#....
.#....
......

#.....
#.....
##....
#.....
#.....
......

.##...
###...
.#....
......
......
......

##....
###...
.#....
......
......
......

.#....
###...
##....
......
......
......

.#....
###...
.##...
......
......
......

##....
.####.
......
......
......
......

####..
...##.
......
......
......
......

#.....
##....
.#....
.#....
.#....
......

...##.
####..
......
......
......
......

.#....
.#....
.#....
##....
#.....
......

#.....
#.....
#.....
##....
.#....
......

.#....
##....
#.....
#.....
#.....
......

.####.
##....
......
......
......
......

.#....
##....
###...
......
......
......

#.....
###...
##....
......
......
......

###...
##....
.#....
......
......
......

##....
###...
#.....
......
......
......

###...
.##...
.#....
......
......
......

.##...
###...
..#...
......
......
......

..#...
###...
.##...
......
......
......

.#....
.##...
###...
......
......
......

###...
..#...
..##..
......
......
......

..#...
..#...
###...
#.....
......
......

..#...
###...
#.....
#.....
......
......

#.....
###...
..#...
..#...
......
......

.###..
.#....
##....
......
......
......

#.....
#.....
###...
..#...
......
......

..##..
..#...
###...
......
......
......

##....
.#....
.###..
......
......
......

####..
##....
......
......
......
......

.#....
.#....
##....
##....
......
......

..##..
####..
......
......
......
......

#.....
#.....
##....
##....
......
......

##....
##....
.#....
.#....
......
......

##....
####..
......
......
......
......

##....
##....
#.....
#.....
......
......

####..
..##..
......
......
......
......

####..
.#....
.#....
......
......
......

..#...
..#...
####..
......
......
......

..#...
..#...
###...
..#...
......
......

#.....
#.....
###...
#.....
......
......

#.....
###...
#.....
#.....
......
......

####..
..#...
..#...
......
......
......

.#....
.#....
####..
......
......
......

..#...
###...
..#...
..#...
......
......

####..
#.#...
......
......
......
......

.#....
##....
.#....
##....
......
......

#.#...
####..
......
......
......
......

#.....
##....
#.....
##....
......
......

##....
.#....
##....
.#....
......
......

.#.#..
####..
......
......
......
......

####..
.#.#..
......
......
......
......

##....
#.....
##....
#.....
......
......

...#..
...#..
####..
......
......
......

####..
...#..
...#..
......
......
......

..#...
..#...
..#...
###...
......
......

###...
..#...
..#...
..#...
......
......

###...
#.....
#.....
#.....
......
......

#.....
#.....
#.....
###...
......
......

#.....
#.....
####..
......
......
......

####..
#.....
#.....
......
......
......

.##...
##....
.##...
......
......
......

#.#...
###...
.#....
......
......
......

##....
.##...
##....
......
......
......

.#....
###...
#.#...
......
......
......

##....
##....
.##...
......
......
......

#.....
###...
.##...
......
......
......

..#...
###...
##....
......
......
......

.##...
###...
#.....
......
......
......

.##...
##....
##....
......
......
......

##....
.##...
.##...
......
......
......

##....
###...
..#...
......
......
......

.##...
.##...
##....
......
......
......

#.....
##....
###...
......
......
......

..#...
.##...
###...
......
......
......

###...
.##...
..#...
......
......
......

###...
##....
#.....
......
......
......

######
......
......
......
......
......

#.....
#.....
#.....
#.....
#.....
#.....

.###..
##....
.#....
......
......
......

.#....
###...
#.....
#.....
......
......

.#....
###...
..#...
..#...
......
......

..#...
..#...
###...
.#....
......
......

###...
..##..
..#...
......
......
......

.#....
##....
.###..
......
......
......

..#...
..##..
###...
......
......
......

#.....
#.....
###...
.#....
......
......

#.#...
###...
#.....
......
......
......

#.#...
###...
..#...
......
......
......

#.....
###...
#.#...
......
......
......

##....
.#....
###...
......
......
......

..#...
###...
#.#...
......
......
......

###...
.#....
##....
......
......
......

.##...
.#....
###...
......
......
......

###...
.#....
.##...
......
......
......

###...
###...
......
......
......
......

##....
##....
##....
......
......
......

#####.
....#.
......
......
......
......

....#.
#####.
......
......
......
......

#####.
#.....
......
......
......
......

##....
#.....
#.....
#.....
#.....
......

.#....
.#....
.#....
.#....
##....
......

#.....
#.....
#.....
#.....
##....
......

##....
.#....
.#....
.#....
.#....
......

#.....
#####.
......
......
......
......

#.....
#.#...
###...
......
......
......

###...
#.....
##....
......
......
......

###...
#.#...
#.....
......
......
......

###...
..#...
.##...
......
......
......

##....
#.....
###...
......
......
......

###...
#.#...
..#...
......
......
......

..#...
#.#...
###...
......
......
......

.##...
..#...
###...
......
......
......

###...
.###..
......
......
......
......

.#....
##....
##....
#.....
......
......

#.....
##....
##....
.#....
......
......

.###..
###...
......
......
......
......

##....
.##...
..#...
..#...
......
......

###...
..##..
...#..
......
......
......

..#...
..#...
.##...
##....
......
......

.##...
##....
#.....
#.....
......
......

.###..
##....
#.....
......
......
......

#.....
##....
.###..
......
......
......

#.....
#.....
##....
.##...
......
......

...#..
..##..
###...
......
......
......

.##...
####..
......
......
......
......

#.....
##....
##....
#.....
......
......

.#....
##....
##....
.#....
......
......

####..
.##...
......
......
......
......

##....
.#....
##....
#.....
......
......

##....
#.....
##....
.#....
......
......

##.#..
.###..
......
......
......
......

.###..
##.#..
......
......
......
......

#.##..
###...
......
......
......
......

.#....
##....
#.....
##....
......
......

###...
#.##..
......
......
......
......

#.....
##....
.#....
##....
......
......

.#....
##....
.#....
.#....
.#....
......

...#..
#####.
......
......
......
......

#.....
#.....
#.....
##....
#.....
......

.#....
#####.
......
......
......
......

.#....
.#....
.#....
##....
.#....
......

#####.
...#..
......
......
......
......

#.....
##....
#.....
#.....
#.....
......

#####.
.#....
......
......
......
......

#..#..
####..
......
......
......
......

##....
.#....
.#....
##....
......
......

####..
#..#..
......
......
......
......

##....
#.....
#.....
##....
......
......

Scoring

This is a code golf challenge. Your score is the number of bytes in your code. Lowest score for each language wins.

Explanations are optional, but I'm more likely to upvote answers that have one.


  1. Thanks to The 35 hexominoes Wikimedia page. ↩︎

  2. Thanks to The 11 nets of a cube Wikimedia page. ↩︎

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

Post
+1
−0

Python 3, 463 400 343 bytes

-63 bytes thanks to trichoplax's suggestion to remove spaces
-57 bytes by simple conversion to base 36

where'dmyspacebarsgoinmypreviousedit?anyways,

lambda s:hex(sum(2**i*(c=='#')for i,c in enumerate(s)))[2:]in hex(int("am771a6n2yfu7ug75zes2q1su0f6gkn02oqfhz3lrnkgshfw089ql9jt5ij15gcgdkbqvvgs988w3jrz2rteixg1m9g6x9zjwwo6121ad1jae2vlb9n6exq73631tpgp0fjvemidcr1jm7vipjsxv7rsos2srbt5456mb79qqxiod0ay2tk927y060mqwiv8ggkn9565h93c2j3xrvd5jxcu4p2egw5qkh6rzcfrhsnqr2gn6i6vr5t3hj89xbgp0m51f",base=36))

Try it online!

Yet another interesting challenge foiled to brute force... (at least until someone comes up with a way to decision-problem this more efficiently...)

Anonymous lambda function which takes string as input. Takes a power of 2 from the character indexes, indicating #s with 1s and .s/newlines with 0s. Sums up and manually checks a lookup table for all valid cube nets. Returns True for cube nets and False otherwise.

(i.e. if # means include and ./\n mean exclude, 1st character has value 1, 2nd charcter has value 2, 3rd character has value 4, then values 8, 16, 32, and so on with all powers of 2 up to 240 inclusive)

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

3 comment threads

Probable improvements (1 comment)
Omitting the spaces (3 comments)
Base 36 (4 comments)
Base 36
trichoplax‭ wrote 4 days ago

You can save some bytes by using base 36 instead of base 16.

trichoplax‭ wrote 4 days ago · edited 4 days ago

Oh wait - Python only converts from base 36, not to base 36. Might not be any saving after all.

trichoplax‭ wrote 4 days ago · edited 4 days ago

Turns out it's still possible to save some bytes by converting the string of base 36 numbers to a list of integers, and checking if the integer you generate is in that list:

lambda s:sum(2**i*(c=='#')for i,c in enumerate(s))in list(map(lambda x:int(x,36),"4h3if6 1f9o 1fyb 1g1t 1g1u 1g1w 1g20 8y5ym9 2uir 2um9 2uma 2umc 2umg 1a0au 1a0oy 1a0p0 1bev6 48ar 48e9 48ea 48ec po 2iltz 2ilxi 2im83 2imbl 2imbm 2imbo 2iyh2 2iyv6 2iyv8 2k0eb 2k0ht 2k0hu 2kd1e dcc e4h e4i e4k e4o 3rk06 3rkea 3rkec 3syki 51wqr 51wu9 51wua 529du pzg qo3 qrl qrm qro qrs 7ieir 7iem9 7iema 7ir5u 12j0 13b6 13b8 13bc 2rr 8rcoy".split()))

I make that 432 bytes.

trichoplax‭ wrote 2 days ago

My other thread about removing spaces saves more than this approach, so it's probably redundant now. The spaces can't be removed in the same way here, so this might be a dead end.