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