Thứ tư


22

Thứ tư

Nhiệm vụ của bạn là đếm số thứ Tư rơi vào một ngày chính trong tháng trong một năm cụ thể. Ví dụ, 7-13-16là một thứ tư chính. Để thống nhất, sử dụng lịch Gregorian cho tất cả các ngày.

Đầu vào

Đầu vào cho chương trình / chức năng của bạn sẽ là một năm (ví dụ 2016) và linh hoạt. Năm sẽ là một số nguyên trong khoảng từ 1912 đến 2233 .

Đầu ra

Đầu ra cũng linh hoạt và phải là số thứ tư chính (ví dụ 18).

Chấm điểm

Đây là để mã ngắn nhất tính theo byte thắng!

Các trường hợp thử nghiệm

đầu vào -> đầu ra
--------------------
1912 -> 19
1914 -> 16
1984 -> 17
1996 -> 19
2063 -> 19
2150 -> 16
2199 - > 18
2233 -> 18

Câu trả lời:


7

MATL , 38 36 34 byte

FT+"@llI$YO]q&:t8XO!s9\~)9#1$ZOZps

Hãy thử trực tuyến! Hoặc xác minh tất cả các trường hợp thử nghiệm (mất vài giây).

Giải trình

FT+     % Input year implicitly. Add [0 1] element-wise. Gives array with input year
        % and next year
"       % For each of those two years
  @     %   Push year
  ll    %   Push 1 twice. This indicates January 1.
  I$YO  %   Convert year, month, day to serial date number
]       % End for each. We now have the serial date number for January 1 of the input
        % year and that of the following year
q       % Subtract 1 to the latter, to yield December 31 of the input year
&:      % Inclusive range between those two numbers. This gives an array of serial date
        % numbers for the whole input year
t       % Push another copy of that array
8XO     % Convert to date string with format 8. This gives weekday as "Mon", "Tue" etc.
        % The result is a 3-column 2D char array, where each row is a day
!s      % Transpose, sum of each column. 'Wed' gives 288 (sum of ASCII codes)
9\~     % 288 gives 0 modulo 9, and is the only weekday to do so. So we compute modulo 9
        % and negate. This gives true for Wednesdays, false for the rest
)       % Apply as logical index into the array of serial date numbers
9#1$ZO  % Array of month numbers corresponding to those serial date numbers
Zp      % Array that contains true for prime numbers, false for the rest
s       % Sum of array. Display implicitly

Tôi tin rằng MATL không thể bị đánh bại trong các thử thách dựa trên ngày tháng. Chúng ta nên tạo DATL được tối ưu hóa hơn nữa để xử lý các thách thức dựa trên ngày.
Suever

@Suever Haha, tên hay
Luis Mendo

20

Python 2, 95 93 68 67 byte

lambda y:0x10ea2c8dbb06c5619/5**((y+((y-22)/99-y/2002)*16)%28)%5+16

Cảm ơn @Josay vì đã chơi golf 1 byte!

Kiểm tra nó trên Ideone .


3
Bạn có thể lưu 1 char với 0x10ea2c8dbb06c5619thay vì 19501370182350951961.
SylvainD

Tôi hiểu ý tưởng về big_constant//5**long_expressionnhưng làm thế nào bạn đến với Trái đất và biểu hiện đó? Thật điên rồ: D
Sherlock9

2
Hằng số là một bảng tra cứu đơn giản sử dụng 5 chữ số cơ bản, nhưng được chuyển đổi thành cơ sở 10, để các chữ số được trích xuất bằng số thay vì sử dụng chỉ mục chuỗi. Các biểu hiện trông giống như một lịch vạn niên đối với tôi. (Vấn đề sẽ trở nên quá dễ dàng nếu nó bị giới hạn trong các năm từ 1901 đến 2099, vì các câu trả lời lặp lại sau mỗi 28 năm trong khoảng thời gian đó, vì vậy đây sẽ chỉ là một trường hợp lấy năm mod 28 và tìm kiếm nó trong bảng. )
Neil

13

Brain-Flak , 6588 , 2310 , 2308 , 2290 byte

Trước tiên, tôi đã không viết gần 100% chương trình này, điều này có thể được chứng minh bằng quy mô khổng lồ của chương trình. Hầu hết các mã này được viết bởi thuật toán chơi gôn Brain-Flak của riêng tôi . Cùng với một kịch bản python bổ sung tôi đã viết để nhắc nó đi đúng hướng.

Hãy thử trực tuyến!

({}<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()()())){}{}){})[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])()())[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])())()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())>[(((((((((()()()()())){}{}){}){}){}){}[()]){}){}){}]){({}[()]<{}>)}{}({}<{{}}>)

Mặc dù chương trình này khá dài đối với môn đánh gôn, nhưng nó thực sự ngắn cho Brain-Flak. Hiện tại kỷ lục thế giới về phân chia số nguyên là hơn 1000 byte.

Giải trình

Thuật toán khá đơn giản. Bởi vì có một số năm hạn chế (321), nó chỉ đơn giản đẩy các câu trả lời theo thứ tự ngược lại dưới đầu vào và sử dụng thuật toán tra cứu để tìm câu trả lời đúng. Mặc dù mã hóa tất cả 321 khả năng có vẻ không hiệu quả với một nhiệm vụ phức tạp như nhiệm vụ này và một ngôn ngữ bí truyền như não bộ, nó rất có thể là giải pháp tốt nhất. (Tôi dự định tìm hiểu trong tuần tới).

Vì hầu hết trong số 321 con số trung bình khoảng 18 và chúng khác nhau rất ít từ năm này sang năm khác thay vì đẩy tất cả các số riêng lẻ, tôi đẩy năm đầu tiên (2233) một cách bình thường và sau đó chỉ nhân đôi và thay đổi giá trị một chút cho mỗi năm sau. Cách này thay vì trả tiền để đẩy ~ 18 trong tất cả 321 năm, tôi chỉ trả tiền để đẩy ~ 2 cho mỗi năm.

Khi tất cả các câu trả lời đã được đẩy, nó trừ 1912 từ đầu vào ({}[(((((((((()()()()())){}{}){}){}){}){}[()]){}){}){}])(Điều này có thể là tối ưu, tôi viết lại trình tối ưu hóa để bỏ qua các giá trị nhất định mà tôi tin rằng sẽ không tối ưu vì số mã hóa cứng là một quá trình siêu cấp số nhân và chạy nó để hoàn thành có thể có mất vài ngày).

Sau đó, nó trừ đi một phần tử đầu tiên và bật phần tử thứ hai cho đến khi kết quả đạt đến 0 , {({}[()]<{}>)}.

Nó bật số 0 {}và tất cả các phần tử bên dưới phần tử trên cùng ({}<{{}}>).


Cách tiếp cận chung cho số golf là gì?
Neil

Ý tưởng đơn giản là nếu bạn có một số có các yếu tố n và m bạn đẩy n m-1 lần và sau đó bật m-1 lần. Lực đẩy ban đầu đánh giá là n và mỗi pop đánh giá là n bổ sung, tạo ra (1 + m-1) (n) giống như mn. Điều này được thực hiện đệ quy vì để đẩy n chúng ta cũng phải chơi golf n. Vì phương pháp này không hoạt động tốt đối với một số số, đặc biệt là các số nguyên tố, chúng tôi cũng nhìn xung quanh để xem có số nào hiệu quả hơn gần đó không và nếu có thì chúng tôi biểu thị đây là tổng của số đó và sự khác biệt.
Phù thủy lúa mì

Tôi thấy ... vì vậy đã cho hai số nmcó độ dài kl, tôi giả sử n+msẽ có độ dài k+l? Thế còn n*m?
Neil

n*msẽ là k+4m-4hoặc l+4n-4. Điều này là do phép nhân được mã hóa cứng. Chúng tôi lần đầu tiên đẩy n m-1. Để làm điều này, chúng ta cần kcác biểu tượng để thể hiện n2m-2các biểu tượng để thể hiện các lần đẩy (mỗi lần đẩy là 2 biểu tượng). Sau đó, chúng tôi bật m-1thời gian, chi phí cho chúng tôi thêm 2m-2(pops cũng có giá 2 biểu tượng). Tổng số này để k+4m-4. chúng ta cũng có thể nhân m*n(tài sản giao hoán) để có được l+4n-4. Kết quả sẽ ngắn hơn trong hai.
Phù thủy lúa mì

1
Chà, nếu đó là sự thật, thì +1chi phí 2, *2chi phí 4, *3chi phí 8, *4chi phí 12, đắt hơn *2*2, vì vậy không đáng (trong số dưới 1000 tôi chỉ tìm thấy 10 không sử dụng *2: 1, 2, 3 , 4, 5, 9, 15, 27, 45, 135). Trong năm 1912, điều tốt nhất tôi có thể làm là ((((((1+1+1)*2+1)*2*2+1)*2+1)*2+1)*2+1)*2*2*2với chiều dài 52.
Neil

7

Bash + tiện ích chung, 39

ncal $1|grep W|factor|egrep -c ': \S+$'

Lấy năm đầu vào làm tham số dòng lệnh. Thông thường xuất các thông báo như thế này sang STDERR - Tôi nghĩ rằng điều này là hợp pháp theo câu trả lời meta này :

factor: We is not a valid positive integer

Nếu bạn muốn triệt tiêu rõ ràng đầu ra STDERR thì bạn có thể thực hiện việc này thay vì số điểm 43 :

ncal $1|grep W|factor 2>-|egrep -c ': \S+$'

Lưu ý rằng điều này giả sử một ngôn ngữ tiếng Anh hoặc C / POSIX. Nó không hoạt động tốt ở đó gd_GB.utf8, nơi mà tất cả các tên ngày viết tắt Di.
Toby Speight

6

Octave, 86 byte

Điều này không nhanh, bởi bất kỳ căng. Nhưng đó không thực sự là mục tiêu của một môn đánh gôn, phải không?

function r=p(y)r=0;for(i=698346:7:815953)d=datevec(i);r+=d(1)==y*isprime(d(3));end;end

Octave có thể theo dõi ngày theo "số ngày" - số ngày trôi qua trong đó ngày 1 tháng 1 là ngày 1. Theo biện pháp này, ngày 3 tháng 1 năm 1912 (thứ tư đầu tiên trong tập hợp của chúng tôi) là ngày 698.346. Bắt đầu ở đó và lặp đi lặp lại qua mỗi ngày thứ 7 (tất cả các ngày thứ Tư) cho đến hết năm 2233 và thêm 1 nếu năm là năm mục tiêu VÀ ngày tháng là chính.


5

Python 2.7, 166 , 165 , 150 byte

from datetime import*
y=input()
d,c=date(y,1,1),0
while d.year==y:n=d.day;c+=n>1<2==d.weekday()>0<all(n%x for x in range(2,n));d+=timedelta(1)
print c

Chắc chắn có chỗ để cải thiện ở đây. Tôi còn khá mới với việc chơi golf ở trăn. Điều này sử dụng các datetimemô-đun. Nó lặp qua tất cả các ngày trong năm để thêm một vào bộ tích lũy nếu nó phù hợp với tiêu chí. Sau đó nó in kết quả. Hầu hết các vật nặng đều nằm trong mô-đun nên mã có thể khá mỏng.

Một byte được lưu nhờ vào Morgan Thrapp và 15 byte được lưu bởi Pietu1998 .


1
Bạn có thể lưu một byte bằng cách chuyển n%x==0sang n%x<1.
Morgan Thrapp

2
Điều -1này là không cần thiết vì rangechỉ số kết thúc là độc quyền. Ngoài ra, bạn có thể chuyển đổi filterthành một máy phát điện. [0for x in range(2,n)if n%x<1]
PurkkaKoodari

Bạn có thể sử dụng any(...)hoặc all(...)thay vì not filter(...).
kennytm

1
Bằng cách kết hợp các so sánh xích và allbạn có thể tiết kiệm được cả đống. c+=n>1<2==d.weekday()>0<all(n%x for x in range(2,n))
PurkkaKoodari

3

J, 44 byte

+/@(valdate*3=weekday)@,.&(,/(>:,"0/p:)i.12)

Tôi chỉ phát hiện ra rằng J đã tích hợp sẵn để thao tác ngày.

Sử dụng

Các lệnh bổ sung được sử dụng để định dạng nhiều đầu vào / đầu ra.

   f =: +/@(valdate*3=weekday)@,.&(,/(>:,"0/p:)i.12)
   (,.f"0) 1912 1914 1984 1996 2063 2150 2199 2233
1912 19
1914 16
1984 17
1996 19
2063 19
2150 16
2199 18
2233 18

Giải trình

+/@(valdate*3=weekday)@,.&(,/(>:,"0/p:)i.12)  Input: year
                                       i.12   The range [0, ..., 11]
                              >:              Increment each to get the months [1, ..., 12]
                                    p:        Get the first 12 primes [2, ..., 37]
                                ,"0/          Make a table between each month and prime
                           ,/                 Join the rows
                       ,.&                    Prepend the year to each
                                              The date format is YYYY MM DD
            3=weekday                         Check if each date occurs on Wednesday
    valdate*                                  and is a valid date
+/@                                           Count the number of true values and return

1

PowerShell v3 +, 99 95 byte

Phương pháp tiếp cận vũ phu -

param($y)(1..12|%{$m=$_;2,3,5,7,11,13,17,19,23,29,31|?{(date "$m-$_-$y").DayofWeek-eq3}}).Count

Đưa đầu vào $y, vòng lặp từ 1đến 12, lưu trữ tháng tạm thời vào $m, sau đó lặp lại mọi nguyên tố từ 2đến 31. Đối với mỗi người trong số họ, chúng tôi xây dựng một Get-Datengày cụ thể, sau đó chỉ chọn những người có DayOfWeek -equal đến 3(tức là thứ Tư). Đóng gói tất cả trong một parens để tạo thành một mảng và lấy .Countnó.


Ngoài ra, phương pháp toán học -

PowerShell v3 +, 105 byte

param($y)(16,19,18,20,16,18,19)[($a=(date "1-1-$y").DayOfWeek)]+(1,-3,0,1,2)[$y%5]*($a-in0,2,3,4)*!($y%4)

Có vẻ như chỉ là một sợi tóc dài hơn phương pháp vũ phu, nhưng tôi bao gồm nó ở đây vì nó có thể có lợi cho người khác.

Một lần nữa lấy đầu vào $ylà năm. Lần này chúng tôi thực hiện các hoạt động toán học nghiêm ngặt dựa trên ngày đầu tiên của năm. Trước tiên, chúng tôi tính toán ngày nào trong tuần và lưu trữ $ađể sử dụng sau. Đó là chỉ mục vào mảng đầu tiên, cho chúng ta số thường là chính xác. Chúng ta phải thêm vào đó một chỉ số thứ hai dựa trên việc đó có phải là năm nhuận tiềm năng hay không, cho dù đó là Chủ nhật, Thứ ba, Thứ tư hay Thứ năm, và dựa trên năm đó là năm nào.

Điều này dựa trên sự quan sát sau đây. Cột đầu tiên là ngày trong tuần của ngày 1 tháng 1, cột thứ hai là đầu ra thông thường. Trừ khi năm là một trong những số ở giữa, thay vào đó là số trong parens. Cột cuối cùng mô tả cách hoạt động của chỉ mục% 5.

Jan-1 -> #  ... Except if $y=       (then it's this number) | $y % 5 =
Sun   -> 16 ... 1928 1956 1984 etc. (17)                    |    3
Mon   -> 19
Tue   -> 18 ... 1924 1952 1980 etc. (20)                    |    4
Wed   -> 20 ... 1936 1964 1992 etc. (17)                    |    1
Thur  -> 16 ... 1920 1948 1976 etc. (17)                    |    0
Fri   -> 18
Sat   -> 19

Lưu ý: Cả hai giả định en-usnày là cài đặt PowerShell hiện tại cho thông tin văn hóa / ngày. Định dạng và DayOfWeeksố ngày có thể cần được điều chỉnh cho phù hợp với các biến thể văn hóa khác.


1

Ruby, 83 + 15 ( -rdate -rprimecờ) = 98 byte

Hãy thử trực tuyến! (Các mô-đun đã nhập được nội tuyến vì idk nếu tôi có thể sử dụng cờ trong repl.it)

->y{k=0;Prime.each(31){|d|k+=(1..12).count{|m|Date.new(y,m,d).wday==3 rescue p}};k}

1

JavaScript ES6, 187 182 181 179 byte

179 Hoán đổi trong một vòng lặp for cho vòng lặp while

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);for(;a()<=y;c())N+=y-a()?0:-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b());return N}

181 Nén chặt chim nhạn

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);while(a()<=y){N+=y-a()?0:-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b());c()}return N}

182 Kết hợp hai vòng

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);while(a()<=y){N+=a()==y?-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b()):0;c()}return N}

187

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);while(a()<y)c();for(;a()==y;c())N+=-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b());return N}

Tôi không nghĩ rằng điều này được tính như bạn đã đưa ra vào thứ Tư đầu tiên cho năm cụ thể, trong ví dụ này. Thách thức của OP nói rằng nó cần năm là thông số duy nhất ... Tuy nhiên, rất nhiều nỗ lực cho đến nay ...
WallyWest

"Đầu vào cho chương trình / chức năng của bạn sẽ là một năm" - nhưng những gì bạn chỉ ra không phải là điều đó. Tôi sử dụng Thứ Tư đầu tiên của năm 1912 như một hạt giống vì nó là hoặc trước mỗi Thứ Tư khác trong khoảng thời gian do OP đưa ra, nhưng tôi cũng có thể dễ dàng sử dụng bất kỳ Thứ Tư tùy ý nào từ năm 1911 hoặc trước đó để gieo hạt giống. Đầu vào cho chức năng của tôi vẫn là một năm và chức năng vẫn tính toán số thứ tư chính trong bất kỳ năm nào trong khung thời gian được đề xuất bởi OP, vì vậy tôi không chắc cách này không phù hợp với thách thức.
Pandacoder

À, xin lỗi ... Ban đầu tôi không nhận ra rằng bạn đang sử dụng nó như một thành phần gieo hạt ... Ý tưởng tuyệt vời ... Đặc biệt là xem xét giải pháp của bạn đánh bại tôi khoảng 30 ..;)
WallyWest

1
Cảm ơn. Tôi đã lấy cảm hứng từ việc thực hiện Brain-Flak của Eamon Olive, trong đó thực sự có tất cả các câu trả lời được lập trình sẵn, theo lời giải thích của ông.
Pandacoder

1

Hàng loạt, 248 byte

@set/ad=0,l=1,n=20
@for /l %%i in (1913,1,%1)do @set/ad=(d+l+1)%%7,l=!(%%i%%4)-!(%%i%%100)+!(%%i%%400)
@goto %l%%d%
:03
:06
@set/an-=1
:12
:13
:16
@set/an-=1
:01
:04
:14
@set/an-=1
:00
:05
:10
:15
@set/an-=1
:02
:11
@echo %n%

Giải thích: dlà ngày trong tuần, 0vào thứ Hai, thuận tiện vào ngày 1 tháng 1 năm 1912. llà lá cờ cho dù năm đó có phải là năm nhuận hay không, 1cho năm 1912. Sau đó, chúng tôi lặp lại từ năm 1913 đến năm đầu vào, cập nhật ngày tuần và tính toán lại cờ năm nhuận khi chúng ta đi. Cuối cùng, chúng tôi sử dụng cờ năm nhuận và ngày trong tuần để lập chỉ mục một cách hiệu quả một tuyên bố chuyển đổi lớn để xác định n, số lượng thứ tư chính. Đặt nthành 20 và giảm dần khi giảm mặc dù rẻ hơn so với sử dụng logic điều khiển luồng, nhưng kết quả cuối cùng là nếu ngày 1 tháng 1 của năm không nhảy là thứ Năm hoặc Chủ nhật thì có 16 ngày thứ tư hàng đầu và cứ thế cho các trường hợp khác .


1

Javascript ES6 206 203 199 197 195 183 182 179

Không phải là ngắn nhất, nhưng tốt nhất tôi có thể làm bây giờ ... Gợi ý chơi gôn chào mừng ...

p=n=>--d-1?n%d&&p(n):1;v=Date;D=(x,y)=>new v(x.setDate(x.getDate()-y));W=a=>eval('for(Z=0,z=D(w=new v(a,11,31),(w.getDay()+4)%7);z>new v(a,0,1);)Z+=~~p(d=z.getDate()),z=D(z,7);Z')

Thay đổi:

  1. thay đổi thành phần ternary từ: 3>=x?3-x:10-xsang 6-(x+10)%7, tiết kiệm: 3 Thay đổi vị trí khai báo;
  2. sáp nhập x=w.getDay();z=D(w,6-(x+10)%7)vào z=D(w,6-(w.getDay()+10)%7), tiết kiệm: 4
  3. chuyển Z=0từ forvòng lặp sang khai báo ngày và đẩy z=D(w,6-(x+10)%7)vào forvòng lặp để dọn dẹp, tiết kiệm: 2
  4. thay đổi w=new Date(a,Z=0,1)khai báo thành forvòng lặp, hợp nhất với wkhai báo hiện có , tiết kiệm: 2
  5. viết lại hàm tìm số nguyên tố thành hàm kiểm tra số nguyên tố, tiết kiệm: 12
  6. thay đổi +!!để ~~giảm và vẫn chuyển đổi p(d=1)từ NaNsang 0, cho phép chức năng Prime Test vẫn hoạt động, tiết kiệm: 1
  7. Đã chuyển tất cả các chức năng bổ sung ra khỏi chức năng gọi chính W, forvòng lặp được xác định lại - đi ngược lại từ ngày 31 tháng 12, viết Dateđối tượng ra dưới dạng một biến riêng biệt, sau đó viết lại forvòng lặp thành evalcuộc gọi; tiết kiệm 3.

@PandaCoder, tôi đang theo kịp bạn, người bạn đời!


1

R, 149 147 byte

y=function(x){s=strftime;b=ISOdate
a=seq(b(x,1,1),t=b(x,12,31),b='d')
length(a[s(a,'%u')==3&trimws(s(a,'%e'))%in%c(2,3,5,7,11,13,17,19,23,29,31)])}

Kiểm tra nó trên Ideone .


0

Groovy, 126

Groovy không có xác nhận số nguyên tố, cũng phải xây dựng điều đó.

{n->p={x->x<3||(2..Math.sqrt(x)).every{x%it}};(new Date("1/1/$n")..new Date("12/31/$n")).collect{it[7]==4&&p(it[5])?it:0}-[0]}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.