ความเสมอภาคผันผวน


15

เรามีวัตถุที่สั่นระหว่างจุดสองจุดจำนวนเต็ม[l, r]ที่ความเร็วของหนึ่งหน่วยต่อหน่วยเวลาที่เริ่มต้นที่เกี่ยวกับl คุณอาจจะสมมติt=0 l < rตัวอย่างเช่นถ้าวัตถุแกว่งไป[3, 6]มาเราจะได้:

t=0 -> 3
t=1 -> 4
t=2 -> 5
t=3 -> 6
t=4 -> 5
t=6 -> 4
t=7 -> 3
t=8 -> 4

ฯลฯ แต่วัตถุสั่นอย่างต่อเนื่องดังนั้นเราจึงยังมีและt=0.5 -> 3.5t=3.7 -> 5.3

เมื่อให้วัตถุสองชนิดสั่นระหว่างกัน[l1, r1]ให้[l2, r2]กำหนดว่ามีเวลาใดtที่วัตถุทั้งสองแบ่งปันตำแหน่งเดียวกันหรือไม่ คุณใช้เวลาl1, r1, l2, r2ในรูปแบบที่สะดวกและส่งออกค่าจริง / เท็จ


อินพุตที่แท้จริง:

[[3, 6], [3, 6]]
[[3, 6], [4, 8]]
[[0, 2], [2, 3]]
[[0, 3], [2, 4]]
[[7, 9], [8, 9]]

อินพุตที่เป็นเท็จ:

[[0, 3], [3, 5]] 
[[0, 2], [2, 4]]
[[5, 8], [9, 10]]
[[6, 9], [1, 2]]
[[1, 3], [2, 6]]
code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

ดังนั้นมันเป็นคลื่นแหลมไม่ใช่ไซน์อยด์ใช่ไหม
HyperNeutrino

สำหรับการอ้างอิงความท้าทายนี้อ้างอิงถึงเกมนี้ที่คุณต้องตรวจสอบว่ามีความเป็นไปได้ที่จะกระโดดจากบล็อกหนึ่งไปยังอีก
user202729

@HyperNeutrino ถูกต้อง
orlp

ค่าเท็จสามารถ0และเป็นจริงจำนวนเต็มบวกใด ๆ หรือจะต้องสอดคล้องกัน ยิ่งกว่านั้นความเท็จอาจเป็นรายการว่างเปล่าและความจริงเป็นรายการที่ไม่ว่างเปล่าได้หรือไม่?
นาย Xcoder

3
การทดสอบที่ผิดพลาดที่ดีคือ[[1,3],[2,6]]สิ่งนี้บิดเบือนความเชื่อมั่นของ "ช่วงเวลาที่คาบเกี่ยวกันและไม่ได้มีความยาวเท่ากัน"
Misha Lavrov

คำตอบ:



6

Husk , 13 ไบต์

VEΣUẊeTmȯ…¢mD

[[l,r],[L,R]]จะเข้าในรูปแบบ ส่งคืน0อินสแตนซ์ที่เป็นเท็จและจำนวนเต็มบวกสำหรับอินสแตนซ์จริง ลองออนไลน์!

คำอธิบาย

แนวคิดหลักคือ

  1. การชนกันสามารถเกิดขึ้นได้ที่พิกัดจำนวนเต็มหรือครึ่งจำนวนเต็มเท่านั้น
  2. มันเพียงพอที่จะจำลองระบบจนกว่าจะเกิดการซ้ำซ้อนของสถานะที่ต่อเนื่องกันสองสถานะ

นี่คือรหัสอธิบายประกอบ

VEΣUẊeTmȯ…¢mD  Implicit input, say [[0,2],[2,3]]
       mȯ      For both pairs do:
           mD   Double each: [[0,4],[4,6]]
          ¢     Cycle: [[0,4,0,4..],[4,6,4,6..]]
         …      Rangify: [[0,1,2,3,4,3,2,1,0,1,2..],[4,5,6,5,4,5,6..]]
      T        Transpose: [[0,4],[1,5],[2,6],[3,5],[4,4],[3,5],[2,6]..
    Ẋe         Adjacent pairs: [[[0,4],[1,5]],[[1,5],[2,6]],[[2,6],[3,5]],[[3,5],[4,4]]..
   U           Prefix of unique elements: [[[0,4],[1,5]],[[1,5],[2,6]],[[2,6],[3,5]],[[3,5],[4,4]]..[[1,5],[0,4]]]
  Σ            Concatenate: [[0,4],[1,5],[1,5],[2,6],[2,6],[3,5],[3,5],[4,4]..[1,5],[0,4]]
VE             Index of first pair whose elements are equal (or 0 if not found): 8

คำตอบที่ลื่น ทำไมคุณถึงต้องเพิ่มเป็นสองเท่า? นั่นคือการเปลี่ยนคำสั่ง "การชนสามารถเกิดขึ้นได้ที่จำนวนเต็มหรือครึ่งจำนวนเต็ม" เป็น "การชนสามารถเกิดขึ้นได้ที่จำนวนเต็มเท่านั้น" เท่านั้น
โยนาห์

@ Jonah ใช่แน่นอน
Zgarb

2

JavaScript (ES6), 104 100 ไบต์

การใช้งานที่ไร้เดียงสาที่เพิ่งรันการจำลอง รับ(a, b, c, d)เป็น 4 ตัวแปรที่แตกต่าง

(a,b,c,d)=>(g=(X,Y)=>x==y|x+X==y&(y+=Y)==x||(x+=X)-a|y-c&&g(x>a&x<b?X:-X,y>c&y<d?Y:-Y))(1,1,x=a,y=c)

กรณีทดสอบ


2

ภาษา Wolfram (Mathematica) , 77 69 61 ไบต์

If[#>#3,#0[##3,#,#2],(z=GCD[x=#-#2,#3-#4])Mod[x/z,2]<=#2-#3]&

ฟังก์ชั่นการถ่ายบริสุทธิ์สี่ข้อโต้แย้งl1, r1, l2, r2เป็น input: เช่น[0,3,2,4]เมื่อช่วงเวลาที่มีและ[0,3][2,4]

ลองออนไลน์!

มันทำงานอย่างไร

จะได้รับจุดใน[a,b]ใกล้กับจุดใน[c,d]สมมติว่าa<c<b<dเราต้องการหลายคี่ของb-aภายในของหลายแม้แต่ของb-c d-cหากb-aมีปัจจัย2มากกว่าd-cเราสามารถทำให้สิ่งนี้เกิดขึ้นได้แน่นอน: จะมีเวลาที่จุดแรกอยู่ที่bและจุดที่สองอยู่ที่cและจากนั้นเราอยู่ในสภาพดี ถ้าไม่เช่นนั้นดีที่สุดที่เราสามารถทำได้คือ GCD ของและb-ad-c


1

JavaScript (ES6), 89 ไบต์

(a,b,c,d)=>[...Array((b-=a)*(d-=c)*4)].some((g=e=>i/e&2?e-i/2%e:i/2%e,i)=>a+g(b)==c+g(d))

ใช้l1,r1,l2,r2เป็นอาร์กิวเมนต์แยกต่างหาก คำอธิบาย: การจำลองนั้นรับประกันว่าจะทำซ้ำหลังจาก(r1-l1)*(r2-l2)*2หน่วยเวลา (หรือปัจจัยดังกล่าว) gคำนวณค่าชดเชยของวัตถุที่เหมาะสมหลังจากที่i/2หน่วยเวลาดังนั้นความต้องการที่จะช่วงถึงi(r1-l1)*(r2-l2)*4


1

05AB1E , 12 10 14 ไบต์

+4 ไบต์เพื่อจัดการช่วงลบ

ส่งคืน 0 ถ้าเป็นเท็จหรือจำนวนเต็มบวกเป็นอย่างอื่น

ใช้แนวคิดของ Zgarb ในการเพิ่มค่าสองเท่าเพื่อให้การตรวจจับตำแหน่งเดียวกันง่ายขึ้น

ขอบคุณ @ Zacharýที่ชี้ให้เห็นความผิดพลาดของฉัน

ÄZU\·εXиŸ}øüQO

ลองออนไลน์!

คำอธิบาย:

ÄZU\·εXиŸ}øüQO 
ÄZU\            Store in X the largest absolute number in the lists
    ·           Double lists ([3,6],[4,8] => [6,12],[8,16])
     ε   }      For each...
      X             Push X
       и            List-repeat that much times ([6,12]*12 => [6,12,6,12,6,...])
        Ÿ           Rangify ([6,12,6,...] => [6,7,8,9,10,11,12,11,...])
          ø     Zip lists ([6,7,8,...],[8,9,10,...] => [6,8],[7,9],[8,10],...)
           üQ   1 if both elements of a pair are equal, 0 otherwise
             O  Sum result list (=0 if the same position is never shared)
                Implicit output

ฉันไม่คิดว่าสิ่งนี้จะใช้ได้กับช่วงรายการขนาดใหญ่เพราะ 100 รายการดูเหมือนว่าจะไม่แน่นอน
Zacharý

@ Zacharýขอบคุณ! ฉันแก้ไขมันด้วยวิธีที่ไม่มีประสิทธิภาพมากเพราะตอนนี้รายการมีการทำซ้ำหลายครั้งเกินไป :-)
scottinet

อันที่จริงมันอาจไม่ทำงาน (ฉันจะไม่ใส่ใจที่จะคิดออกว่าเพราะมันใช้เวลานานเกินไปและโดยสุจริตรายการจะต้องมีช่วงเล็ก ๆ และช่วงใหญ่จากสิ่งที่ฉันคิดว่าจะไม่ทำงาน )
Zacharý

@ Zacharýมันควรทำงานกับจำนวนเต็มบวกจำนวนมากโดยพลการเนื่องจากกรณีที่เลวร้ายที่สุดจะเป็น[[0,n],[n-1, n]]และแม้แต่ในกรณีนั้นรายการที่สองจะถูกทำซ้ำครั้งที่เพียงพอ (และอื่น ๆ ) สำหรับคนแรกที่ไปถึงขอบเขตสูงสุด แต่ฉันลืมที่จะนำตัวเลขติดลบเข้าบัญชี: [[-100, 1], [0, 1]]ไม่ทำงาน แก้ไขด้วยราคา 4 ไบต์ :-(
scottinet

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