Akşam yemeğinde bir arkadaşımın evindeydim ve "Asal faktör vektör alanı" fikrini önerdiler. Bu boşlukta pozitif tamsayılar, bir vektör olarak ifade edilir, öyle ki vektördeki n. Eleman n'in en büyükünün sayıyı böldüğü sayıdır. (Not eden vektörler terimlerin. Sonsuz sayıda bu araçlarının) Örnek 20 olduğu
2 0 1 0 0 0 ...
Çünkü asal çarpanlara ayırma 2 * 2 * 5'tir .
Asal çarpanlara ayırma benzersiz olduğundan, her sayı bir vektöre karşılık gelir.
Girdilerini çift olarak ekleyerek vektörler ekleyebiliriz. Bu, ilişkilendirildikleri sayıları çarpmakla aynıdır. Ayrıca, ilişkili sayıyı bir güce yükseltmek gibi bir skaler çarpım da yapabiliriz.
Sorun, bu uzayın aslında bir vektör uzayı olmamasıdır çünkü tersi yoktur. Devam edersek, tersleri eklersek ve vektör uzayını kapatırsak, şimdi her pozitif rasyonel sayıyı bir vektör olarak ifade etmenin bir yolunu buluruz. Vektör eklemenin çarpımı temsil ettiği gerçeğini sürdürürsek. O zaman doğal sayının tersi, onun karşılığıdır.
Örneğin, 20 numara vektöre sahipti.
2 0 1 0 0 0 ...
Yani 1/20 kesri tersidir
-2 0 -1 0 0 0 ...
Biz böyle bir fraksiyon ile birleştirildi vektörü bulmak isterseniz 14/15 biz bulacağını 14
1 0 0 1 0 0 ...
ve 1/15
0 -1 -1 0 0 0 ...
ve vektör eklemesi yaparak bunları çoğaltın
1 -1 -1 1 0 0 ...
Şimdi bir vektör uzayımız olduğuna göre, onu bir iç ürün vererek bir iç ürün alanı oluşturmak için değiştirebiliriz. Bunu yapmak için, vektör uzaylarının klasik olarak verildiği iç çarpımı çalarız. İki vektörün iç çarpımı terimlerinin çiftli çarpımının toplamı olarak tanımlanır. Örneğin, 20 · 14/15 aşağıdaki gibi hesaplanır
20 = 2 0 1 0 0 0 ...
14/15 = 1 -1 -1 1 0 0 ...
2 0 -1 0 0 0 ... -> 1
Başka bir örnek olarak ürün 2/19 · 4/19
2/19 = 1 0 0 0 0 0 0 -1 0 0 0 ...
4/19 = 2 0 0 0 0 0 0 -1 0 0 0 ...
2 0 0 0 0 0 0 1 0 0 0 ... -> 3
Göreviniz bu nokta ürününü gerçekleştiren bir program uygulamak. Bir çift pozitif tamsayı (pay ve payda) veya rasyonel bir tip (yüzdürmelere izin verilmez, çünkü hassasiyet ve bölünebilirlikle ilgili sorunlara neden olurlar) aracılığıyla iki pozitif rasyonel sayı almalı ve ikisinin nokta ürününü temsil eden bir tamsayı çıkarmalıdır. girişleri.
Bu kod-golf'dür, bu nedenle cevaplar daha az byte'ın daha iyi olmasıyla byte olarak puanlanacaktır.
Test Kılıfları
4 · 4 = 4
8 · 8 = 9
10 · 10 = 2
12 · 12 = 5
4 · 1/4 = -4
20 · 14/15 = 1
2/19 · 4/19 = 3