aboutsummaryrefslogtreecommitdiff
path: root/cpc/cpc2.rb
diff options
context:
space:
mode:
Diffstat (limited to 'cpc/cpc2.rb')
-rw-r--r--cpc/cpc2.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/cpc/cpc2.rb b/cpc/cpc2.rb
new file mode 100644
index 0000000..54d05c6
--- /dev/null
+++ b/cpc/cpc2.rb
@@ -0,0 +1,25 @@
+BITS = 8
+
+class Integer
+ def rotate_left(bits, width = bit_width)
+ bits %= width
+ (self << bits | self >> (width - bits)) & ((1 << width) - 1)
+ end
+end
+
+candidates = (0...(2**BITS)).to_a
+
+(2**BITS).times do |candidate|
+ next if candidates[candidate].nil?
+ (1...BITS).each do |bits|
+ candidates[candidate.rotate_left(bits, BITS)] = nil
+ end
+end
+
+codewords = candidates.compact
+
+p codewords
+puts codewords.length
+
+#=> [1, 3, 5, 7, 9, 11, 13, 15, 19, 21, 23, 25, 27, 29, 31, 37, 39, 43, 45, 47, 53, 55, 59, 61, 63, 87, 91, 95, 111, 127]
+#=> 30