Rasyonel ayrıştırma a = xyz (x + y + z)


21

Yaz fonksiyonlar x(a), y(a)ve z(a)böyle herhangi akılcı için o a tüm fonksiyonlar rasyonel sayıları dönmek ve x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a. Bir ≥ 0 olduğunu farz edebilirsiniz.

Programınız matematiksel olarak sağlam olduğu sürece, programınızda rasyonel türler veya işlemler kullanmanıza gerek yoktur. Örneğin, cevabınızda bir karekök kullanıyorsanız, argümanının her zaman rasyonel bir sayının karesi olduğunu göstermelisiniz.

Diliniz için işlevler kullanışsızsa ya da bulunmuyorsa, adlandırılmış üç işlev x, y, z ya da üç program yazabilirsiniz. Alternatif olarak, aynı zamanda x, y, z sayıları döndüren tek bir program / işlev yazabilirsiniz. Son olarak, eğer isterseniz, rasyonel sayıları bir çift pay / payda olarak girebilir / çıktısını alabilirsiniz. Puanınız, üç işlevin veya üç programın bayt cinsinden toplam boyutudur. En küçük puan kazanır.

Brüt zorlama yasaktır. Herhangi bir a = p / q için p, q ≤ 1000 programınızın 10 saniyenin altında çalışması gerekir.


Bir örnek (bu, ayrıştırmanızın bu sayıları vermesi gerektiği anlamına gelmez):

x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1

Hepsini bir araya getiren bir fonksiyon yazabilir miyiz?
Leaky Nun

Pay ve paydayı iki sayı olarak girebilir miyiz?
Leaky Nun

@LeakyNun Evet ve evet.
orlp

1
Herhangi biri için kanıtlanabilir ami?
17'de

2
Kanıt göstermek istemediğinizi farz ediyorum çünkü bir çözüm getirecek, ancak sözünüz gerçekten bir kanıt değil.
17'de

Yanıtlar:


10

CJam (59 bayt)

{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}

Bu, yığın üzerinde bir tamsayı veya iki katı alan ve üç çiftli bir dizi üreten anonim bir bloktur (fonksiyon). Bu, tüm negatif olmayan girdileri işlemek için sadece bir vaka ile beri o da üzerinde kıracak içten iki dava var 0.25ya 4. Hala girdiler için kırılıyor -12ve -1.3333333333333333fakat bu özellik ...

Online demo onu çalıştırır ve sonra değerleri ekler, dördünü yazdırır ve çarpar onları orijinal değerini (modül yuvarlama hatası) aldığını göstermek için.

Matematiksel arka plan

w=-x-y-zx+y+z+w=0-xyzw=birxyzw+bir=0

Elkies dört aileye bir dizi çözüm sunar. Euler:

x=6birst3(birt4-2s4)2(4birt4+s4)(2bir2t8+10birs4t4-s8)y=3s5(4birt4+s4)22t(birt4-2s4)(2bir2t8+10birs4t4-s8)z=2(2bir2t8+10birs4t4-s8)3s3t(4birt4+s4)w=-(2bir2t8+10birs4t4-s8)6s3t(birt4-2s4)

Euler ile ilgili biri:

x=(8s8+bir2)(8s8-88birs4-bir2)12s3(s4-bir)(8s8+20birs4-bir2)y=(8s8+bir2)(8s8-88birs4-bir2)12s3(8s4+bir)(8s8+20birs4-bir2)z=192birs5(s4-bir)2(8s4+bir)2(8s8+bir2)(8s8-88birs4-bir2)(8s8+20birs4-bir2)w=-3s(8s8+20birs4-bir2)34(s4-bir)(8s4+bir)(8s8+bir2)(8s8-88birs4-bir2)

Daha basit olanı:

x=(s4-4bir)22s3(s4+12bir)y=2bir(3s4+4bir)2s3(s4-4bir)(s4+12bir)z=s5+12birs2(3s4+4bir)w=-2s5(s4+12bir)(s4-4bir)(3s4+4bir)

Ve biri bununla ilgili:

x=s5(s4-3bir)32(s4+bir)(s12+12birs8-3bir2s4+2bir3)y=s12+12birs8-3bir2s4+2bir32s3(s4-3bir)(3s4-bir)z=2bir(s4+bir)2(3s4-bir)2s3(s4-3bir)(s12+12birs8-3bir2s4+2bir3)w=-2s(s12+12birs8-3bir2s4+2bir3)(s4-3bir)(s4+bir)(3s4-bir)

ps4-qbirpqbirbirs=1s=2


1

Aksiyom, 191 bayt

f(s,a)==(b:=s^4-4*a;c:=s^4+12*a;x:=3*s^4+4*a;[b^2/(2*c*s^3),2*a*x^2/(b*c*s^3),s*c/(2*x)])
g(a:FRAC INT):List FRAC INT==(s:=1;repeat(s^4=4*a or s^4=-12*a or 3*s^4=4*a=>(s:=s+1);break);f(s,a))

Peter Taylor'ın bu sayfadaki formül raporunun bazı kodlarla kodlanması, paydaların 0 olmamasını sağlar.

(7) -> y:=g(1)
          9   98 13
   (7)  [--,- --,--]
         26   39 14
                                              Type: List Fraction Integer
(8) -> y.1*y.2*y.3*(y.1+y.2+y.3)
   (8)  1
                                              Type: Fraction Integer
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.