< Zpět na seznam úloh

9 Průnik intervalů

var datasets = [
  {argv:[360, 840, 810, 1290], out: 30},
  {argv:[360, 811, 840, 1320], out: 0},
  {"argv": [813, 1259, 1383, 1439], "out": 0},
  {"argv": [1245, 1251, 339, 340], "out": 0},
  {"argv": [331, 853, 295, 547], "out": 216},
  {"argv": [362, 888, 712, 1178], "out": 176},
  {"argv": [876, 1095, 582, 1404], "out": 219},
  {"argv": [347, 514, 567, 611], "out": 0},
  {"argv": [1029, 1191, 596, 1372], "out": 162},
  {"argv": [38, 1278, 1421, 1437], "out": 0},
  {"argv": [295, 1084, 417, 568], "out": 151},
  {"argv": [1119, 1381, 1072, 1227], "out": 108},
  {"argv": [362, 888, 362, 1178], "out": 526},
  {"argv": [362, 888, 362, 888], "out": 526},
]
var names = ['julie_in', 'julie_out', 'romeo_in', 'romeo_out'];

Julie pracuje ve stejné fabrice na balení růží jako Romeo, a mají napevno vypsané směny. Otázkou je, na jak dlouho se potkají u pásu.

Funkce dostává jako parametry čtyři časy: kdy přijde Julie, kdy odejde, kdy přijde Romeo a kdy odejde. Všechny časy jsou udané jako počet minut od půlnoci (a přes půlnoc nikdo ve fabrice nepracuje) a zaokrouhlují se dolů.

Vrátit máme jedno číslo, a to počet minut, jak dlouho budou pracovat Romeo a Julie spolu.

def main(julie_in, julie_out, romeo_in, romeo_out):
  if romeo_in > julie_out:
    return 0
  return julie_out - romeo_in

Rada: sice to jde napsat jako jeden výraz s funkcemi min a max, ale v tom se málokdo vyzná. Snad spolehlivější postup je, postupně přidávat if podmínky, než program začne fungovat. Jestli chcete, může být pohodlné v podmínkách používat operátory and a or.