1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
--------------------------------------------------------------------------------
-- comparaison.lua
-- Vérification de la concordance entre les résultats de la fonction basée sur
-- l'algorithme d'Oudin et une table.
--------------------------------------------------------------------------------
-- Date de Pâques de 1900 à 2199
-- Extrait de : http://www.merlyn.demon.co.uk/estr-tbl.txt
T = {
46,38,30,43,34,54,46,31,50,42,
27,47,38,23,43,35,54,39,31,51,
35,27,47,32,51,43,35,48,39,31,
51,36,27,47,32,52,43,28,48,40,
24,44,36,56,40,32,52,37,28,48,
40,25,44,36,49,41,32,52,37,29,
48,33,53,45,29,49,41,26,45,37,
29,42,33,53,45,30,49,41,26,46,
37,50,42,34,53,38,30,50,34,26,
46,31,50,42,34,47,38,30,43,35,
54,46,31,51,42,27,47,39,23,43,
35,55,39,31,51,36,27,47,32,52,
43,35,48,40,31,51,36,28,47,32,
52,44,28,48,40,25,44,36,56,41,
32,52,37,29,48,40,25,45,36,49,
41,33,52,37,29,49,33,53,45,30,
49,41,26,46,37,29,42,34,53,45,
30,50,41,26,46,38,50,42,34,54,
38,30,50,35,26,46,31,51,42,34,
47,39,30,43,35,55,46,31,51,43,
28,48,40,25,44,36,49,41,32,52,
37,29,48,33,53,45,29,49,41,26,
45,37,29,42,33,53,45,30,49,41,
26,46,37,50,42,34,53,38,30,50,
34,26,46,31,50,42,34,47,38,30,
43,35,54,46,31,51,42,27,47,39,
23,43,35,55,39,31,51,36,27,47,
32,52,43,35,48,40,31,51,36,28,
47,32,52,44,28,48,40,25,44,36,
56,41,32,52,37,29,48,40,25,45
};
function div(A, B)
return math.floor(A / B)
end
-- Date de Pâques par l'algorithme d'Oudin
function R(Y)
local G = Y % 19
local C = div(Y, 100)
local C4 = div(C, 4)
local E = div(8 * C + 13, 25)
local H = (19 * G + C - C4 - E + 15) % 30
local K = div(H, 28)
local P = div(29, H + 1)
local Q = div(21 - G, 11)
local I = (K * P * Q - 1) * K + H
local B = Y + div(Y, 4)
local J1 = B + I + 2 + C4 - C
local J2 = J1 - 7 * div(J1, 7)
return 28 + I - J2
end
N = 0
for Y = 1900, 2199 do
if R(Y) == T[Y - 1900 + 1] then -- Le tableau commence à un.
N = N + 1
end
end
print(N .. "/" .. 300)
-- Résultat : 300/300 |
Partager