บทนำ
สีเทารหัสเป็นทางเลือกแทน binary ซึ่งจำนวนจะเพิ่มขึ้นด้วยการสลับเพียงหนึ่งบิตมากกว่าตัวแปรจำนวนบิต นี่คือรหัสสีเทาบางส่วนพร้อมกับทศนิยมและเลขฐานสองของพวกเขา:
decimal | binary | gray
-------------------------
0 | 0 | 0
-------------------------
1 | 1 | 1
-------------------------
2 | 10 | 11
-------------------------
3 | 11 | 10
-------------------------
4 | 100 | 110
-------------------------
5 | 101 | 111
-------------------------
6 | 110 | 101
-------------------------
7 | 111 | 100
-------------------------
8 | 1000 | 1100
-------------------------
9 | 1001 | 1101
-------------------------
10 | 1010 | 1111
-------------------------
11 | 1011 | 1110
-------------------------
12 | 1100 | 1010
-------------------------
13 | 1101 | 1011
-------------------------
14 | 1110 | 1001
-------------------------
15 | 1111 | 1000
ลวดลายบิตของรหัสสีเทา
บางครั้งเรียกว่า "reflection binary" คุณสมบัติของการเปลี่ยนเพียงครั้งละหนึ่งบิตสามารถทำได้อย่างง่ายดายด้วยรูปแบบวงจรแบบวงกลมสำหรับแต่ละคอลัมน์เริ่มต้นจากบิตที่มีนัยสำคัญน้อยที่สุด:
bit 0: 0110011001100110011001100110011001100110011001100110011001100110
bit 1: 0011110000111100001111000011110000111100001111000011110000111100
bit 2: 0000111111110000000011111111000000001111111100000000111111110000
bit 3: 0000000011111111111111110000000000000000111111111111111100000000
bit 4: 0000000000000000111111111111111111111111111111110000000000000000
bit 5: 0000000000000000000000000000000011111111111111111111111111111111
... และต่อไป
วัตถุประสงค์
กำหนดสตริงอินพุตแบบไม่มีการบุของโค้ดสีเทาให้เพิ่มโค้ดสีเทาโดยการสลับอักขระเดี่ยวในลำดับหรือการเตรียม a 1
(เมื่อเพิ่มขึ้นเป็นกำลังถัดไปของ 2) จากนั้นเอาต์พุตผลลัพธ์เป็นโค้ดสีเทาแบบไม่มีเบาะ
คำเตือน
- ไม่ต้องกังวลกับการถ่าย
0
หรือสตริงว่างเปล่าเป็นอินพุต - อินพุตต่ำสุดจะเป็น
1
และไม่มีขอบเขตบนของความยาวสตริงนอกเหนือจากข้อ จำกัด หน่วยความจำที่กำหนดโดยสภาพแวดล้อม - โดยสตริงที่ไม่มีเบาะฉันหมายถึงจะไม่มีช่องว่างนำหน้าหรือต่อท้าย (นอกเหนือจากบรรทัดใหม่ที่เป็นทางเลือก) และไม่มีการนำหน้า
0
ในอินพุตหรือเอาต์พุต
รูปแบบ I / O
รูปแบบต่อไปนี้เป็นรูปแบบที่ได้รับการยอมรับสำหรับอินพุตและเอาต์พุต แต่สนับสนุนให้ใช้สตริงกับรูปแบบอื่น:
- "บิต" ที่สำคัญที่สุดก่อน
- อาร์เรย์อักขระหรือสตริงที่ไม่ใช่แบบเสริมของ ASCII
'1'
s และ'0'
s - อาร์เรย์จำนวนเต็มแบบไม่เพิ่มของ
1
s และ0
s - อาร์เรย์บูลีนที่ไม่มีเบาะ
ไม่อนุญาตอะไร:
- "บิต" ที่สำคัญน้อยที่สุดก่อน
- เลขฐานสิบ, เลขฐานสองหรือเลขจำนวนเต็ม
- โครงสร้างข้อมูลความยาวคงที่
- อาร์เรย์อักขระหรือสตริงของดัชนี ASCII ที่ไม่สามารถพิมพ์ได้
1
และ0
การทดสอบ
input -> output
1 -> 11
11 -> 10
111 -> 101
1011 -> 1001
1111 -> 1110
10111 -> 10110
101100 -> 100100
100000 -> 1100000
การทดสอบเพิ่มเติมสามารถเพิ่มได้ตามคำขอ
เกณฑ์
นี่คือรหัสกอล์ฟโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ! ความสัมพันธ์ทั้งหมดจะถูกทำลายโดยได้รับความนิยมก่อนหน้านี้; ช่องโหว่มาตรฐานใช้ คำตอบที่ส่งที่ดีที่สุดจะได้รับการยอมรับ 9 ตุลาคม 2016 และปรับปรุงเมื่อใดก็ตามที่คำตอบที่ดีกว่าจะได้รับ
0011
สำหรับ 8