ภารกิจคือการคำนวณOEIS A005434โดยเร็วที่สุด
พิจารณาสตริงไบนารีของความยาวS nจัดทำดัชนีจาก1เราสามารถตรวจสอบว่าS[1..i+1]ตรงกับS[n-i..n]ตรงทั้งหมดiในการสั่งซื้อจากไป0 n-1ตัวอย่างเช่น,
S = 01010
จะช่วยให้
[Y, N, Y, N, Y].
เพราะนี่คือ0การแข่งขัน0, 01ไม่ตรง10, 010การแข่งขัน010, 0101ไม่ตรงกับ1010 และในที่สุดก็01010ตรงกับตัวเอง
กำหนดf(n)ให้เป็นหมายเลขของอาร์เรย์ที่แตกต่างกันของYและNs หนึ่งได้รับเมื่อ iterating เหนือทุก2^nบิตสตริงที่แตกต่างกันไปได้ของความยาวSn
สังเกตจะสังเกตเห็นคำถามนี้เป็นตัวแปรที่เรียบง่ายของคำถามที่ผ่านมาของฉันอีก อย่างไรก็ตามฉันคาดหวังว่าเทคนิคที่ฉลาดสามารถทำให้สิ่งนี้เร็วและง่ายขึ้น
งาน
สำหรับการเพิ่มการnเริ่มต้นที่รหัสของคุณควรเอาท์พุท1n, f(n)
ตัวอย่างคำตอบ
สำหรับn = 1..24คำตอบที่ถูกต้องคือ:
1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194
เกณฑ์การให้คะแนน
รหัสของคุณควรวนซ้ำจากการn = 1ให้คำตอบnในแต่ละครั้ง ฉันจะใช้เวลาทั้งหมดในการฆ่ามันหลังจากสองนาที
คะแนนของคุณเป็นคะแนนสูงสุดที่nคุณจะได้รับในเวลานั้น
ในกรณีที่เสมอกันคำตอบแรกจะชนะ
รหัสของฉันจะถูกทดสอบที่ไหน
ฉันจะเรียกใช้รหัสของคุณภายใต้ Virtualbox ในVM Lub guest guest VM (บนโฮสต์ Windows 7 ของฉัน)
แล็ปท็อปของฉันมี RAM 8GB และ Intel i7 5600U@2.6 GHz (Broadwell) CPU ที่มี 2 คอร์และ 4 เธรด ชุดการเรียนการสอนประกอบด้วย SSE4.2, AVX, AVX2, FMA3 และ TSX
รายการนำหน้าต่อภาษา
- n = 599ในRust bu Anders Kaseorg
- n = 30ในCโดย Grimy รุ่นขนานได้รับถึง32เมื่อทำงานใน cygwin