Gerando dados de links do hipercubo

Eu estou tentando obter um método simples (um script ou um trecho de c ++, talvez) que gera um hipercubo links dados, ou seja, dado um hipercubo n-dimensional com vértices numerados como 1, ..., 2n, produz a saída:

1 3
1 5
2 3
...

Onde cada linha representa uma conexão entre dois vértices. (questão relacionada)

Mas em um contexto de alguma forma diferente. Espero que alguém já tenha feito isso. A entrada deve ser a dimensionalidade do hipercubo. Para lembrá-lo, os links existem entre dois nós, se e somente se o nó i.d. for diferente em exatamente uma posição de bit. Minha intenção era usar o operador XOR, e quando o resultado pode ser expresso como 2k para alguns k, as representações de bit diferem em uma única posição e eu escrevo um link. No entanto, não tenho certeza de como implementar isso (C ++ ou script).

questionAnswers(2)

yourAnswerToTheQuestion