fork(1) download
  1. import re
  2.  
  3.  
  4. TASKS_TEXT = """
  5. task001, task002, task003, task004, task005, task006, task007, task008, task009, task010, task011, task012, task013, task014, task015, task016, task017, task019, task020, task022, task023, task024, task025, task026, task027, task028, task029, task030, task031, task032, task033, task034, task035, task036, task037, task038, task039, task040, task041, task042, task043, task044, task045, task046, task047, task048, task049, task050, task051, task052, task053, task054, task056, task057, task058, task059, task060, task061, task062, task063, task064, task065, task067, task068, task069, task070, task071, task072, task073, task074, task075, task077, task078, task079, task081, task082, task083, task084, task085, task086, task087, task088, task089, task090, task091, task092, task093, task094, task095, task097, task098, task099, task100, task101, task102, task103, task104, task105, task106, task107, task108, task109, task110, task111, task112, task113, task114, task115, task116, task117, task118, task119, task120, task121, task122, task123, task124, task125, task126, task127, task128, task129, task130, task131, task132, task134, task135, task136, task137, task138, task139, task140, task141, task142, task143, task144, task145, task146, task147, task148, task149, task150, task151, task152, task153, task154, task155, task156, task157, task159, task160, task161, task162, task163, task164, task165, task166, task167, task168, task169, task170, task171, task172, task174, task175, task176, task177, task178, task179, task180, task181, task183, task185, task186, task187, task188, task189, task190, task191, task192, task193, task194, task195, task196, task197, task198, task199, task200, task201, task203, task204, task205, task206, task207, task208, task209, task210, task211, task212, task214, task215, task216, task217, task218, task220, task221, task222, task223, task224, task225, task226, task227, task228, task229, task230, task231, task232, task234, task235, task236, task237, task238, task239, task240, task241, task242, task243, task244, task245, task246, task247, task248, task249, task250, task251, task252, task253, task254, task256, task257, task258, task259, task260, task261, task262, task263, task266, task267, task268, task269, task270, task271, task272, task273, task274, task276, task277, task278, task279, task280, task281, task282, task283, task287, task288, task289, task290, task291, task292, task293, task294, task295, task296, task297, task298, task299, task300, task301, task302, task303, task304, task305, task306, task307, task308, task309, task310, task311, task312, task313, task314, task315, task316, task317, task318, task320, task321, task322, task323, task325, task326, task327, task329, task330, task331, task332, task333, task334, task335, task336, task337, task338, task339, task340, task341, task342, task343, task344, task345, task346, task347, task348, task350, task352, task353, task354, task355, task356, task357, task359, task360, task361, task362, task365, task368, task369, task371, task372, task373, task374, task375, task376, task378, task380, task381, task384, task385, task386, task388, task389, task390, task391, task393, task394, task395, task398, task399, task400"""
  6.  
  7.  
  8. def compress_ranges(nums):
  9. if not nums:
  10. return []
  11.  
  12. nums = sorted(nums)
  13. ranges = []
  14. start = nums[0]
  15. prev = nums[0]
  16.  
  17. for n in nums[1:]:
  18. if n == prev + 1:
  19. prev = n
  20. else:
  21. ranges.append((start, prev))
  22. start = prev = n
  23.  
  24. ranges.append((start, prev))
  25. return ranges
  26.  
  27.  
  28. def format_task(n):
  29. return f"task{n:03d}"
  30.  
  31.  
  32. present = {int(x) for x in re.findall(r"task(\d{3})", TASKS_TEXT)}
  33. all_tasks = set(range(1, 401))
  34. missing = sorted(all_tasks - present)
  35.  
  36. print(f"Present: {len(present)}")
  37. print(f"Missing: {len(missing)}")
  38.  
  39. compressed = compress_ranges(missing)
  40.  
  41. print("\nMissing tasks:")
  42. for a, b in compressed:
  43. if a == b:
  44. print(format_task(a))
  45. else:
  46. print(f"{format_task(a)} - {format_task(b)}")
Success #stdin #stdout 0.03s 9804KB
stdin
Standard input is empty
stdout
Present: 358
Missing: 42

Missing tasks:
task018
task021
task055
task066
task076
task080
task096
task133
task158
task173
task182
task184
task202
task213
task219
task233
task255
task264 - task265
task275
task284 - task286
task319
task324
task328
task349
task351
task358
task363 - task364
task366 - task367
task370
task377
task379
task382 - task383
task387
task392
task396 - task397