Generowanie danych hipersześcianów

Próbuję uzyskać prostą metodę (skrypt lub fragment kodu w języku C ++), która generuje dane hipersześcianów, tj. Podając n-wymiarowy hipersześcian z wierzchołkami o numerach 1, ..., 2n, wytwarza wyjście:

1 3
1 5
2 3
...

Gdzie każdy wiersz reprezentuje połączenie między dwoma wierzchołkami. (powiązane pytanie)

Ale w nieco innym kontekście. Mam nadzieję, że ktoś już to zrobił. Wejście powinno być wymiarami hipersześcianu. Aby przypomnieć, istnieją powiązania między dwoma węzłami wtedy i tylko wtedy, gdy ich węzeł i.d. różni się dokładnie o jedną bitową pozycję. Moim zamiarem było użycie operatora XOR, a kiedy wynik można wyrazić jako 2k dla niektórych k reprezentacje bitów różnią się w jednej pozycji i piszę link. Jednak nie jestem pewien, jak to zaimplementować (C ++ lub skrypt).

questionAnswers(2)

yourAnswerToTheQuestion