Math 拼图/谜语将1到8个数字的唯一组合放入7乘7矩阵中

Math 拼图/谜语将1到8个数字的唯一组合放入7乘7矩阵中,math,logic,puzzle,Math,Logic,Puzzle,我被困在下面的谜题里了。需要您的帮助来解决此问题: 8个人在一家酒店预订了7个房间,并决定只使用其中的4个房间,方法是让2个人进行独特的组合,这样既不会在7天内重复组合,也不会让一个人在一个房间里住两次。 例如,如果1号和2号、3号和4号、5号和6号以及7号和8号房间都在1号、2号、3号和4号房间,那么这些组合将永远不会在一起。他们必须做出不同的组合,并改变房间。 另一个例子是,我不能再和任何人一起住在1号房间,其他人也一样 有人能帮我解决这个7x7矩阵并帮我解决吗。。感谢你在这方面的努力 一种

我被困在下面的谜题里了。需要您的帮助来解决此问题: 8个人在一家酒店预订了7个房间,并决定只使用其中的4个房间,方法是让2个人进行独特的组合,这样既不会在7天内重复组合,也不会让一个人在一个房间里住两次。 例如,如果1号和2号、3号和4号、5号和6号以及7号和8号房间都在1号、2号、3号和4号房间,那么这些组合将永远不会在一起。他们必须做出不同的组合,并改变房间。 另一个例子是,我不能再和任何人一起住在1号房间,其他人也一样

有人能帮我解决这个7x7矩阵并帮我解决吗。。感谢你在这方面的努力

一种解决方案是:

18          36 27 45
35 17    46 28      
47 25 16          38
26    37 15    48   
      58 23 14    67
   68 24    57 13   
   34    78    56 12
事实上,这是两种解决方案,因为你可以阅读 行作为天数,列作为房间,反之亦然。 分配给人的数字的每一种排列,房间(列)的每一种排列,以及天(行)的每一种排列,都会导致另一种解决方案


下面是Python代码,基于。其主要思想是相同的:生成一个所有成对的人的列表,并开始将他们一次一个地放在黑板上。如果没有有效的位置,那么回溯并尝试其他方法。在下面的代码中,
任务列表
记录电路板状态,因此当到达死角时,下一个候选电路板状态将从
任务列表中弹出。诀窍是以一种有组织、有效的方式列举所有的可能性

有一些细微的区别:

  • 这段代码是迭代的,而不是递归的
  • solve
    函数尝试生成所有解决方案,而不是在找到一个解决方案后停止
  • 为简单起见,已删除初始化条件


顺便说一句,这个问题非常类似于和其他约束难题。你可以在那里寻找更多解决问题的方法

1&2       6&7       3&8       4&5  
5&6  1&3       4&8            2&7  
     5&7  1&4            2&8  3&6  
7&8       2&3  1&5       4&6       
     2&4  5&8  3&7  1&6            
3&4  6&8            2&5  1&7       
               2&6  4&7  3&5  1&8 

在第二天,并非所有人都是成对的(每天只有4个房间必须有人入住)。非常感谢您。很棒的东西:)安装Lua,将程序放入文件
program.Lua
中,然后运行
Lua程序。Lua
尝试为您的问题添加相应的标记。也许有人会帮忙。为另一个谜题创造新的问题。不要抹掉这个。
1&2       6&7       3&8       4&5  
5&6  1&3       4&8            2&7  
     5&7  1&4            2&8  3&6  
7&8       2&3  1&5       4&6       
     2&4  5&8  3&7  1&6            
3&4  6&8            2&5  1&7       
               2&6  4&7  3&5  1&8