¿Cuántos viernes 13 en una lista? [duplicar]

Dec 07 2020

Tome una lista de todas las fechas entre el 1 de enero de 1920 y el 1 de enero de 2020. ¿Cuántos viernes 13 hay en esa lista?

Usando Wolfram 12.1

Respuestas

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 dan

173

Los primeros 6 son similares en velocidad. Son más del doble de rápido que los últimos 3. RepeatedTimings son:

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

En comparación, RepeatedTimingpara DateRange[start, end, Friday] // Select[blackFridayQ] // Lengthes 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