Most solves before first BLD success
PersonFor each BLD event (333bf / 444bf / 555bf / 333mbf), expand attempts in time order into a flat list per cuber; find the first value > 0 — its index = failures before. 0 means success on the very first attempt.
Top spots are dozens or hundreds of DNFs before finally landing one — BLD has a brutal success-rate ramp unlike any speed event.
By the numbers
4
Events
333bf/444bf/555bf/333mbf
DNF 计入
Failure
`value = -1` (DNF) counts, `0` does not
Top 20
Per-section depth
4 events × top 20
Data source
results limited to the 4 BLD events, joined to persons / competitions / round_types, with ATTEMPTS_SUBQUERY (concatenates result_attempts.value as comma-separated). Ordered by start_date, round_type.rank — TS gets a time-correct attempt chain.
sql
SELECT event_id, person_link, ${ATTEMPTS_SUBQUERY} AS attempts
FROM results
JOIN persons person ON wca_id = person_id AND sub_id = 1
JOIN competitions competition ON competition.id = competition_id
JOIN round_types round_type ON round_type.id = round_type_id
WHERE event_id IN ('333bf','444bf','555bf','333mbf')
ORDER BY competition.start_date, round_type.rankAlgorithm / pipeline
1
Filter by event
BLD-only — OH / FMC / regular events out of scope.
2
Concatenate attempts
ATTEMPTS_SUBQUERY joins each result's 1-5 attempt values with ,. One SQL row per result.3
TS flatten by (event, person)
Per (event, person), flatten every result's attempts into a 1D array, keeping -1 (DNF) and >0 (success), dropping 0 (skip) and -2 (DNS).
4
findIndex first success
allAttempts.findIndex(v => v > 0) = "how many failures before". Never succeeded → not listed.Caveats & edges
value = 0(skip / withdrawn) is dropped — not a real failure, would pollute the count.- Only cubers who eventually succeeded are listed — never-succeeded cubers (possibly the hardest workers!) are absent. Tradeoff in the leaderboard scope.
- MBLD attempts share the
valueencoding with BLD but mean a difficulty score, not time;> 0still correctly flags success.