ใช้ฟังก์ชัน Darboux อย่างยิ่ง


13

ตามที่วิกิพีเดียเป็นอย่างยิ่งฟังก์ชั่น Darboux คือ

หนึ่งที่ภาพของทุกช่วงเวลาที่เปิด (ไม่ว่างเปล่า) เป็นเส้นจริงทั้งหมด

ในคำอื่น ๆ ฟังก์ชั่นfเป็นอย่างยิ่งหากได้รับ Darboux 3 ตัวเลขจริงพล, และy ที่มันเป็นไปได้เสมอที่จะหาxระหว่าง (ที่แตกต่างกัน) และดังกล่าวว่าF ( x ) = Yabyxabf(x)=y

สำหรับวัตถุประสงค์ของการท้าทายนี้เราจะพิจารณาฟังก์ชั่น Darboux อย่างมีนัยสำคัญมากกว่าปันส่วนแทน

ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่:

  • ให้จำนวนตรรกยะเป็นเอาต์พุตสำหรับการป้อนจำนวนตรรกยะทุกตัว
  • ให้เอาต์พุตเดียวกันสำหรับอินพุตที่กำหนดและ
  • มีคุณสมบัติ Darboux อย่างยิ่ง

อินพุตและเอาต์พุตอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

  • ประเภทตัวเลขที่มีความแม่นยำโดยพลการหากภาษาของคุณมีหนึ่ง (หรือมีห้องสมุดสำหรับหนึ่งเช่น GMP)
  • การแสดงสตริงของจำนวนซึ่งคุณอาจสันนิษฐานว่าจะมีจุดทศนิยมและอย่างน้อยหนึ่งหลักในแต่ละด้าน มันอาจจะอยู่ในฐานb2ใด ๆแต่อินพุตและเอาต์พุตจะต้องอยู่ในฐานเดียวกัน คุณสามารถใช้ชุดอักขระสำหรับตัวเลขและจุดทศนิยม (แต่อีกครั้งพวกเขาจะต้องสอดคล้องกันระหว่างอินพุตและเอาต์พุต)

อินพุตจะมีการยกเลิกการขยายฐานbเสมอ สำหรับผลลัพธ์ซึ่งอาจมีการขยายฐานbหลักทฤษฏีไม่สิ้นสุดขึ้นอยู่กับการเลือกฟังก์ชันที่คุณเลือกคุณอาจเลือกข้อใดข้อหนึ่งต่อไปนี้:

  • ตัวเลขเอาท์พุทตลอดไป
  • ใช้จำนวนเต็มเพิ่มเติมเป็นอินพุตและเอาต์พุตอย่างน้อยจำนวนหลัก
  • เอาท์พุทอย่างน้อยตัวเลขให้มากที่สุดเท่าที่อยู่ในการป้อนข้อมูล (ซึ่งอาจมีศูนย์ต่อท้าย)

โปรดทราบว่าโดยธรรมชาติของความท้าทายนี้อนุสัญญาที่อาจใช้ตัวเลขแทนประเภทมาตรฐานมาตรฐานจะใช้ไม่ได้ยกเว้นการป้อนข้อมูลครั้งที่สองที่อธิบายไว้ในตัวเลือก 2 ด้านบน

เพื่อหลีกเลี่ยงช่องโหว่ที่มีฟังก์ชั่นที่มีการกำหนดเฉพาะใน rationals ไม่ใช่ยุติการส่งของคุณจะต้องสามารถที่จะผลิตออกโดยพลการใกล้เคียงกับค่าที่ต้องการในทางปฏิบัติ อย่างเป็นทางการได้รับการสรุปตัวเลข, B , Yและεจะต้องมีจำนวนจริงxที่สิ้นสุดในฐานของคุณได้รับการแต่งตั้งดังกล่าวว่า< x < Bและ| f ( x ) - y | < εabyεxa<x<b|f(x)y|<ε


เพื่อให้แนวคิดบางอย่างต่อไปนี้เป็นคำอธิบายของฟังก์ชัน Conway base 13 :

  • แปลงxเป็นฐาน 13 และลบจุดทศนิยม
  • หากผลเป็นรูปแบบ[x]A[y]C[z]13ที่[y]และ[z]ประกอบด้วยตัวเลขเพียง 0-9 แล้วf(x)=[y].[z] ]
  • หากผลเป็นรูปแบบ[x]B[y]C[z]13ที่[y]และ[z]ประกอบด้วยตัวเลขเพียง 0-9 แล้วf(x)=[y].[z] ]
  • มิฉะนั้นf(x)=0 0

x123.45613123.45713f(x)=7.89123.456A7C8913

การส่งของคุณอาจเป็นการใช้งานฟังก์ชั่นนี้ แต่ฉันสงสัยว่ามีฟังก์ชั่นอื่น ๆ ของ Darboux อย่างยิ่งที่สั้นกว่ามากที่จะใช้งาน :)


b

การเชื่อมโยง math.stackexchangeและคำถามเดิมเป็นตัวอย่างที่ดีของมัน
Giuseppe

xx

@ NickKennedy ขอบคุณฉันมองข้ามไป - ฉันได้แก้ไขคำถามเพื่อให้ความกระจ่าง
Doorknob

1
อืมฉันค่อนข้างแน่ใจว่าฉันสามารถกำหนดฟังก์ชั่นอย่างยิ่ง Darboux ที่เป็นค่าคงที่หรือตัวตนของอินพุตที่ยกเลิก ...
Christian Sievers

คำตอบ:


4

เรติน่า 0.8.2 , 43 50 ไบต์

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5
0(.)
$1

ลองออนไลน์! I / O เป็นสตริงไบนารี เข้ารหัสเลขฐานสองyใกล้กับเลขฐานสองอื่นaดังนี้:

  1. หากaไม่มี a .ให้เติมคำต่อท้าย
  2. หากaมีจำนวนหลักคี่หลัง., ต่อท้าย a 0.
  3. ถ้าyเป็นลบแล้วต่อท้ายอย่างอื่นต่อท้าย1110
  4. สำหรับแต่ละหลักในyคำต่อท้าย0ตามด้วยตัวเลขนั้น
  5. หากyมี.ต่อท้ายที่จุดที่มิฉะนั้นต่อท้ายมันหลังจากทั้งหมดตัวเลขใน11y

คำอธิบาย:

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5

จับคู่ตัวเลขเริ่มต้นที่จุดไบนารี หากตัวเลขเป็นการเข้ารหัสที่ถูกต้องให้ถอดรหัส1xคู่หลักสุดท้ายเป็น.และอีกวินาทีสุดท้ายเป็น-สัญญาณทางเลือก ตัวเลขก่อนหน้านั้นจะถูกละเว้น

0(.)
$1

นี่ควรปล่อยให้คู่ที่ขึ้นต้นด้วย0ดังนั้นลบ0s


-.บางครั้งฉันจะได้รับผลเช่น ผู้ที่บ่งบอกถึงศูนย์หรือว่าพวกเขาไม่ควรที่จะผลิต?
Erik the Outgolfer

@EriktheOutgolfer ฉันเดาว่าฉันสามารถเปลี่ยน*s เป็น+s ได้ซึ่งจะรับประกันอย่างน้อยหนึ่งหลักก่อนและหลัง.?
Neil

.ที่จริงผมไม่สามารถรับประกันได้หลักหลัง ฉันคิดว่าฉันยังคงสามารถรับประกันหลักก่อน.ว่า
Neil

เทอร์มินัลเพิ่มเติม 0 ในจำนวนที่.ไม่เปลี่ยนแปลงค่าของมัน แต่การเปลี่ยนแปลงดังกล่าวในอินพุตของฟังก์ชันของคุณจะเปลี่ยนเอาต์พุต บางทีคุณอาจได้รับอนุญาตให้แก้ไขโดยสมมติว่าอินพุตไม่มี 0 เช่นนั้น นอกจากนี้หากคุณจับคู่กลุ่มจากด้านขวาสิ่งนี้จะทำงานได้อย่างไรในทางทฤษฎีสำหรับข้อมูลจริงใด ๆ
Christian Sievers

@ChristianSievers (ขออภัยฉันไม่ได้สังเกตเห็นกล่องจดหมายของฉันก่อนหน้านี้) ฉันใช้คำตอบของฉันในรายละเอียดของฟังก์ชั่นฐาน 13 ในคำถามซึ่งดูเหมือนว่าจะต้องมีการยกเลิกแทน นอกจากนี้คุณพูดถูกฉันคิดว่าจะไม่มีเลขศูนย์ต่อท้าย (ดังนั้นจำนวนเต็มจะต้อง11ต่อท้ายเสมอในขั้นตอนที่ 2)
Neil

1

เยลลี่ 71 ไบต์

L7*©ṛḅ7WµṪ×⁵d®µ⁴‘¤Ð¡ḊṖ
DF7,8ṣṪ¥ƒṣ9ḅ7×ɗÇƭ€j”,
DFf7r9¤ṫ-Ḍ⁼Ɱ“OY‘TịØ+³çƲ0Ẹ?

ลองออนไลน์!

โปรแกรมเต็มรูปแบบที่รับหมายเลขฐาน 10 เป็นอินพุตและเอาต์พุตและใช้ฟังก์ชัน Conway base 13 แต่ใช้ฐาน 7 และ 10 มากกว่า 10 และ 13 ทั้งอินพุตและเอาต์พุตใช้เครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม ผลผลิตจะมีการนำหน้า - สำหรับจำนวนลบ


ตัวอย่างที่ลิงก์ TIO มีตัวเลข 9 หลักในอินพุตและเอาต์พุตดังนั้นฐาน 7 เหล่านี้เป็นอย่างไร
Christian Sievers

@ChristianSievers ขออภัยแปลว่า base 10 สำหรับอินพุตและเอาต์พุต ฐาน 7 ถูกใช้ในรหัส แต่ถูกแปลงกลับเป็นฐาน 10
Nick Kennedy

ไม่เป็นไรตอนนี้ฉันสามารถเปลี่ยนอินพุตและเข้าใจว่ามันมีผลต่อเอาต์พุตอย่างไร!
Christian Sievers

1

จอประสาทตา28 25 26 28 ไบต์

.*11|22
.
D^`\.
^3
-
4(.)
$1

ลองออนไลน์!

คำอธิบาย

.*11|22     Delete up to the last 11 and prepend a dot. Also change 22 to a dot.
.
D^`\.       Keep only the last dot, if there is one.
^3          Change 3 at the beginning to a minus sign.
-
4(.)        4 is the escape character.
$1

มันอาจส่งออกเป็นศูนย์นำหน้าและต่อท้ายและตัวเลขโดยไม่ต้องส่วนจำนวนเต็ม

มันสามารถเล่นกอล์ฟได้มากกว่า 2 หรือ 3 ไบต์ถ้าฉันสามารถ4+ใช้ได้ แต่ผมไม่แน่ใจว่าวิธีการกำหนดผลทางทฤษฎีถ้าใส่มีกระแสไม่มีที่สิ้นสุดของ4s


1
ฉันถูกสาปโดยสิ่งรูปตัว T โดยโพสต์คำตอบนี้
jimmy23013
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.