Can an arduino perform this task (pulse counter) ?

Your solutions seem to feature updating the display at 0.1 seconds (10 hz). That is not desirable for this application.

My first idea was to just measure the counts over a fixed time frame (1 second) and multipy the result by 15 to get RPM. But that method doesn’t count whole pulses (ie there might be 55.5 pulses in 1.000 seconds) so there is built-in variability with this method.

My next idea is to measure the period (T) for N pulses. Upon the rising or falling edge of the first pulse, start a high-resolution timer. On the N’th pulse, stop the timer, read the timer. If N = 10, then 600 / T = RPM. Print RPM, then reset the timer and start again. In my case, N = 40 represents 10 rotations (4 pulses per rotation). So i am automatically creating an average using 10 rotations. At 500 RPM, T = 1.2 seconds. So the display is updated every 1.2 seconds (not 0.1 seconds). At 3200 RPM, the display is updated every 0.19 seconds. The update interval is variable, and is a consequence of the method, and it is not pre-determined.

I am taking these code examples and trying to impliment this method, but it is not easy to understand this programming language (which is C or C++ I guess). In the past I have written large programs with thousands of lines of code using power basic, but I struggle to understand the formatting used by C.