Quantas sexta-feira 13 em uma lista? [duplicado]

Dec 07 2020

Faça uma lista de todas as datas entre 1º de janeiro de 1920 e 1º de janeiro de 2020. Quantas sextas-feiras 13 há nessa lista?

Usando Wolfram 12.1

Respostas

9 kglr Dec 07 2020 at 05:07
Count[Friday][DayName /@ Tuples[{Range[1920, 2019], Range[12], {13}}]]
Array[Boole[Friday == DayName[{#, #2, 13}]] &, {100, 12}, {1920, 1}, Plus]
Total[Array[Boole[Friday == DayName[{1919 + #, #2, 13}]] &, {100, 12}], 2]
Count[Friday]@ Flatten@Table[DayName[{y, m, 13}], {y, 1920, 2019}, {m, 1, 12}]
(i = 0; Do[i += Boole[Friday == DayName[{y, m, 13}]], {y, 1920, 2019}, {m, 1,  12}]; i)
Count[Friday]@Flatten@Table[DayName[{1920, m, 13}], {m, 1, 12 100}]
Count[Friday][DayName /@ DateRange[{1920, 1, 13}, {2019, 12, 13}, "Month"]]
Counts[DayName /@ DateRange[{1920, 1, 13}, {2019, 12, 13}, "Month"]]@Friday
Count[_?(DayName@# == Friday &)]@DateRange[{1920, 1, 13}, {2019, 12, 13}, "Month"]

todos dão

173

Os primeiros 6 são semelhantes em velocidade. Eles são duas vezes mais rápidos que os últimos 3. RepeatedTimings são:

{0.11, 0.12, 0.11, 0.11, 0.11, 0.11, 0.262, 0.262, 0.265}

Em comparação, RepeatedTimingpara DateRange[start, end, Friday] // Select[blackFridayQ] // Lengthé 5,4.

8 UnchartedWorks Dec 07 2020 at 05:14
start = DateObject[{1920, 1, 1}];
end = DateObject[{2020, 1, 1}];
blackFridayQ[date_] := DateValue[date, "Day"] == 13
DateRange[start, end, Friday] // Select[blackFridayQ] // Length

173