quintopia burada multinom katsayılarını hesaplamak için bir zorluk yayınladı (buradaki metnin bir kısmı oradan kopyalanıyor). Mod 2 katsayılarını hesaplamak için eğlenceli bir algoritma vardır.
Sayıların bir listesi verildiğinde, k 1 , k 2 , ..., k m , multinom katsayısının kalıntısını çıktılayın:
indirgenmiş mod 2. Bu verimli etmez algoritma aşağıdaki gibidir: her biri için k i , ikili genişleme hesaplamak k i olduğunu bulmak bir ij örneğin her birinin bir ij 1 ya da 0 olduğu ve
Herhangi bir j gibi var ise , bir RJ = a sj = 1 ≠ r s, o zaman ilgili mod 2 çokterimli katsayısı aksi mod 2 çokterimli katsayısı 1, 0 'dır.
Görev
M sayıları, k 1 , k 2 , ..., k m alan ve karşılık gelen multinom katsayısını veren veya döndüren bir program veya işlev yazın . Programınız isteğe bağlı olarak gerekirse m'yi ek bir argüman olarak alabilir .
Bu sayılar, örneğin çok gruplu katsayının gerçek hesaplaması kodlama işlemi tarafından değil, kodunuz tarafından gerçekleştirildiği sürece, listeler halinde gruplandırılmış veya tekli olarak kodlanmış veya başka herhangi bir şeyden hoşlanan herhangi bir biçimde girilebilir.
Multinom katsayısı tek ise çıktı herhangi bir doğruluk değeri ve multinom katsayısı eşitse herhangi bir falsey değeri olabilir.
Çok terimli katsayıyı hesaplamak için tasarlanmış yerleşik yapılara izin verilmez.
Standart boşluklar geçerlidir.
puanlama
Bu kod golf: Bayt en kısa çözüm kazanır.
Örnekler:
7, 16 ve 1000 multinom katsayısını bulmak için her birini ikiye katlıyoruz:
Hiçbir sütunda birden fazla 1 olmadığından, multinom katsayısı tuhaftır ve bu nedenle doğru bir şey çıkarmalıyız.
7, 16 ve 76 multinom katsayısını bulmak için her birini ikiye katlıyoruz:
Hem 76 hem de 7 ikili genleşmelerinde 4 olduğundan, multinom katsayısı eşittir ve bu nedenle bir falsey değeri üretiriz.
Test senaryoları:
Input: [2, 0, 1]
Output: Truthy
Input: [5,4,3,2,1]
Output: Falsey
Input: [1,2,4,8,16]
Output: Truthy
Input: [7,16,76]
Output: Falsey
Input: [7,16,1000]
Output: Truthy
Input: [545, 1044, 266, 2240]
Output: Truthy
Input: [1282, 2068, 137, 584]
Output: Falsey
Input: [274728976, 546308480, 67272744, 135004166, 16790592, 33636865]
Output: Truthy
Input: [134285315, 33849872, 553780288, 544928, 4202764, 345243648]
Output: Falsey
==
Eğer doğruluk ve falsey'in çevrilmesine izin verilirse, eşitlik için birçok dilin bir bayt kurtarabileceğini düşünüyorum.