โซ่สานสองเส้น


9

ในคำถามนี้ฉันนิยามฟังก์ชัน "chain" เป็นฟังก์ชันที่:

  • คือการเรียงลำดับซึ่งหมายความว่าทุกค่าจับคู่กับและถูกแมปด้วยค่าเดียว

  • และอนุญาตให้มีค่าใด ๆ ที่สามารถรับได้จากค่าอื่น ๆ โดยการใช้งานซ้ำ ๆ ของฟังก์ชั่นหรือการผกผันของมัน

มีฟังก์ชั่นมากมายที่ทำสิ่งนี้และบางฟังก์ชั่นนั้นค่อนข้างง่าย (ดูคำตอบของคำถามนั้น) ตอนนี้เรากำลังจะนิยามคลาสของฟังก์ชันที่แยกต่างหากที่ฉันจะเรียกว่า "interwoven" ฟังก์ชั่นที่สานต่อกันเป็นฟังก์ชั่นในชุดที่มีสองพาร์ทิชันอนันต์0และ1ดังกล่าวว่าฟังก์ชั่นนี้เป็นฟังก์ชั่นห่วงโซ่ทั้ง0และ1

ซึ่งหมายความว่าไม่มีค่าใน0สามารถแมปไปยังค่าใน1ภายใต้ฟังก์ชั่นหรือในทางกลับกัน

งาน

งานของคุณคือการเขียนรหัสที่ดำเนินการหรือกำหนดฟังก์ชั่น interwoven ในจำนวนเต็มบวก ฟังก์ชั่นของคุณสามารถเป็นอะไรก็ได้ตราบใดที่มันเป็นไปตามเกณฑ์สำหรับการผสมผสาน คุณควรรวมคำอธิบายว่าทำไมฟังก์ชั่นของคุณถูกเชื่อมโยงกันในคำตอบ

มันคือ คำถามดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยไบต์น้อยจะดีขึ้น


@ flawr ขอบคุณ! ฉันกำลังมองหาคำนั้น แต่ฉันไม่สามารถคิดได้
Ad Hoc Garf Hunter

ฉันคิดว่าสิ่งนี้ถือได้ว่าเป็นความท้าทายครั้งสุดท้ายที่คุณเชื่อมโยงเนื่องจากคุณต้องทำการเปลี่ยนรูปแบบเพิ่มเติมเช่นการแจกแจงเลขคู่และเลขคี่ทั้งหมดแยกกัน ฉันไม่คิดว่าคำตอบที่คุณได้รับที่นี่จะให้อะไรใหม่ ๆ
ข้อบกพร่อง

@ flawr คุณสามารถทำได้ แต่มันจะไม่เป็นวิธีที่ดีที่สุด ฉันได้ทำการทดลองเล็กน้อยกับสิ่งนี้และมีวิธีแปลกใหม่ในการทำหน้าที่ประเภทนี้
Ad Hoc Garf Hunter

คำตอบ:


2

งูหลาม46 42 37 ไบต์

บันทึก 5 ไบต์ด้วย @notjagan

lambda x:1<x<4and x*2%5or x-(x&2)*4+4

ลองออนไลน์!

วนซ้ำและเลขคี่ด้วยขั้นตอนที่ 4 และลิงก์ใน 2 และ 3:

=> 22 => 18 => 14 => 10 => 6 => 2 => 4 => 8 => 12 => 16 => 20 => 24 =>
=> 23 => 19 => 15 => 11 => 7 => 3 => 1 => 5 => 9 => 13 => 17 => 21 =>

1

JavaScript, 30 24 ไบต์

a=>(a+=a&2?-4:4)<0?a*a:a

ลำดับ:

  1. ... 19 15 11 7 3 1 5 9 13 17 21 ...
  2. ... 18 14 10 6 2 4 8 12 16 20 24 ...

ข้อมูลโค้ด

f=a=>(a+=a&2?-4:4)<0?a*a:a
console.log('23 19 15 11 7 3 1 5 9 13 17'.split` `.map(a=>f(a|0)).join` `);
console.log('22 18 14 10 6 2 4 8 12 16 20'.split` `.map(a=>f(a|0)).join` `);


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