Five days, five pure data functions over live APIs — sum, combine, flatten, filter, rank. How do those feel now that you can write them from memory?
The key-name mapping per API is what I kept tripping on. messages for Gmail, items for Calendar and Tasks, and the text lives in snippet, summary, title respectively.
That lookup table is half the skill. The quiz leans on it plus the generator idiom sum(len(x) for x in ...) and the sort-then-slice ranking pattern.
Any tricky ones I should watch for?
One question on why list(dict.fromkeys(...)) beats list(set(...)) for dedup — think about order preservation. Let's see how you do.
Five pure data functions over your live Gmail, Calendar, and Tasks:
total_email_chars — sum of all snippet lengthscombine_counts — Gmail + Calendar counts plus derived totalcollect_all_titles — flatten three sources into one listfilter_by_keyword — case-insensitive cross-source filterrank_by_length — sorted(items, key=len, reverse=True)[:n]Key names: Gmail messages/snippet, Calendar items/summary, Tasks items/title. Always .get(key, []) with a default.
Create a free account to get started. Paid plans unlock all tracks.
Five days, five pure data functions over live APIs — sum, combine, flatten, filter, rank. How do those feel now that you can write them from memory?
The key-name mapping per API is what I kept tripping on. messages for Gmail, items for Calendar and Tasks, and the text lives in snippet, summary, title respectively.
That lookup table is half the skill. The quiz leans on it plus the generator idiom sum(len(x) for x in ...) and the sort-then-slice ranking pattern.
Any tricky ones I should watch for?
One question on why list(dict.fromkeys(...)) beats list(set(...)) for dedup — think about order preservation. Let's see how you do.
Five pure data functions over your live Gmail, Calendar, and Tasks:
total_email_chars — sum of all snippet lengthscombine_counts — Gmail + Calendar counts plus derived totalcollect_all_titles — flatten three sources into one listfilter_by_keyword — case-insensitive cross-source filterrank_by_length — sorted(items, key=len, reverse=True)[:n]Key names: Gmail messages/snippet, Calendar items/summary, Tasks items/title. Always .get(key, []) with a default.