Kelimeler Arasında Cazibe


11

Newton'un yerçekimi teorisi, iki nokta kütlesi arasındaki yerçekimi kuvvetinin

F = (Gm 1 m 2 ) / r 2

Nerede

  • G yerçekimi sabiti: 6.674 × 10 −11 N · (m / kg) 2
  • m 1 ilk nesnenin kütlesi
  • m 2 ikinci nesnenin kütlesi
  • r kütle merkezleri arasındaki uzaklıktır

Meydan okuma

İki kelime arasındaki çekişi simüle etmeniz gerekir. Her küçük harf, alfabedeki konumu ile verilen kütleye sahiptir. Büyük harfler küçük harflerinin iki katı kütleye sahiptir! Size birkaç boşlukla ayrılmış iki kelime ve pozitif saniye tamsayı s sayısı içeren bir dize verilecektir . Dizeden s saniye sonra nasıl görüneceğini verir .

Bilgi

  • Kelimeler soyut olduğu için farklı birimler ve sabitler kümeleri vardır
    • Kütle: WMU (Kelime Kütle Birimi) - 'a' harfinin kütlesine eşittir.
    • Mesafe: em , bir karakterin uzunluğu.
    • Kuvvet: K B (Word, Newton) = WMU · em / s 2
    • Yerçekimi Sabiti: G = 1 N w · (em / WMU) 2
  • İlk karakter x eksenindeki 0 konumuna karşılık gelir.
  • Tüm hesaplamalar mümkün olduğunca hassas bir şekilde yapılmalıdır, ancak sonunda en yakın em'e yuvarlanırsınız.
  • Kalkülüs kullanmanıza gerek yoktur, sadece her saniye F'yi yeniden hesaplamanız, yeni ivmeyi otomatik olarak hıza uygulamanız ve bir saniye sonra hızı konuma uygulamanız gerekir (örneğe bakın).
  • İki kelime birbiriyle çarpıştığında (gibi catdog ), daha fazla ilerlemezler.

Kütle Merkezi

Kütle merkezi bir kelimenin formülle bulunabilir:

resim açıklamasını buraya girin

Burada M kelimesinin toplam kütlesidir, m ı bir harf kütlesi ve r ı harfi konumudur.

Misal:

(Not: Bu örnek göstermese de, büyük harflerin küçük harfli karşılıklarının kütlesinin iki katı olduğunu unutmayın.)

Giriş:, cat dog2

  1. Öncelikle her kelimenin pozisyonları nelerdir? "kedi" 0 konumunda başlar ve "köpek" 9 konumunda başlar, yani

    • x c = 0 ve x d = 9
  2. Sonra, "kedi" nin kütle merkezini bulalım.

    • 24 WMU (3 + 1 + 20) kütleye sahiptir.
    • R c = 1/24 (3 * 0 + 1 * 1 + 20 * 2) = 41/24 = 1.70833 em
    • Şaşırtıcı olmayan bir şekilde kütle merkezi 't' harfine çok yakın.
  3. Şimdi "köpek" kütle merkezi alalım

    • R d = 1/26 (4 * 9 + 15 * 10 + 7 * 11) = 263/26 = 10,11538 em
    • Yani köpek için kütle merkezi 'o' harfine yakın, hafifçe 'g' ye yakın.
  4. Şimdi iki kelime arasındaki kuvveti hesaplayabiliriz.

    • F = 24 * 26 / (10.11538-1.70833) 2 = 8.82871 N w
  5. Şimdi bu gücü her iki kelimeye de uygulamalıyız ve hızlanmalarını almalıyız

    • a c = 8.82871 / 24 = .36786 em / s 2
    • a d = -8.82871 / 26 = -.33957 em / s 2
  6. Yukarıdaki kurallara uyarak, ivmeyi hıza uygularız, yani

    • v c = .36786 em / s
    • v d = -.33957 em / s
  7. Sonra hızı pozisyona uygularız, bu yüzden bir saniye sonra,

    • x c = .36786 em
    • x d = 9.33957 = 8.66043 em.
    • R, C = 1,70833 + 0,36786 = 2,07619 em
    • R, D = 10,11538-0,33957 = 9,77581 em
  8. Şimdi prosedürü yeni pozisyonlarla bir kez daha tekrarlıyoruz:

    • 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 + 0,80643 = 2,88262 em, R, D = 9,77581-0,74440 = 9,03141 em
  9. Böylece x = 1.17429'da "kedi" ve x = 7.91603'te "köpek" ile son buluruz.

    • Bunları en yakın tamsayıya yuvarlıyoruz, böylece "kedi" 1 konumuna ve "köpek" 8 konumuna gidiyor, yani çıktı cat dog

Çarpışmalarla Baş Etme

Yeni ivmenin hemen her saniyede hıza eklendiğini unutmayın. Bu nedenle, belirli bir zamanda iki kelime çarpışırsa, çarpışma noktasını bulmak için cebiri kullanın. Bu örneği ele alalım:

  • kelime 1 4 harf uzunluğundadır (|| w 1 || = 4)
  • kelime 2 4 harf uzunluğundadır (|| w 2 || = 4)
  • x 1 = 3, x 2 = 8
  • v 1 = 2, v 2 = -6

    Çöz 3 + (4-1) + 2t = 8 - 6t. t = .25s. Çarpışma konumu x col = 6.5'tir. Bu nedenle, çarpışma x = 6 ile x = 7 arasında olduğu gibi görünmelidir.

    ####@@@@ .

Bir çarpışmadan sonra kelimelerin konumları için açık formül

  • x 1 = kat (x sütun ) - || w 1 || +1
  • x 2 = kat (x sütun ) +1

@FryAmTheEggman "Bilgi" deki son madde işareti çarpışma hakkında konuşuyor. Tek adımda yapabilirsiniz, ancak belirlenen kurallara uyduğunuzdan emin olun.
geokavel

Kelimeler birbirinden geçebilir mi?
xnor

@xnor Hayır, yapmayacaklar. Çarpışmaları doğru bir şekilde ele alma konusunda bir bölüm ekledim.
geokavel

Burada yer alan fiziği anlamaya çalışıyorum. Yapılandırmayı düşünün xx a(kelimeler arasında bir boşluk xxve a). Newton fiziğinde, ahissedilen kuvvet x, iki em mesafeden daha yakın çekilmesinden ve diğerinin xüç em mesafeden çekilmesinden kaynaklanır, değil mi? Bu , ters kare yasası nedeniyle X, 2.5em mesafelerinden (yani kütle merkezinin) çeken tek bir nokta kütlesinin kuvveti ile aynı değildir xx...
Mathmandan

1
... sadece açıklığa kavuşturmak için, her bir KELEYE kütle merkezinde yoğunlaşmış bir kütle kütlesi gibi davranmam gerekiyordu, burada "kütle merkezi" derken, bunun yerine MEKTUP'larına nokta kitleleri muamelesi yaparsak kütle olur. Bu doğru mu?
mathmandan

Yanıtlar:


3

Python 3, 556 bayt

FryAmTheEggman ve Sherlock9'a bazı baytlar için teşekkürler

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)string ( w) ve time ( t) öğelerini alır ve sonucu döndürür. Diğer işlevler yardımcılardır.

Çevrimiçi deneyin ( *daha görünür olması için boşluk yerine s yazar)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.