Generando datos de hipercubos.

Estoy tratando de obtener un método simple (un script o un fragmento de código de C ++, tal vez) que genere datos de enlaces de hipercubos, es decir, dado un hipercubo de n dimensiones con vértices numerados como 1, ..., 2n, produce la salida:

1 3
1 5
2 3
...

Donde cada fila representa una conexión entre dos vértices. (pregunta relacionada)

Pero en un contexto de alguna manera diferente. Espero que alguien ya haya hecho esto. La entrada debe ser la dimensionalidad del hipercubo. Para recordarle, los enlaces existen entre dos nodos si y solo si sus nodos i.d difieren exactamente en la posición de un bit. Mi intención era usar el operador XOR, y cuando el resultado se puede expresar como 2k para algunos k, entonces las representaciones de bits difieren en una sola posición, y escribo un enlace. Sin embargo, no estoy seguro de cómo implementar esto (C ++ o script).

Respuestas a la pregunta(2)

Su respuesta a la pregunta