<s> from sympy . combinatorics . graycode import ( GrayCode , bin_to_gray , <EOL> random_bitstring , get_subset_from_bitstring , graycode_subsets ) <EOL> def test_graycode ( ) : <EOL> g = GrayCode ( <NUM_LIT:2> ) <EOL> got = [ ] <EOL> for i in g . generate_gray ( ) : <EOL> if i . startswith ( '<STR_LIT:0>' ) : <EOL> g . skip ( ) <EOL> got . append ( i ) <EOL> assert got == '<STR_LIT>' . split ( ) <EOL> a = GrayCode ( <NUM_LIT:6> ) <EOL> assert a . current == '<STR_LIT:0>' * <NUM_LIT:6> <EOL> assert a . rank == <NUM_LIT:0> <EOL> assert len ( list ( a . generate_gray ( ) ) ) == <NUM_LIT:64> <EOL> codes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' ] <EOL> assert list ( a . generate_gray ( start = '<STR_LIT>' ) ) == codes <EOL> assert list ( <EOL> a . generate_gray ( rank = GrayCode ( <NUM_LIT:6> , start = '<STR_LIT>' ) . rank ) ) == codes <EOL> assert a . next ( ) . current == '<STR_LIT>' <EOL> assert a . next ( <NUM_LIT:2> ) . current == '<STR_LIT>' <EOL> assert a . next ( - <NUM_LIT:1> ) . current == '<STR_LIT>' <EOL> a = GrayCode ( <NUM_LIT:5> , start = '<STR_LIT>' ) <EOL> assert a . rank == <NUM_LIT> <EOL> a = GrayCode ( <NUM_LIT:6> , start = '<STR_LIT>' ) <EOL> assert a . rank == <NUM_LIT> <EOL> assert GrayCode ( <NUM_LIT:6> , rank = <NUM_LIT:4> ) . current == '<STR_LIT>' <EOL> assert GrayCode ( <NUM_LIT:6> , rank = <NUM_LIT:4> ) . rank == <NUM_LIT:4> <EOL> assert [ GrayCode ( <NUM_LIT:4> , start = s ) . rank for s in <EOL> GrayCode ( <NUM_LIT:4> ) . generate_gray ( ) ] == [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> , <EOL> <NUM_LIT:9> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> ] <EOL> a = GrayCode ( <NUM_LIT:15> , rank = <NUM_LIT:15> ) <EOL> assert a . current == '<STR_LIT>' <EOL> assert bin_to_gray ( '<STR_LIT>' ) == '<STR_LIT:100>' <EOL> a = random_bitstring ( <NUM_LIT:5> ) <EOL> assert type ( a ) is str <EOL> assert len ( a ) == <NUM_LIT:5> <EOL> assert all ( i in [ '<STR_LIT:0>' , '<STR_LIT:1>' ] for i in a ) <EOL> assert get_subset_from_bitstring ( <EOL> [ '<STR_LIT:a>' , '<STR_LIT:b>' , '<STR_LIT:c>' , '<STR_LIT:d>' ] , '<STR_LIT>' ) == [ '<STR_LIT:c>' , '<STR_LIT:d>' ] <EOL> assert get_subset_from_bitstring ( '<STR_LIT>' , '<STR_LIT>' ) == [ '<STR_LIT:a>' , '<STR_LIT:d>' ] <EOL> assert list ( graycode_subsets ( [ '<STR_LIT:a>' , '<STR_LIT:b>' , '<STR_LIT:c>' ] ) ) == [ [ ] , [ '<STR_LIT:c>' ] , [ '<STR_LIT:b>' , '<STR_LIT:c>' ] , [ '<STR_LIT:b>' ] , [ '<STR_LIT:a>' , '<STR_LIT:b>' ] , [ '<STR_LIT:a>' , '<STR_LIT:b>' , '<STR_LIT:c>' ] , <EOL> [ '<STR_LIT:a>' , '<STR_LIT:c>' ] , [ '<STR_LIT:a>' ] ] </s>
