lambda S:`6793**164`[len(S)]
ลองออนไลน์!
น่าเสียดายที่ยังมีอีกหนึ่งไบต์ที่ยาวกว่าคำตอบที่ดีที่สุดของ Python 2 แม้ว่าจะไม่ได้ใช้enklact
-approach
ตอนนี้หนึ่งไบต์สั้นกว่าฉันตอบทุกๆ ชั่วโมง
มันทำงานยังไง?
หลังจากแรงเดรัจฉานฉันพบนิพจน์ที่ส่งผลให้ตัวเลขมีเพียงตัวเลขที่ถูกต้อง
ฉันสังเกตเห็นว่าการดูเพียงหนึ่งหลักที่เฉพาะเจาะจงของความยาวของสตริงที่กำหนดต้องมี 3 ไบต์ ( %10
) ดังนั้นฉันจึงเขียนโปรแกรม Python อื่น ( ลิงค์ Pastebin ) เพื่อค้นหาตัวเลขที่จับคู่ความยาวของสตริงอินพุตเข้ากับวันของสัปดาห์
เลขอาถรรพ์นี้: 6793**164 = 28714733692312345620167113260575862840674216760386883406587492336415023761043044176257567032312859371641211117824224067391750766520256112063756278010050204239810862527958109285342869876264808102743173594017101607983288521836082497514383184553444755034407847810524083812459571382103831904835921560285915349760536969265992879312869538914200854305957428078269094250817029486005437991820466986793657301214564264748923199288698278615871481529585816783654841131577178922192383679718074693535597651237893794976519274268917335387876260270630339777501802739852278932279775510324916969726203688466311848240746465178859847331248655567344801
(ตัวเลขที่มีทศนิยม 629 หลักที่น่าประทับใจ)
และอย่างที่คุณเห็นหมายเลขนี้ให้การจับคู่ที่จำเป็นจาก [28, 20, 13, 11, 4, 16, 17] ถึง [0, 1, 2, 3, 4, 5, 6] (สตริง Python คือ 0- จัดทำดัชนี):
2871 4 733692 3 1 2 34 5 6 20 1 6711326 0 5758628406742167603868834...
[4]^ [11]^ [13]^ [16]^ ^[17] ^[20] ^[28]
โปรแกรมของฉันยังพบการแสดงออกอื่น ๆ ที่ให้ผลผลิตตัวเลขที่มีคุณสมบัติที่จำเป็นแม้ว่าพวกเขาจะใช้เวลามากกว่าที่จะเป็นตัวแทนไบต์ (29 แทน 28): 19439**540
, 34052**726
, 39311**604
, 44873**182
, และ67930**164
78579**469
(สิ่งเหล่านี้คือนิพจน์ทั้งหมดที่พบโดยโปรแกรมที่เชื่อมโยงการดำเนินการใช้เวลาหลายชั่วโมง)
ฟังก์ชันทางเลือกที่ต้องการ 28 ไบต์: lambda S:`7954<<850`[len(S)]
ฟังก์ชันทางเลือกที่ต้องใช้ 29 ไบต์: lambda S:`9699<<2291`[len(S)]
ฟังก์ชันทางเลือกที่ต้องใช้ 30 ไบต์: lambda S:`853<<4390`[len(S)+9]
ฟังก์ชันทางเลือกที่ต้องใช้ 31 ไบต์:lambda S:`1052<<3330`[len(S)+8]
มันทำงานยังไง? ฉันจะสร้างหมายเลขนั้นได้อย่างไร (30 ไบต์ตอบ)
คำตอบที่ 30 lambda S:`3879**41`[len(S)%10]
ไบต์เป็น
มองไปที่ความยาวสายป้อนที่ผมสังเกตเห็นว่าทุกตัวเลขสุดท้ายในฐานสิบแตกต่างกันส่งผลให้ในรายการ[28, 20, 13, 11, 4, 16, 17]
ดังนั้นผมจึงต้องการเพียงการทำแผนที่จากรายการที่ไปยังรายการของทั้งเจ็ดวันของสัปดาห์ที่ [8, 0, 3, 1, 4, 6, 7]
[0, 1, 2, 3, 4, 5, 6]
วิธีแรกของฉันใช้สตริงเพื่อทำการแมปlambda S:"13*24*560"[len(S)%10]
แม้ว่าสตริงนั้นต้องใช้สิบเอ็ดไบต์ ( "13*24*560"
)
ดังนั้นฉันจึงเขียนโปรแกรม Python ( ลิงก์ Pastebin ) เพื่อทดสอบนิพจน์ทางคณิตศาสตร์ซึ่งส่งผลให้จำนวนเต็มกับตัวเลขที่ตรงกันโดยหวังว่าจะได้โปรแกรมเพิ่มเติม สิ่งที่ฉันเกิดขึ้นในตอนนี้คือ`3879**41`
(เพียงสิบไบต์เท่านั้นที่โปรแกรมของฉันค้นหาได้เท่านั้น)
แน่นอนว่ามีการแสดงออกที่เป็นไปได้มากมายที่คุณสามารถลองได้ ฉันเพิ่งโชคดีที่มีหนึ่งในรูปแบบที่a**b
มีผลเล็ก ๆ ที่เหมาะสมกับความต้องการของฉัน
สำหรับทุกคนที่อยากรู้อยากเห็น3879**41 = 1372495608710279938309112732193682350992788476725725221643007306215781514348937145528919415861895033279220952836384201346579163035594383625990271079 = 1.372... * 10**147
.
อีกฟังก์ชั่นที่ถูกต้องฉันพบในขณะที่ค้นหานิพจน์ทางเลือกที่น่าเสียดายต้อง 32 ไบต์: lambda S:`7**416`[len(S)%10+290]