ทำกฎลูกโซ่


15

เรามีความท้าทายมากมายเกี่ยวกับความแตกต่างและการรวม แต่ไม่มีใครแก้ปัญหาอัตราที่เกี่ยวข้อง ดังนั้นในการท้าทายนี้คุณจะได้อนุพันธ์มากมาย (พวกมันจะเป็นตัวเลขไม่ใช่ในรูปของตัวแปรใด ๆ ) และต้องหาอนุพันธ์อื่น

dx/dt = 4การป้อนข้อมูลที่จะมาในบรรทัดใหม่คั่นรายการของสมการในรูปแบบ อาจมีทศนิยมและเชิงลบ

อินพุตจะลงท้ายด้วยหนึ่งส่วนต่างคุณจะต้องค้นหา คุณสามารถสันนิษฐานได้ว่ามีข้อมูลเพียงพอที่จะค้นหาได้เสมอและอาจมีข้อมูลส่วนเกิน

คุณอาจต้องพิจารณาอนุพันธ์ของฟังก์ชันผกผันเช่นถ้าคุณมีdy/dx = 3คุณก็รู้dx/dy = 1/3เช่นกัน

dy/dt = 6การส่งออกของคุณจะอยู่ในรูปแบบ ช่องว่างทั้งหมด ฯลฯ จะต้องเหมือนกัน สมมติว่าตัวแปรทั้งหมดเป็นตัวอักษรหนึ่งตัวเสมอ (สามารถเป็นตัวพิมพ์ใหญ่และสามารถเป็นได้d)

นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

กรณีทดสอบ

dy/dx = 4
dx/dt = 5
dy/dt

answer: dy/dt = 20

dy/dx = -3
dt/dx = 3
dy/dt

answer: dy/dt = -1

dA/dt = 4
dA/dC = 2
dC/dr = 6.28
dr/dt

answer: dr/dt = 0.3184713375796178

dx/dy = 7
dx/dt = 0
dy/dt

answer: dy/dt = 0

เอาต์พุต "answer: dx / dt = .318" หรือเพียงแค่ "dx / dt = .318"
GamrCorps

@GamrCorps หลัง
Maltysen

2
เราสามารถใช้เครื่องมือแก้สมการในตัวได้หรือไม่?
Martin Ender

3
ฉันมีความรู้สึกคำตอบจะถือว่าd_/d_เป็นอัตราส่วนและทำให้ฉันเศร้า
Arcturus

@ MartinBüttnerใช่ แต่ไม่ใช่ builtin สมการเชิงอนุพันธ์
Maltysen

คำตอบ:


2

Python - 278 275

ยังไม่มีใครทำสิ่งนี้ดังนั้นฉันคิดว่าฉันจะส่งสิ่งนี้ถึงแม้ว่ามันจะไม่ได้เล่นกอล์ฟได้ดีนัก

a={}
e={}
k=input
i=k()
while"="in i:
 b,d=i.split(" =");b,c=b.split("/");d=float(d)
 if d:a[b]=a.get(b,[])+[[c,1/d]]
 a[c]=a.get(c,[])+[[b,d]];i=k()
i=i.split("/")
def f(x):
 for j in a.get(x,[]):
  if j[0] not in e:e[j[0]]=e[x]*j[1];f(j[0])
e[i[1]]=1
f(i[1])
print(e[i[0]])

นี่มัน ungolfed บางส่วน:

a={}
e={}
i=input()
while "=" in i:
 b,d=i.split(" =")
 b,c=b.split("/")
 d=float(d)
 if d:a[b]=a.get(b,[])+[[c,1/d]]
 a[c]=a.get(c,[])+[[b,d]]
 i=input()
i=i.split("/")
def f(x):
 for j in a.get(x,[]):
  if j[0] not in e:e[j[0]]=e[x]*j[1];f(j[0])
e[i[1]]=1
f(i[1])
print(e[i[0]])

สามไบต์ถูกบันทึกโดย Thomas Kwa

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