สำหรับความท้าทายนี้คุณต้องใช้ฟังก์ชั่นสองอย่างคือfและgบนจำนวนเต็มเช่นf ∘ gเป็นฟังก์ชันที่ลดลงอย่างเคร่งครัดในขณะที่g ∘ fเป็นฟังก์ชันที่เพิ่มขึ้นอย่างเข้มงวด ในคำอื่น ๆ ถ้าคุณใช้เวลาสองจำนวนเต็ม<bแล้วf (กรัม (ก))> f (กรัม (ข))และG (f (ก)) <กรัม (f (ข)) ไม่มีข้อ จำกัด เกี่ยวกับfและgแยกกันยกเว้นว่าแต่ละแผนที่ต้องมีจำนวนเต็มหนึ่งเป็นจำนวนเต็มอื่น
โปรดระบุคำอธิบายสั้น ๆ ของfและgและเหตุผลว่าทำไมพวกเขาถึงมีคุณสมบัติที่ต้องการ
เครดิต:ความท้าทายนี้ได้รับแรงบันดาลใจจากปัญหาในการแข่งขันคณิตศาสตร์ระดับปริญญาโทสาขาคณิตศาสตร์โรมาเนียปี 2011 (ซึ่งถามในสิ่งเดียวกัน แต่ตามจำนวนจริงแทนที่จะเป็นจำนวนเต็ม) หากคุณต้องการสปอยเลอร์จริงๆตอนนี้คุณรู้ว่าจะค้นหาอะไร
กฎระเบียบ
คำว่า "ฟังก์ชั่น" ในการท้าทายนี้ควรนำมาใช้ในเชิงคณิตศาสตร์ในการทำแผนที่จำนวนเต็มหนึ่งไปยังอีกจำนวนหนึ่ง: คุณอาจเขียนโปรแกรมสองโปรแกรมหรือสองฟังก์ชั่นและใช้วิธีการมาตรฐานใด ๆ ในการรับอินพุต คุณอาจใช้การแทนค่าสตริงของจำนวนเต็มแทนที่จะเป็นตัวแปรจำนวนเต็มจริง แต่ประเภทของอินพุตและเอาต์พุตควรเหมือนกันดังนั้นฟังก์ชันสามารถประกอบได้โดยไม่ต้องแปลงประเภทด้วยตนเองในระหว่างนั้น โปรดจำไว้ว่าในทางแนวคิดแล้วfและgยังคงต้องมีฟังก์ชั่นใน can't ดังนั้นคุณจึงไม่สามารถโกงได้โดยใช้การแทนค่าสตริงสองแบบที่มีหมายเลขเดียวกันหรืออะไรทำนองนั้น
โปรดจำไว้ว่าฟังก์ชั่นอาจไม่ได้ตั้งชื่อตราบเท่าที่ไม่จำเป็นต้องใช้ชื่อของตัวเองหรือฟังก์ชั่นอื่นที่คุณกำหนด หากคุณตั้งชื่อฟังก์ชั่นหนึ่งหรือทั้งสองอย่างคุณอาจสันนิษฐานว่ามันมีอยู่ในโปรแกรมเดียวกันเพื่อให้สามารถอ้างถึงฟังก์ชั่นอื่น ๆ (เช่น
def f(x): return -g(x)
ใน Python)ใช้กฎโอเวอร์โฟลว์จำนวนเต็มตามปกติ: วิธีแก้ปัญหาของคุณจะต้องสามารถทำงานกับจำนวนเต็มขนาดใหญ่ตามอำเภอใจในภาษาของคุณ (หรืออาจจะเป็นจริง) ในรูปแบบสมมุติซึ่งจำนวนเต็มทั้งหมดถูก จำกัด โดยค่าเริ่มต้น แต่หากโปรแกรมของคุณล้มเหลวในทางปฏิบัติ ไม่รองรับจำนวนเต็มที่มีขนาดใหญ่ซึ่งไม่ได้ทำให้โซลูชันไม่ถูกต้อง
คุณอาจใช้ภาษาการเขียนโปรแกรมใด ๆแต่โปรดทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามตามค่าเริ่มต้น
นี่คือโค้ดกอล์ฟดังนั้นคะแนนของคุณคือผลรวมของจำนวนไบต์ของทั้งฟังก์ชันและคำตอบที่สั้นที่สุดที่ชนะ