Thu hút giữa các từ


11

Thuyết hấp dẫn của Newton nói rằng lực hấp dẫn giữa hai khối lượng điểm là

F = (Gm 1 m 2 ) / r 2

Ở đâu

  • G là hằng số hấp dẫn: 6,674 × 10 11 N · (m / kg) 2
  • m 1 là khối lượng của vật đầu tiên
  • m 2 là khối lượng của vật thứ hai
  • r là khoảng cách giữa tâm khối lượng của chúng

Thử thách

Bạn cần mô phỏng lực kéo giữa hai từ. Mỗi chữ cái viết thường có khối lượng được đưa ra bởi vị trí của nó trong bảng chữ cái. Chữ in hoa có khối lượng gấp đôi so với chữ thường của chúng! Bạn sẽ được cung cấp một chuỗi chứa hai từ cách nhau bởi một số khoảng trắng, cũng như số nguyên dương của giây, s . Xuất ra chuỗi sẽ trông như thế nào sau s giây.

Thông tin

  • Bởi vì các từ là trừu tượng, chúng có một tập hợp các đơn vị và hằng số khác nhau
    • Khối lượng: WMU (Đơn vị khối lượng từ) - bằng với khối lượng của chữ 'a'.
    • Khoảng cách: em , chiều dài của một ký tự.
    • Lực lượng: N W (Từ Newton) = WMU · em / s 2
    • Hằng số hấp dẫn: G = 1 N w · (em / WMU) 2
  • Ký tự đầu tiên tương ứng với vị trí 0 trên trục x.
  • Tất cả các tính toán nên được thực hiện với độ chính xác càng cao càng tốt, chỉ đến cuối bạn mới làm tròn đến em gần nhất.
  • Bạn không cần sử dụng phép tính, bạn chỉ cần tính toán lại F mỗi giây, tự động áp dụng gia tốc mới cho vận tốc và sau một giây áp dụng vận tốc cho vị trí (xem ví dụ).
  • Khi hai từ va chạm với nhau (như catdog ), chúng không di chuyển thêm nữa.

Trung tâm thánh lễ

Các trung tâm của khối lượng của một từ có thể được tìm thấy với công thức:

nhập mô tả hình ảnh ở đây

Trong đó M là tổng khối lượng của từ, m i là khối lượng của một chữ cái và r i là vị trí của chữ cái.

Thí dụ:

(Lưu ý: Mặc dù ví dụ này không hiển thị nó, hãy nhớ rằng chữ in hoa có khối lượng gấp đôi so với chữ viết thường của chúng.)

Đầu vào : cat dog, 2

  1. Đầu tiên các vị trí của mỗi từ là gì? "mèo" bắt đầu ở vị trí 0 và "chó" bắt đầu ở vị trí 9, vì vậy

    • x c = 0 và x d = 9
  2. Tiếp theo, hãy tìm trung tâm của "con mèo".

    • Nó có khối lượng 24 WMU (3 + 1 + 20).
    • R c = 1/24 (3 * 0 + 1 * 1 + 20 * 2) = 41/24 = 1.70833 em
    • Vì vậy, không có gì ngạc nhiên khi trung tâm của khối lượng rất gần với chữ 't'.
  3. Bây giờ chúng ta hãy lấy trung tâm của "con chó"

    • R d = 1/26 (4 * 9 + 15 * 10 + 7 * 11) = 263/26 = 10.11538 em
    • Vì vậy, trung tâm khối lượng của con chó gần với chữ 'o', hơi hướng về 'g'.
  4. Bây giờ chúng ta có thể tính toán lực giữa hai từ.

    • F = 24 * 26 / (10.11538-1.70833) 2 = 8.82871 N w
  5. Bây giờ chúng ta cần áp dụng lực này cho cả hai từ và tăng tốc của chúng

    • a c = 8.82871 / 24 = .36786 em / s 2
    • a d = -8.82871 / 26 = -.33957 em / s 2
  6. Theo các quy tắc trên, chúng tôi áp dụng gia tốc cho vận tốc, vì vậy

    • v c = .36786 em / s
    • v d = -.33957 em / s
  7. Sau đó, chúng tôi áp dụng vận tốc cho vị trí, vì vậy sau một giây,

    • x c = .36786 em
    • x d = 9 -.33957 = 8.66043 em.
    • R c = 1.70833 + .36786 = 2.07619 em
    • R d = 10.11538-.33957 = 9.77581 em
  8. Bây giờ chúng tôi lặp lại quy trình một lần nữa với các vị trí mới:

    • F = 24 * 26 / ((9.77581) - (2.07619)) 2 = 10.52558 N w
    • a c = 10,52558 / 24 = .43857 em / s 2 , a d = 10,52558 / 26 = -.40483 em / s 2
    • v c = .36786 + .43857 = .80643 em / s, v d = -.33957 - .40483 = -.74440 em / s
    • x c = .36786 + .80643 = 1.17429 em, x d = 8.66043 - .74440 = 7.91603 em
    • R c = 2.07619 + .80643 = 2.88262 em, R d = 9.77581 - .74440 = 9.03141 em
  9. Vì vậy, chúng tôi kết thúc với "con mèo" tại x = 1.17429 và "con chó" tại x = 7.91603.

    • Chúng ta làm tròn số đó đến số nguyên gần nhất để "con mèo" đi đến vị trí 1 và "con chó" đi đến vị trí 8, vì vậy đầu ra là cat dog

Xử lý va chạm

Hãy nhớ rằng gia tốc mới ngay lập tức được thêm vào vận tốc mỗi giây. Do đó, nếu hai từ va chạm vào thời điểm nhất định, hãy sử dụng đại số để tìm điểm va chạm. Lấy ví dụ này:

  • từ 1 dài 4 chữ cái (| | w 1 || = 4)
  • từ 2 dài 4 chữ cái (| | w 2 || = 4)
  • x 1 = 3, x 2 = 8
  • v 1 = 2, v 2 = -6

    Giải quyết 3 + (4-1) + 2t = 8 - 6t. t = 0,25s. Vị trí của vụ va chạm là x col = 6,5. Do đó, sự va chạm sẽ xuất hiện như xảy ra giữa x = 6 và x = 7, như vậy

    ####@@@@ .

Công thức rõ ràng cho vị trí của các từ sau khi va chạm là

  • x 1 = sàn (x col ) - | | w 1 || +1
  • x 2 = sàn (x col ) +1

@FryAmTheEggman Dấu đầu dòng cuối cùng trong "thông tin" nói về va chạm. Bạn có thể làm điều đó trong một bước nhưng đảm bảo tuân theo các quy tắc được đặt ra.
geokavel

Có thể các từ đi qua nhau?
xnor

@xnor Không, họ sẽ không. Tôi đã thêm một phần về xử lý va chạm đúng cách.
geokavel

Tôi đang cố gắng để hiểu các vật lý liên quan ở đây. Xem xét cấu hình xx a(một khoảng trắng giữa các từ xxa). Trong vật lý Newton, lực acảm thấy sẽ là do lực xkéo gần hơn từ khoảng cách của hai em, và lực kia xkéo từ khoảng cách ba em, đúng không? Điều đó không giống với lực của một khối lượng điểm duy nhất Xkéo từ một khoảng cách của 2.5em (nghĩa là tâm khối lượng xx), do luật bình phương nghịch đảo ...
mathmandan

1
... Vì vậy, để làm rõ, tôi phải đối xử với mỗi WORD như thể nó là một khối điểm với toàn bộ khối lượng tập trung tại tâm khối lượng của nó, trong đó "trung tâm khối lượng" của chúng tôi có nghĩa là "nơi trung tâm của nó thay vào đó, chúng ta sẽ coi khối lượng của nó là khối lượng điểm ". Điều này có đúng không?
mathmandan

Câu trả lời:


3

Python 3, 556 byte

Cảm ơn FryAmTheEggman và Sherlock9 cho một số byte

s,E,a,b,e=str.split,enumerate,lambda c:ord(c)%32*-~c.isupper(),lambda w:sum(map(a,w)),' '
def j(w):z,y=map(len,s(w));h=w.count(e);return sum(i*a(x)for i,x in E(w)if i<z)/b(w[:z]),sum(i*a(x)for i,x in E(w)if i>=y+h)/b(w[-y:])
def f(w):x,v=j(w);m,n=map(b,s(w));return m*n/(x-v)**2
def q(w):x,v=s(w);return f(w)/b(x),-f(w)/b(v)
def p(w,t):
 x,v=q(w);c,d=x,v;m,n=map(b,s(w));r,u=j(w);g,h=r,u;
 for i in range(t):r+=x;u+=v;f=m*n/(r-u)**2;c,d=f/m,f/n;x+=c;v+=d
 return int(r-g),int(1+h-u)
def g(w,t):x,y=p(w,t);u,v=s(w);return e*x+u+e*(len(w)-len(u+v)-x-y)+v+e*y

g(w,t)lấy chuỗi ( w) và thời gian ( t) và trả về kết quả. Các chức năng khác là người trợ giúp.

Dùng thử trực tuyến (in ra *thay vì dấu cách để dễ nhìn hơn)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.