An implementation of the Wave Function Collapse algorithm in 2D.
The following exmaple was generated while using the MazeTile
tile that can be found inside tile.rs.
╋┫ ┏┓┃┃┣╋━┛┃ ┗┓┗┫┣━┛┗┛┣┫ ┃ ┃┣━┓┣┫┗┫┃┗╋┛ ┃ ┃┃┏┻┛┏┻┫ ┣┫┏╋┓┃┃┗┓ ┃┣┻┓┏━┓┏┻┓ ┣┫┣┻━╋
┣╋━┛┃┗┛┣┫ ┃ ┣━┫┗┓┏┓ ┃┃ ┣┓ ┃┣━┛┗┛ ┣╋┓┣┳┓┣┓┏┫┗┻┓ ┣━┻━┫┃┗┻╋┛┃ ┃ ┣┫┏┫┃ ┃┗┓┗━┻┫┃ ┃
┛┃┏┳┫ ┃┣┓┏┫┏┳╋┓┣┳┻┻┛ ┣╋━┫┗┓┗╋━┓┏━┳╋┛┗╋╋┛┗╋╋╋━━┛┏┫┏┳━┫┃┏┓┣━┻┓┣┓┃┗┫┃┣━┻┓┗━━┳╋┫ ┣
━┛┗┫┣┓┏┫┣┻┻┛┗┛┗┫┃┃ ┃┃ ┣┓┣━╋━┛┗┳┛┃ ┣┫┏┳┻┫┗━┓┏┻┻┛┣┓┃┃┗╋┛ ┃┗┻╋┓┣┻┛ ┣┳━┓┣┻┛ ┃
┏┻┫┗┫┗┻━┓ ┣┫┣┳┳┳┳┛┃ ┣┻┛ ┃┏━┳┻━┫ ┣╋┫┃ ┃ ┣┫┏┳┳┻╋┛┃ ┃ ┃ ┣╋┛ ┣╋┓┣┻┳━┳┳┛
┣┓┃ ┗┳┓┏╋━━┓ ┣╋┫┃┃┗┻┓┣━┻┳┓┏╋┛ ┣┳┳┛ ┃┣┻┫┏┫ ┃┗┫┗┻┳┛ ┣━╋━━━╋┳┳┛┃┏━┓┏┳╋┫┗┛ ┃┏┛┃
┏┳┻┛┣┳┓┃┃┣┛┏━┛┏┫┃┣╋╋┳┳┫┃┏┓┣╋┛┗┓ ┣┻┻┳━━╋╋┓┗┛┣┓ ┣┓┣━┓┃ ┣━╋┓ ┣┫┗┓┃┗┳╋┛┃┣╋━┓┏┻╋┓┗┓
┻╋┳━┫┗┻┫┗╋━┫┏┳╋╋╋┫┣┫┗┛┗┻╋┛┣┻┳━┻━┫ ┃┏┳┫┗╋━━┻┫ ┃┣┫ ┃┗┳━┻━┛┣┓┏╋┫ ┣┻━┫┣━┛┗╋━┛┣┳┻┛ ┣
┳╋┻┳╋━┳┫ ┃ ┣┻┫┗╋┫┃┗┛ ┣━┻━┻┳━┳┛┏━╋╋╋┫ ┃ ┣━┻┻┛ ┣┓┗━┳━┳┛┃┣┫┃ ┣━┳┛┃┏┓ ┣┳━┛┣┓ ┣
┫┣┓┃┗┳┻┫ ┣┳╋┳╋┳┫┗╋┳━┓ ┣┳┓┏━┫ ┣┳┫ ┣┫┃┃ ┃┏┳┓┃┏┓┏┓ ┃┣━┓┗┳┫ ┃┣┫┃┏┫┏┫ ┃┗┻┓┃┗┳┓┣┻━┳┛
┫┣╋┻┓┣┓┗┓┗┫┃┗┫┗╋━╋┫ ┃┏┳━┻┫┗┫ ┣┳┛┃┣┳┻┻┻╋━┫┃┃┣┫┗╋┫┗┓┣┫┏╋┳╋┫ ┃┣╋╋┛┃┣┻┓┗━┓┃┣┓┃┣┻┳┓┗━
┗┫┗┓┗╋╋┳╋━┻┫┏┻━┫ ┃┃┏┫┃┣┓┏┻┓┃ ┃┣┳┻┛┗┳┳━┻━╋┛┗╋┛┏╋╋━╋╋┛┃┣╋╋┫┏┫┗╋┫ ┃┗┓┗━┳╋┛┗┫┣┻┓┃┗━┳
┓┣┳┛┏╋┫┃┣━━┻┻┳┳╋┳┛┣┫┗╋┫┗┻┳┻┻┓┣╋┛ ┃┗┳┓┏┛┏━┛ ┣┫┗━┛┃ ┃┃┃┣╋┛┣┓┃┗┓┣━┫┏┳┛┣┓┏┫┃ ┣╋┳━╋
┫┗┛┏┛┗┫┣╋┳┳┳━┛┃┣┻┳┛┃┏┫┃ ┣┳┓┃┗┛┏━┳┳╋━┛┗╋━╋━━┓┗┛ ┣━╋┫┃┃┣━┫┣┻━╋╋━┫┣┻━┛┃┗╋┫┏┛┃┗┳┛
┫ ┗┓┏┫┣┻┻┛┗┳┳╋┫ ┗┳┻┻╋╋━━┻┫┗┻━┳┫┏╋╋╋━┳━┫ ┃┏━┻━━┳┳┓┣━┻┫┣╋┛ ┣╋━┳┫┗┓┃┣━┓ ┣┓┗┻┫┏┻━┻┓
┃ ┏━┛┃┃┃ ┗┻╋┫ ┏┛ ┣╋┳┓ ┣┳━┓┣╋┛┃┣┻┳┻┓┃┏┻┻━━┓┏╋┛┃┃┏━╋┫┣┓┏╋╋━┫┣┳┛┃┗┳╋┳┻╋━━┫┃ ┣
┣┳╋━┓┗┛┃ ┏━┫┃ ┣━┳┳┻┛┗┛ ┣╋┓┗┻┻┳┛┣┳┫┏┻╋┫ ┃┗┫ ┣╋╋━┫┗┫┗┻┫┗┳╋┫┗┓┗┳╋╋┛┏╋┓ ┣┫ ┣
┗╋┫ ┃ ┃ ┣┓┗╋┓┣┓┣┫ ┃┣┫┏┳━┛ ┣╋┛┃┏╋┛┏┳┓┏┛ ┣┳╋╋┛ ┃ ┣┓┏┫ ┣╋╋┓┗┳╋╋╋━┻╋┫┏┛┗━┳┓┗
┓┃┣┓┃ ┃ ┃┃┏╋╋╋╋┛┃ ┃┣┻┻╋┓┏┓┃┣┓┃┗┛┏╋┛┗┫┏━┻┛┃┗┓ ┃ ┃┗┻╋┳┻┻┫┃┏╋╋┫┣┳━╋┫┗━┳┳┛┗━
┗╋╋╋┛┏━┫ ┏━┳┻╋┻┫┃┃┣━┛ ┣┻┓┏╋╋┛┗┻┛┣┫ ┃┣┳┳┛┣┳┓┏┻┳┫ ┃ ┣┓ ┃┃ ┣╋┛┃┗┫┃┣┳╋╋┳┳┫┗┳┳┓
┳┫┗┫ ┃┏┻━╋━┛┏╋┓┃┃┗┛┏┓ ┣┳╋╋╋┛┏━━┓┃┃ ┃┃┃┃ ┣┫┣╋┓┃┃ ┃┏╋╋━┻┫┏┳┛┗┓┗┳╋┛┃┣┻┫┗┛┣━┻╋╋
┫┃┏┻┓┗┫ ┏┫ ┣┛┣┻┫ ┣┫ ┣┻┻┻┻┳┻┳┳┫┃┃┏┓┗┻┻┻━╋┛┣┫┗┛┃┏╋┫┃┣┓┏┛┗┛┏┳┻┓┗┫ ┃┗━╋━┓┃ ┃┗
┛┗┛┏┻┓┗━┛┗━┓┃ ┗┓┗┳┓┃┃┏━┓ ┃┏━┳┓┃ ┣╋┛┃┗┻╋┓┏┳┓┏┻┳╋┫┏┳┛┗╋┛┣╋┛┗┓┏┳┛┗┓┣━┻┳┫┏━┛┏┫┣┓┏┻┳
┏┫ ┃ ┗┛┏┳╋━╋┛┣┻╋┳┛ ┃┗┓┃┣╋┓┃┗┓┃ ┣┫┣┻┫┃┏╋┫┣╋╋┓┏╋━╋┫ ┃┣┫┏┓┃┃ ┃┃┗┓┏┻┛┃┣┫ ┃
┏┓┗┛┏┫ ┗┫┗┓┗┳╋┓┃┗━┳┓┗┳╋┫┣╋╋╋┳┫┣┳━┫┣╋━┻┛┗┫┃┃┗┻╋┛┣┳┫┣┓ ┃┃┃┃┗┻╋━┳┛┃ ┃┃┏┳┻┫┃ ┣
┣┻┳┓┗┫ ┃ ┃┏┻┛┗┫ ┃┣┳┫┣╋┛┗╋┫┣┫┗┻┓┗╋╋┳┳┳━╋┛┣┓ ┣┳╋╋┛┣┻┳┛┃┗┫ ┃┏┛┏╋━┛┗╋┛┏┫┃┏┻
┻┓┗┫┏┛┏┓ ┃┏┛┃ ┣━━┫┣┫┣┫┗┓┏╋╋╋┛ ┣━┻┛┃┗┛ ┃ ┃┗┳┛┣┫┃ ┃ ┣┳┫ ┣━┓┗┫┏╋╋┓┏┓┗━┛┗┻┻┳
┗━┻┫ ┃┃ ┏━╋╋━╋━┓┏┻━┳┛┃┃┃┗┓┗┛┃┣┫┏┳┓┣┳┳━┛┏━┳┛┏┫ ┃┏┛┣┫ ┣┳╋┛┗┳┻┳┻┳╋┛┃┣┫┃┗┳━┳┓┏┳┫
┓┏┓┏╋┓┗┻━┓┏━╋┳╋┻━╋┓┗┫ ┃┏╋┛┗┓┃ ┣┻┫┗╋┛┣╋╋┓┏┛ ┃ ┣┻┓┃┗┳┻┫ ┣╋╋━┓┃ ┣━╋┫ ┣┫┣┻━┛┏┫┣┫┗┫
┃┃┗┛┗┫ ┗┻━┻┻╋┓┏┫┃ ┃┏┓┃┗┻┓┏┛┣┳━┻┳╋━┫┏╋╋┛┗┫┏┓┃┏╋━┫┃ ┃ ┣━┫┃┃ ┃┣┓┃ ┃┗━╋┫┣┳━┳┛┗┻┛┏╋
┃┃ ┃ ┏┳━━┻┛┗╋╋┳┫┃┣╋┓┏┛┗━╋┛ ┣┻━┫┃┗┫ ┃┣╋╋┫┗┓┃┗┳┻┓┗┳┫┗┛┏╋┛┃┃ ┣┓ ┣┻┻┻━┻┳━┓┏┫┗
┛┣━┳┓┣┓ ┣┻┓┏┳┳━┛┃┗╋┫┗╋┫┗┳━┓┗┳┳┓┃ ┃┃ ┣━┳┛┃┗┻╋━┻┻┓┗┓┣┳┻┻━┓┃┗┓┃┃┏┛┣┳┛ ┃┏╋┫┃┏
┏╋┳╋┫┃┣┳━┳┻┓┣┫┃┃ ┣━┛┃ ┣┛┏┫ ┃┏┛┃┗╋━━┫┗┓┗━┛┏┛┏┳┻┓┏┓┃ ┣╋┫ ┃┃┏┻╋╋╋┓┃┣┓┏┓ ┣┫┣┫┣┫
┛┃┣┛┃┃┣┻┓┣━┛┗┫┃┣┳┓┃ ┗━┻┓┗┻━┫┣┳╋┓┗┓┏┻┓┗┳┓┏┛┏┫┗━╋┛┃┗┓┗┻╋┳┓┏┫┃┣━┻╋┫┣╋╋┫┣┻┳┳┓┗┻┫┗╋╋
┗╋┓┣┫┃ ┗┻┳━┳┫┗┛┃┗┫ ┏┓┃┏━━┛┗┫┣╋━┻┫┏┛ ┃┗╋━┻┻━┳┫┏┛┏┫┏┓┃┃┗┛┗┫┗┓ ┃┗┻╋╋┫┗┓┗╋╋┓ ┃┏╋╋
┏╋┫┗╋┫┏┳┓┣┳┫┃ ┣┓┣┓┏┓┃┃┃┃ ┗┫┣┳┳╋┛┏┓┗┓┃ ┣┻┻┳┻┛┣┫┣┻━━━┛┏┛┏╋┓┏┻╋┛ ┃ ┣╋╋━┛┣┻┫
┳╋┻┫┏┻┫┗┫┃┣╋┫┣━┳┻┛┣┫┗┛┣┫┗┫ ┏┛┣╋┛┣┓┃┣┓┗┫ ┃ ┗┳┓┣┛┣━━┳┳━┛┏┛┗┫┃ ┃ ┃┏┻┛┃ ┣┳┻
┃┃ ┣╋━┻┓┣┛┣┻┫┗┓┃ ┏┫┃ ┣╋┓┃┏━━┳┫ ┃┃ ┣┫┣╋┻┓┣┳━┳━┛ ┣┫┗━┻━━┛┗┓┏┛ ┃┃┏╋┓ ┣╋┓┏┛ ┣┻┳
┻┛┏┛┣┳┓┃┗━┻━┻┓┣┫┏┛┃┃ ┗┛┃┗╋┳┳┫┗┓┗╋┳╋┫┃┃ ┣┫┗┳┫ ┃┃ ┃┣┓ ┃┃┗┻┛┏┻╋╋┛┏┳┓┣┓┃
┓ ┣┓┃┃┣╋┳┓┏┓┏┻╋┛┗━┛┗┓ ┣┓┣┫┗┛ ┣━┻┻╋┫┣┻━┫┣┳┫┣━┓┏━┳╋╋━┓┏━┳┳━╋┫┗━┓┃┣┳┓┏┛┏╋╋┳┛┃┗╋┫┃