1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def H(s, k): if k == 0: yield s # only one n-bit string has Hamming distance 0 from s (itself) elif s: # k > 0 for s_k_minus_one_flipped in H(s[:-1], k - 1): yield s_k_minus_one_flipped + flip(s[-1]) # flip last bit for s_k_flipped in H(s[:-1], k): yield s_k_flipped + s[-1] # don't flip last bit def flip(bit): assert bit == "0" or bit == "1" return "0" if bit == "1" else "1" import sys s, k = sys.stdin.read().split() print(" ".join(H(s, int(k)))) |
ZGVmIEgocywgayk6CiAgICBpZiBrID09IDA6CiAgICAgICAgeWllbGQgcyAgIyBvbmx5IG9uZSBuLWJpdCBzdHJpbmcgaGFzIEhhbW1pbmcgZGlzdGFuY2UgMCBmcm9tIHMgKGl0c2VsZikKICAgIGVsaWYgczogIyBrID4gMAogICAgICAgIGZvciBzX2tfbWludXNfb25lX2ZsaXBwZWQgaW4gSChzWzotMV0sIGsgLSAxKToKICAgICAgICAgICAgeWllbGQgc19rX21pbnVzX29uZV9mbGlwcGVkICsgZmxpcChzWy0xXSkgICMgZmxpcCBsYXN0IGJpdAogICAgICAgIGZvciBzX2tfZmxpcHBlZCBpbiBIKHNbOi0xXSwgayk6CiAgICAgICAgICAgIHlpZWxkIHNfa19mbGlwcGVkICsgc1stMV0gICMgZG9uJ3QgZmxpcCBsYXN0IGJpdAoKCmRlZiBmbGlwKGJpdCk6CiAgICBhc3NlcnQgYml0ID09ICIwIiBvciBiaXQgPT0gIjEiCiAgICByZXR1cm4gIjAiIGlmIGJpdCA9PSAiMSIgZWxzZSAiMSIKCmltcG9ydCBzeXMKcywgayA9IHN5cy5zdGRpbi5yZWFkKCkuc3BsaXQoKQpwcmludCgiICIuam9pbihIKHMsIGludChrKSkpKQo=
-
upload with new input
-
result: Success time: 0.01s memory: 7732 kB returned value: 0
0101 2
0110 0000 1100 0011 1111 1001
-
result: Success time: 0.08s memory: 10840 kB returned value: 0
0000 2
0011 0101 1001 0110 1010 1100


