+/{13∊⍎,⍉3↑¯5↑⍉2↓cal⍵}¨⎕,¨⍳12
Wypróbuj online!
⍳ 12 liczby całkowite od jednego do dwunastu
⎕ ,¨ wprowadź dane numeryczne i wstaw do każdej z dwunastu liczb
{… }¨ Na każdej z par zastosuj funkcję…
cal⍵ dostać kalendarz na ten rok-miesiąc
2 ↓ upuść dwa wiersze (podpis i dni)
⍉ transponuj (abyśmy mogli adresować kolumny zamiast wierszy)
¯5 ↑ weź ostatnie pięć (dwie cyfry dla każdego piątku i soboty plus jedna spacja)
3 ↑ weź dwie pierwsze (dwie cyfry w piątek plus spację)
⍉ transponuj (więc otrzymujemy kolejność czytania)
, strzępy
⍎ wykonać jako wyrażenie APL (podaje listę dat piątków)
13 ∊ czy trzynaście jest członkiem tej listy?
+/ zsumuj 12 booleanów
Korzystając z algorytmu @ Wrzlprmft , możemy to zrobić bez bibliotek dla 53 bajtów:
'21232211321211'⊃⍨14|2 3 ¯1+.×⊢,0≠.=400 100 4∘.|-∘0 1
-∘0 1 odejmij zero i jeden
400 100 4 ∘.| tabela reszty podziału dla dwóch lat (w poprzek) podzielona przez te liczby (w dół)
0 ≠.= wewnętrzny „produkt” z 0, ale używając ≠ i = zamiast +. ×
⊢ , wstaw niezmodyfikowany rok argumentu
2 3 ¯1 +.× produkt wewnętrzny z tymi numerami
14 | pozostała część podziału po podzieleniu przez czternaście
'21232211321211' ⌷⍨ indeks do tego ciągu