+/{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' ⌷⍨ покажчик у цей рядок