+/{13∊⍎,⍉3↑¯5↑⍉2↓cal⍵}¨⎕,¨⍳12
Попробуйте онлайн!
⍳ 12 целые числа от одного до двенадцати
⎕ ,¨ взять числовой ввод и предварять каждое из двенадцати чисел
{... }¨ на каждую из пар примените функцию ...
cal⍵ получить календарь на этот год-месяц
2 ↓ отбросить два ряда (заголовок и дни)
⍉ транспонировать (чтобы мы могли обращаться к столбцам вместо строк)
¯5 ↑ возьмите последние пять (две цифры для каждой пятницы и субботы плюс один пробел)
3 ↑ возьмите первые две (две цифры для пятницы плюс пробел)
⍉ транспонировать (так мы получаем порядок чтения)
, запутывать
⍎ выполнить как выражение APL (дает список дат пятницы)
13 ∊ тринадцать является членом этого списка?
+/ сумма 12 булевых
Используя алгоритм @ Wrzlprmft , мы можем сделать это без библиотек на 53 байта:
'21232211321211'⊃⍨14|2 3 ¯1+.×⊢,0≠.=400 100 4∘.|-∘0 1
-∘0 1 вычесть ноль и один
400 100 4 ∘.| таблица остатков деления за два года (поперек), деленная на эти числа (вниз)
0 ≠.= внутренний «продукт» с 0, но с использованием ≠ и = вместо +. ×
⊢ , добавить неизмененный аргумент год
2 3 ¯1 +.× внутренний продукт с этими числами
14 | остаток от деления на четырнадцать
'21232211321211' ⌷⍨ индекс в эту строку