พิจารณากระบวนการ:
การที่ไม่ใช่เชิงลบจำนวนเต็ม N. เช่น
27
แยกมันออกเป็นจำนวนเต็ม
N - floor(N/2)
และfloor(N/2)
(ครึ่ง 'ใหญ่กว่า' และ 'เล็กกว่า') แล้วเขียนตามลำดับนั้น
เช่นจะกลายเป็น27
14 13
การลบพื้นที่เพื่อเข้าร่วมจำนวนเต็มเป็นจำนวนเต็มใหม่ที่มีขนาดใหญ่กว่ามาก
เช่นจะกลายเป็น14 13
1413
ทำซ้ำขั้นตอนที่ 2 และ 3 ตามจำนวนครั้งที่ต้องการ
เช่น1413
→การ707 706
→การ707706
→การ353853 353853
→การ353853353853
→การ ...
ความท้าทายนี้เกี่ยวกับการทำสิ่งนี้ แต่ไม่เสมอไปในฐาน 10
ท้าทาย
เขียนโปรแกรมที่ใช้ตัวเลขสามตัวคือ B, N และ S:
B เป็นจำนวนเต็มตั้งแต่ 2 ถึง 10 ซึ่งเป็นฐานของ N (ไบนารีถึงทศนิยม)
N เป็นจำนวนเต็มแบบไม่ลบเพื่อใช้กระบวนการแยกเข้าร่วม เพื่อให้การป้อนข้อมูลของผู้ใช้ง่ายขึ้นจะได้รับเป็นสตริงในฐาน B ไม่ใช่จำนวนเต็ม
S เป็นจำนวนเต็มที่ไม่เป็นลบที่เป็นจำนวนครั้งที่จะทำซ้ำกระบวนการแยกเชื่อมต่อ
เอาต์พุตของโปรแกรมคือการแทนค่าสตริงของ N ในฐาน B หลังโพรซีเดอร์การแยกการรวม S
เมื่อ S คือ 0
ไม่ทำการแยกดังนั้นเอาต์พุตจะเป็น N เสมอ
เมื่อ N คือ0
แยกทั้งหมดมีรูปแบบ0 0
และลดไป0
อีกครั้งดังนั้นการส่งออกเป็นเสมอ0
อีกครั้งเพื่อการส่งออกอยู่เสมอ
ตัวอย่าง
B = 10, N = 27, S = 1
→1413
B = 10, N = 27, S = 2
→707706
B = 9, N = 27, S = 1
→1413
B = 9, N = 27, S = 2
→652651
B = anything, N = anything, S = 0
→N
B = anything, N = 0, S = anything
→0
ตารางสำหรับ B ทั้งหมดที่มี N = 1
สำหรับ S = 0
ถึง7
:
B S=0 S=1 S=2 S=3 S=4 S=5 S=6 S=7
2 1 10 11 101 1110 111111 10000011111 10000100001000001111
3 1 10 21 1110 202201 101101101100 1201201201212012012011 212100212102121002121212100212102121002120
4 1 10 22 1111 223222 111311111311 2232222232322322222322 11131111131311311111311113111113131131111131
5 1 10 32 1413 432431 213441213440 104220331443104220331442 2433241322130211014044424332413221302110140443
6 1 10 33 1514 535535 245550245545 122553122553122553122552 4125434125434125434125441254341254341254341254
7 1 10 43 2221 11111110 40404044040403 2020202202020220202022020201 10101011010101101010110101011010101101010110101011010100
8 1 10 44 2222 11111111 44444454444444 2222222622222222222226222222 11111113111111111111131111111111111311111111111113111111
9 1 10 54 2726 13581357 62851746285173 3142536758708231425367587081 15212633743485606571782880411521263374348560657178288040
10 1 10 55 2827 14141413 70707077070706 3535353853535335353538535353 17676769267676676767692676771767676926767667676769267676
ตารางสำหรับ B ทั้งหมดด้วยการสุ่ม N สำหรับ S = 0
ถึง3
:
B S=0 S=1 S=2 S=3
2 11011 11101101 11101111110110 11101111110111110111111011
3 2210 11021101 20102012010200 1001212100121210012121001211
4 1113 230223 112112112111 2302302302323023023022
5 101 2323 11341134 31430423143042
6 120 4040 20202020 1010101010101010
7 134 5252 24612461 1230456412304564
8 22 1111 445444 222622222622
9 4 22 1111 505505
10 92 4646 23232323 1161616211616161
รายละเอียด
- รับอินพุตผ่าน stdin หรือบรรทัดรับคำสั่ง ส่งออกไปยัง stdout
- แทนที่จะเป็นโปรแกรมคุณสามารถเขียนฟังก์ชั่นที่รับ B, N และ S และพิมพ์ผลลัพธ์ได้ตามปกติหรือคืนค่ามัน (เป็นสตริง)
- B, N และ S อาจถูกดำเนินการในลำดับใดก็ได้
- อินพุตทั้งหมดที่สร้างเอาต์พุตที่มีค่าทศนิยมต่ำกว่า 2 32ควรทำงาน
- N แสดงตามปกติ
0
คือหลักที่สำคัญที่สุดครั้งแรกและไม่มีศูนย์นำยกเว้นในศูนย์เองซึ่งเขียน (การส่งออก00
แทนที่จะ0
ไม่ถูกต้อง) - รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
ฉันขอให้คุณเพลิดเพลินไปกับความท้าทายของฉันลองพิจารณามอบBlock Building Bot Flocks! บางความรัก :)