In the 2022 AMC 10A competition, Problem #24 introduces a condition on digit strings that connects directly to the combinatorics of parking functions:
Contest Problem Statement: "How many strings of length 5 formed from the digits 0, 1, 2, 3, 4 are there such that for each $j \in \{1, 2, 3, 4\}$, at least $j$ of the digits are less than $j$?
(For example, 02214 satisfies this condition because it contains at least 1 digit less than 1, at least 2 digits less than 2, at least 3 digits less than 3, and at least 4 digits less than 4. The string 23404 does not satisfy the condition because it does not contain at least 2 digits less than 2.)"
Analyzing the Four Conditions
Any length-$5$ string formed from $\{0, 1, 2, 3, 4\}$ must satisfy:
$j = 1$: At least $1$ digit must be $< 1$. The only digit $< 1$ is $0$, so every valid string must contain at least one $0$.
$j = 2$: At least $2$ digits must be $< 2$ (drawn from $\{0, 1\}$).
$j = 3$: At least $3$ digits must be $< 3$ (drawn from $\{0, 1, 2\}$).
$j = 4$: At least $4$ digits must be $< 4$ (drawn from $\{0, 1, 2, 3\}$).
The total number of unconstrained strings of length $5$ is $5^5 = 3,125$. How many of these $3,125$ satisfy all four inequality conditions?
The Parking Function Connection
If you sort the five digits in non-decreasing order:
$$s_1 \le s_2 \le s_3 \le s_4 \le s_5$$
the condition "at least $j$ digits are less than $j$" means:
In mathematics, any sequence whose non-decreasing sort satisfies $s_i \le i - 1$ is called a parking function!
A famous theorem proved by Alan Konheim and Benjamin Weiss (1969) states that the number of parking functions of length $n$ on $\{0, 1, \dots, n-1\}$ is:
$$(n + 1)^{n - 1}$$
For $n = 5$ digits:
$$(5 + 1)^{5 - 1} = 6^4 = 1,296$$
Declarative Verification in Prolog
In Prolog, we can express the counting condition with a recursive predicate count_lt(List, Limit, Count) that counts how many numbers in a list are strictly below a threshold. Then we filter the search space and verify the result!
Prolog automatically tests and counts the strings meeting these inequality filters, confirming the parking function theorem result of 1,296.
Now you try.
Replace ???? with 1 and click Run to find the count of 1296 valid strings. Then check Example 1 to test specific individual strings like [0, 2, 2, 1, 4] and [2, 3, 4, 0, 4]!
Type your code here:
See your results here:
Share your code
Show a friend, family member, or teacher what you've done!
Here is a share link to your code:
Need a hint?
💡 What now?
The code has ???? for the =1$ lower bound constraint. Replace ???? with 1 and click Run to evaluate all valid candidate strings!
Prolog outputs:
Count = 1296
This matches option (E) 1296 on the 2022 AMC 10A exam ($6^4 = 1,296$).