Calculation of WPM

June 2, 2024 ยท View on GitHub

Typeinc follows Character based Formula:
It's the international standard formula for typing test, but with some tweeks. This formula is independent from exercise text. Thus it gives you a justified result with any passage your are typing.

WPM = (Typed Characters/5)/(Time in minutes)
## Here WPM = Word Per Minute

All typed entries = Total Key Strokes (or key depression).
The catch is that the typed characters are basically from correct words and spaces typed.

For example: The sentence you get is "Amazing apple am intelligent", while your friend gets "Hi apple this are". It is unfair to just see correct words, but we take the net correct characters from the correct words and then use the above formula. Thus it is independent of what sentence you get that you will get a fair WPM.

If you type 200 character(or keystroke) in 1 minutem, which are within correct words, then your typing speed will be = 200 / 5 = 40 WPM

IMPORTANT: In Typeinc, we just display 2 rounded decimal place, but the value used throughout has many more decimal places. Hence getting exact wpm = 40 (not displayed) is a miracle I would say.

Time taken

The moment you start typing till the last character difference is the time taken by you. Thus it is impossible for you to backspace your last character(else you may wait for the program to automatically stop, which it won't).
Time taken is calculated using the python library time. Thus any small difference in actual time may be caused due to code execution or time library.

When you restart, the start time is set to zero which starts again when you start typing till the end.

Accuracy

Accuracy is calculated by -

Accuracy = 100 - (incorrect characters typed)/(total characters)*100

We do not count the character position you did pressed backspace for, although they are counted in the Correct words. So don't think their is no use of backspacing.

Grading System Explanation

The Grading system has been set seperately for each of the difficulty levels.
Look at the below given division for Grading for each difficulty level. Note:

  • 20000 is set as max limit because No human or mechanical robot can achieve this. So you can try this on robots too!!!
  • The limits are inclusive i.e. min_ <= wpm <= max. Hence for example if you land at exact 24 in SE level, then you will get E grade since the loop used for grading reaches E first and breaks(well intended), plus according to wpm note, getting exact 24 is a miracle.

Super Easy Regular level (SE)

WPM RangeGradeLevel
0-24EBeginner
24-45DNovice
45-65CIntermediate
65-90BProficient
90-120AAdvanced
120-159SExpert
159-20000SSGrandtypaa

Easy (E)

WPM RangeGradeLevel
0-20EBeginner
20-42DNovice
42-54CIntermediate
54-80BProficient
80-110AAdvanced
110-144SExpert
144-20000SSGrandtypaa

Normal (N)

WPM RangeGradeLevel
0-18EBeginner
17-38DNovice
38-48CIntermediate
48-72BProficient
72-100AAdvanced
100-132SExpert
132-20000SSGrandtypaa

Hard (H)

WPM RangeGradeLevel
0-16EBeginner
15-34DNovice
34-42CIntermediate
42-64BProficient
64-90AAdvanced
90-120SExpert
120-20000SSGrandtypaa

Super Hard (SH)

WPM RangeGradeLevel
0-14EBeginner
13-30DNovice
30-38CIntermediate
38-58BProficient
58-80AAdvanced
80-108SExpert
108-20000SSGrandtypaa

Insane (I)

WPM RangeGradeLevel
0-13EBeginner
11-26DNovice
26-34CIntermediate
34-49BProficient
49-72AAdvanced
72-96SExpert
96-20000SSGrandtypaa

Super Insane (SI)

WPM RangeGradeLevel
0-10EBeginner
10-24DNovice
24-30CIntermediate
30-42BProficient
42-69AAdvanced
69-90SExpert
90-20000SSGrandtypaa

BRUH (X)

WPM RangeGradeLevel
0-8EBeginner
9-22DNovice
22-26CIntermediate
26-39BProficient
39-60AAdvanced
60-82SExpert
82-20000SSGrandtypaa

SUPER BRUHH (X2)

WPM RangeGradeLevel
0-6EBeginner
7-18DNovice
18-24CIntermediate
24-36BProficient
36-54AAdvanced
54-75SExpert
75-20000SSGrandtypaa

DAMNN BRUHHH!! (XX)

WPM RangeGradeLevel
0-5EBeginner
6-16DNovice
16-20CIntermediate
20-28BProficient
28-46AAdvanced
46-65SExpert
65-20000SSGrandtypaa

U ROCK BRUHHH! (XX2)

WPM RangeGradeLevel
0-4EBeginner
5-12DNovice
12-16CIntermediate
16-24BProficient
24-38AAdvanced
38-57SExpert
57-20000SSGrandtypaa

GOD BRUH!!! (SXX)

WPM RangeGradeLevel
0-3EBeginner
3-7DNovice
7-10CIntermediate
10-18BProficient
18-30AAdvanced
30-50SExpert
50-20000SSGrandtypaa

All these numbers are well thought and come up by AnirudhG07, as mentioned before.

Typeinc score

Typeinc score is a simple formula which gets a big decimal number which you obtain as-

Typeinc score = wpm * (accuracy/100) * (difficulty level multiplier factor).

The total time factor is already taken into consideration when calculating wpm.

The multiplier factor is highly unfair to those trying lower difficulty level. Even a robot trying SE level might lose to a Novice trying SXX level in terms of Typeinc score Yes it is meant this way. Everything is fair in love and war.

NOTE: Details of multiplier constant shall not be put here.

Text generated

For each level of difficulty, different annomalies are added to the text. The regular SE level has plain english text while rest have some ASCII characters, capitalisation mix up, etc.
For the Death texts, referred to what you get for level > 10, all have increased difficulty and more anomalies introduced with more number of characters added. Thus even 1 word of SXX can fill up lines.
Also these are randomly set, it's upon your luck what length you get for your test.

All the best bruh!