fork download
  1. object Main {
  2. val prototypeUsed = Stream.continually(false).take(4).toArray
  3. def check(x: Long, len: Int): Boolean = {
  4. val used = prototypeUsed.clone()
  5. for (i <- 0 until (len, 2)) {
  6. used((x >>> i).toInt & 3) = true
  7. }
  8. !(used(0) && used(1) && used(2) && used(3))
  9. }
  10.  
  11. def main(args: Array[String]): Unit = {
  12. var codeLen = 4
  13. var code = 1.toLong << codeLen
  14. var codeMax = code * 2 - 1
  15. var inputLen = 2
  16. var input = 1.toLong << inputLen
  17. var inputMax = input * 2 - 1
  18. for (iteration <- 0 until 1234) {
  19. if (code > codeMax) {
  20. println("error")
  21. }
  22. if (check(input, inputLen)) {
  23. println(s"code: ${code.toBinaryString.padTo(15, ' ').tail} input: ${input.toBinaryString.tail}")
  24. code += 1
  25. }
  26. if (input == inputMax) {
  27. inputLen += 2
  28. input = 1.toLong << inputLen
  29. inputMax = input * 2 - 1
  30. code <<= 2
  31. codeLen += 2
  32. codeMax = codeMax * 4 + 3
  33. } else {
  34. input += 1
  35. }
  36. }
  37. }
  38. }
  39.  
Success #stdin #stdout 0.43s 382144KB
stdin
Standard input is empty
stdout
code: 0000           input: 00
code: 0001           input: 01
code: 0010           input: 10
code: 0011           input: 11
code: 010000         input: 0000
code: 010001         input: 0001
code: 010010         input: 0010
code: 010011         input: 0011
code: 010100         input: 0100
code: 010101         input: 0101
code: 010110         input: 0110
code: 010111         input: 0111
code: 011000         input: 1000
code: 011001         input: 1001
code: 011010         input: 1010
code: 011011         input: 1011
code: 011100         input: 1100
code: 011101         input: 1101
code: 011110         input: 1110
code: 011111         input: 1111
code: 10000000       input: 000000
code: 10000001       input: 000001
code: 10000010       input: 000010
code: 10000011       input: 000011
code: 10000100       input: 000100
code: 10000101       input: 000101
code: 10000110       input: 000110
code: 10000111       input: 000111
code: 10001000       input: 001000
code: 10001001       input: 001001
code: 10001010       input: 001010
code: 10001011       input: 001011
code: 10001100       input: 001100
code: 10001101       input: 001101
code: 10001110       input: 001110
code: 10001111       input: 001111
code: 10010000       input: 010000
code: 10010001       input: 010001
code: 10010010       input: 010010
code: 10010011       input: 010011
code: 10010100       input: 010100
code: 10010101       input: 010101
code: 10010110       input: 010110
code: 10010111       input: 010111
code: 10011000       input: 011000
code: 10011001       input: 011001
code: 10011010       input: 011010
code: 10011011       input: 011011
code: 10011100       input: 011100
code: 10011101       input: 011101
code: 10011110       input: 011110
code: 10011111       input: 011111
code: 10100000       input: 100000
code: 10100001       input: 100001
code: 10100010       input: 100010
code: 10100011       input: 100011
code: 10100100       input: 100100
code: 10100101       input: 100101
code: 10100110       input: 100110
code: 10100111       input: 100111
code: 10101000       input: 101000
code: 10101001       input: 101001
code: 10101010       input: 101010
code: 10101011       input: 101011
code: 10101100       input: 101100
code: 10101101       input: 101101
code: 10101110       input: 101110
code: 10101111       input: 101111
code: 10110000       input: 110000
code: 10110001       input: 110001
code: 10110010       input: 110010
code: 10110011       input: 110011
code: 10110100       input: 110100
code: 10110101       input: 110101
code: 10110110       input: 110110
code: 10110111       input: 110111
code: 10111000       input: 111000
code: 10111001       input: 111001
code: 10111010       input: 111010
code: 10111011       input: 111011
code: 10111100       input: 111100
code: 10111101       input: 111101
code: 10111110       input: 111110
code: 10111111       input: 111111
code: 1100000000     input: 00000000
code: 1100000001     input: 00000001
code: 1100000010     input: 00000010
code: 1100000011     input: 00000011
code: 1100000100     input: 00000100
code: 1100000101     input: 00000101
code: 1100000110     input: 00000110
code: 1100000111     input: 00000111
code: 1100001000     input: 00001000
code: 1100001001     input: 00001001
code: 1100001010     input: 00001010
code: 1100001011     input: 00001011
code: 1100001100     input: 00001100
code: 1100001101     input: 00001101
code: 1100001110     input: 00001110
code: 1100001111     input: 00001111
code: 1100010000     input: 00010000
code: 1100010001     input: 00010001
code: 1100010010     input: 00010010
code: 1100010011     input: 00010011
code: 1100010100     input: 00010100
code: 1100010101     input: 00010101
code: 1100010110     input: 00010110
code: 1100010111     input: 00010111
code: 1100011000     input: 00011000
code: 1100011001     input: 00011001
code: 1100011010     input: 00011010
code: 1100011011     input: 00011100
code: 1100011100     input: 00011101
code: 1100011101     input: 00011111
code: 1100011110     input: 00100000
code: 1100011111     input: 00100001
code: 1100100000     input: 00100010
code: 1100100001     input: 00100011
code: 1100100010     input: 00100100
code: 1100100011     input: 00100101
code: 1100100100     input: 00100110
code: 1100100101     input: 00101000
code: 1100100110     input: 00101001
code: 1100100111     input: 00101010
code: 1100101000     input: 00101011
code: 1100101001     input: 00101100
code: 1100101010     input: 00101110
code: 1100101011     input: 00101111
code: 1100101100     input: 00110000
code: 1100101101     input: 00110001
code: 1100101110     input: 00110010
code: 1100101111     input: 00110011
code: 1100110000     input: 00110100
code: 1100110001     input: 00110101
code: 1100110010     input: 00110111
code: 1100110011     input: 00111000
code: 1100110100     input: 00111010
code: 1100110101     input: 00111011
code: 1100110110     input: 00111100
code: 1100110111     input: 00111101
code: 1100111000     input: 00111110
code: 1100111001     input: 00111111
code: 1100111010     input: 01000000
code: 1100111011     input: 01000001
code: 1100111100     input: 01000010
code: 1100111101     input: 01000011
code: 1100111110     input: 01000100
code: 1100111111     input: 01000101
code: 1101000000     input: 01000110
code: 1101000001     input: 01000111
code: 1101000010     input: 01001000
code: 1101000011     input: 01001001
code: 1101000100     input: 01001010
code: 1101000101     input: 01001100
code: 1101000110     input: 01001101
code: 1101000111     input: 01001111
code: 1101001000     input: 01010000
code: 1101001001     input: 01010001
code: 1101001010     input: 01010010
code: 1101001011     input: 01010011
code: 1101001100     input: 01010100
code: 1101001101     input: 01010101
code: 1101001110     input: 01010110
code: 1101001111     input: 01010111
code: 1101010000     input: 01011000
code: 1101010001     input: 01011001
code: 1101010010     input: 01011010
code: 1101010011     input: 01011011
code: 1101010100     input: 01011100
code: 1101010101     input: 01011101
code: 1101010110     input: 01011110
code: 1101010111     input: 01011111
code: 1101011000     input: 01100000
code: 1101011001     input: 01100001
code: 1101011010     input: 01100010
code: 1101011011     input: 01100100
code: 1101011100     input: 01100101
code: 1101011101     input: 01100110
code: 1101011110     input: 01100111
code: 1101011111     input: 01101000
code: 1101100000     input: 01101001
code: 1101100001     input: 01101010
code: 1101100010     input: 01101011
code: 1101100011     input: 01101101
code: 1101100100     input: 01101110
code: 1101100101     input: 01101111
code: 1101100110     input: 01110000
code: 1101100111     input: 01110001
code: 1101101000     input: 01110011
code: 1101101001     input: 01110100
code: 1101101010     input: 01110101
code: 1101101011     input: 01110110
code: 1101101100     input: 01110111
code: 1101101101     input: 01111001
code: 1101101110     input: 01111010
code: 1101101111     input: 01111011
code: 1101110000     input: 01111100
code: 1101110001     input: 01111101
code: 1101110010     input: 01111110
code: 1101110011     input: 01111111
code: 1101110100     input: 10000000
code: 1101110101     input: 10000001
code: 1101110110     input: 10000010
code: 1101110111     input: 10000011
code: 1101111000     input: 10000100
code: 1101111001     input: 10000101
code: 1101111010     input: 10000110
code: 1101111011     input: 10001000
code: 1101111100     input: 10001001
code: 1101111101     input: 10001010
code: 1101111110     input: 10001011
code: 1101111111     input: 10001100
code: 1110000000     input: 10001110
code: 1110000001     input: 10001111
code: 1110000010     input: 10010000
code: 1110000011     input: 10010001
code: 1110000100     input: 10010010
code: 1110000101     input: 10010100
code: 1110000110     input: 10010101
code: 1110000111     input: 10010110
code: 1110001000     input: 10010111
code: 1110001001     input: 10011000
code: 1110001010     input: 10011001
code: 1110001011     input: 10011010
code: 1110001100     input: 10011011
code: 1110001101     input: 10011101
code: 1110001110     input: 10011110
code: 1110001111     input: 10011111
code: 1110010000     input: 10100000
code: 1110010001     input: 10100001
code: 1110010010     input: 10100010
code: 1110010011     input: 10100011
code: 1110010100     input: 10100100
code: 1110010101     input: 10100101
code: 1110010110     input: 10100110
code: 1110010111     input: 10100111
code: 1110011000     input: 10101000
code: 1110011001     input: 10101001
code: 1110011010     input: 10101010
code: 1110011011     input: 10101011
code: 1110011100     input: 10101100
code: 1110011101     input: 10101101
code: 1110011110     input: 10101110
code: 1110011111     input: 10101111
code: 1110100000     input: 10110000
code: 1110100001     input: 10110010
code: 1110100010     input: 10110011
code: 1110100011     input: 10110101
code: 1110100100     input: 10110110
code: 1110100101     input: 10110111
code: 1110100110     input: 10111000
code: 1110100111     input: 10111001
code: 1110101000     input: 10111010
code: 1110101001     input: 10111011
code: 1110101010     input: 10111100
code: 1110101011     input: 10111101
code: 1110101100     input: 10111110
code: 1110101101     input: 10111111
code: 1110101110     input: 11000000
code: 1110101111     input: 11000001
code: 1110110000     input: 11000010
code: 1110110001     input: 11000011
code: 1110110010     input: 11000100
code: 1110110011     input: 11000101
code: 1110110100     input: 11000111
code: 1110110101     input: 11001000
code: 1110110110     input: 11001010
code: 1110110111     input: 11001011
code: 1110111000     input: 11001100
code: 1110111001     input: 11001101
code: 1110111010     input: 11001110
code: 1110111011     input: 11001111
code: 1110111100     input: 11010000
code: 1110111101     input: 11010001
code: 1110111110     input: 11010011
code: 1110111111     input: 11010100
code: 1111000000     input: 11010101
code: 1111000001     input: 11010110
code: 1111000010     input: 11010111
code: 1111000011     input: 11011001
code: 1111000100     input: 11011010
code: 1111000101     input: 11011011
code: 1111000110     input: 11011100
code: 1111000111     input: 11011101
code: 1111001000     input: 11011110
code: 1111001001     input: 11011111
code: 1111001010     input: 11100000
code: 1111001011     input: 11100010
code: 1111001100     input: 11100011
code: 1111001101     input: 11100101
code: 1111001110     input: 11100110
code: 1111001111     input: 11100111
code: 1111010000     input: 11101000
code: 1111010001     input: 11101001
code: 1111010010     input: 11101010
code: 1111010011     input: 11101011
code: 1111010100     input: 11101100
code: 1111010101     input: 11101101
code: 1111010110     input: 11101110
code: 1111010111     input: 11101111
code: 1111011000     input: 11110000
code: 1111011001     input: 11110001
code: 1111011010     input: 11110010
code: 1111011011     input: 11110011
code: 1111011100     input: 11110100
code: 1111011101     input: 11110101
code: 1111011110     input: 11110110
code: 1111011111     input: 11110111
code: 1111100000     input: 11111000
code: 1111100001     input: 11111001
code: 1111100010     input: 11111010
code: 1111100011     input: 11111011
code: 1111100100     input: 11111100
code: 1111100101     input: 11111101
code: 1111100110     input: 11111110
code: 1111100111     input: 11111111
code: 111110100000   input: 0000000000
code: 111110100001   input: 0000000001
code: 111110100010   input: 0000000010
code: 111110100011   input: 0000000011
code: 111110100100   input: 0000000100
code: 111110100101   input: 0000000101
code: 111110100110   input: 0000000110
code: 111110100111   input: 0000000111
code: 111110101000   input: 0000001000
code: 111110101001   input: 0000001001
code: 111110101010   input: 0000001010
code: 111110101011   input: 0000001011
code: 111110101100   input: 0000001100
code: 111110101101   input: 0000001101
code: 111110101110   input: 0000001110
code: 111110101111   input: 0000001111
code: 111110110000   input: 0000010000
code: 111110110001   input: 0000010001
code: 111110110010   input: 0000010010
code: 111110110011   input: 0000010011
code: 111110110100   input: 0000010100
code: 111110110101   input: 0000010101
code: 111110110110   input: 0000010110
code: 111110110111   input: 0000010111
code: 111110111000   input: 0000011000
code: 111110111001   input: 0000011001
code: 111110111010   input: 0000011010
code: 111110111011   input: 0000011100
code: 111110111100   input: 0000011101
code: 111110111101   input: 0000011111
code: 111110111110   input: 0000100000
code: 111110111111   input: 0000100001
code: 111111000000   input: 0000100010
code: 111111000001   input: 0000100011
code: 111111000010   input: 0000100100
code: 111111000011   input: 0000100101
code: 111111000100   input: 0000100110
code: 111111000101   input: 0000101000
code: 111111000110   input: 0000101001
code: 111111000111   input: 0000101010
code: 111111001000   input: 0000101011
code: 111111001001   input: 0000101100
code: 111111001010   input: 0000101110
code: 111111001011   input: 0000101111
code: 111111001100   input: 0000110000
code: 111111001101   input: 0000110001
code: 111111001110   input: 0000110010
code: 111111001111   input: 0000110011
code: 111111010000   input: 0000110100
code: 111111010001   input: 0000110101
code: 111111010010   input: 0000110111
code: 111111010011   input: 0000111000
code: 111111010100   input: 0000111010
code: 111111010101   input: 0000111011
code: 111111010110   input: 0000111100
code: 111111010111   input: 0000111101
code: 111111011000   input: 0000111110
code: 111111011001   input: 0000111111
code: 111111011010   input: 0001000000
code: 111111011011   input: 0001000001
code: 111111011100   input: 0001000010
code: 111111011101   input: 0001000011
code: 111111011110   input: 0001000100
code: 111111011111   input: 0001000101
code: 111111100000   input: 0001000110
code: 111111100001   input: 0001000111
code: 111111100010   input: 0001001000
code: 111111100011   input: 0001001001
code: 111111100100   input: 0001001010
code: 111111100101   input: 0001001100
code: 111111100110   input: 0001001101
code: 111111100111   input: 0001001111
code: 111111101000   input: 0001010000
code: 111111101001   input: 0001010001
code: 111111101010   input: 0001010010
code: 111111101011   input: 0001010011
code: 111111101100   input: 0001010100
code: 111111101101   input: 0001010101
code: 111111101110   input: 0001010110
code: 111111101111   input: 0001010111
code: 111111110000   input: 0001011000
code: 111111110001   input: 0001011001
code: 111111110010   input: 0001011010
code: 111111110011   input: 0001011100
code: 111111110100   input: 0001011101
code: 111111110101   input: 0001011111
code: 111111110110   input: 0001100000
code: 111111110111   input: 0001100001
code: 111111111000   input: 0001100010
code: 111111111001   input: 0001100100
code: 111111111010   input: 0001100101
code: 111111111011   input: 0001100110
code: 111111111100   input: 0001101000
code: 111111111101   input: 0001101001
code: 111111111110   input: 0001101010
code: 111111111111   input: 0001110000
error