+/{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' ⌷⍨
индекс в эту строку