Skip to content

Instantly share code, notes, and snippets.

@horvatha
Last active November 18, 2020 11:12
Show Gist options
  • Save horvatha/b117bc1ec0cf7daef0c081f2d83e9447 to your computer and use it in GitHub Desktop.
Save horvatha/b117bc1ec0cf7daef0c081f2d83e9447 to your computer and use it in GitHub Desktop.
Hibás változat IT megmérettetés 2020, Nyelvfüggetlen programozás és adatbáziskezelés (SAP), 4. forduló feladata
import unittest
def clock():
maxdiff_ = 90
for h in range(12):
for m in range(60):
for s in range(60):
current_diffs = diffs(h, m, s)
current_maxdiff = maxdiff(current_diffs)
if current_maxdiff < maxdiff_:
time = (h, m, s)
maxdiff_ = current_maxdiff
diffs_ = current_diffs
print(f"{time[0]}:{time[1]}:{time[2]}-kor max eltérés 120 foktól {maxdiff_:6.3f} fok, bezárt szögek fokban {diffs_}")
return time
def maxdiff(triple):
degree = 120
diff = [abs(i-degree) for i in triple]
maxdiff = max(diff)
# print(triple, diff)
return maxdiff
def diffs(h, m, s):
"""abs values of the degrees"""
deg_s = s * 6
deg_m = m * 6 + deg_s / 60
deg_h = h * 30 + deg_m / 60
diffs = [abs(deg) for deg in (deg_s - deg_m, deg_s - deg_h, deg_m - deg_h)]
diffs = sorted([deg if deg <= 180 else 360 - deg for deg in diffs])
# print(diffs, deg_h, deg_m, deg_s)
return diffs
class TestClock(unittest.TestCase):
def test_maxdiff(self):
self.assertEqual(maxdiff((90, 90, 0)), 120)
self.assertEqual(maxdiff((90, 120, 30)), 90)
self.assertEqual(maxdiff((120, 120, 120)), 0)
self.assertEqual(maxdiff((120, 130, 110)), 10)
def test_diffs(self):
self.assertEqual(diffs(3, 0, 0), [0, 90, 90])
self.assertEqual(diffs(0, 0, 0), [0, 0, 0])
self.assertEqual(diffs(6, 0, 0), [0, 180, 180])
self.assertEqual(diffs(9, 0, 0), [0, 90, 90])
def test_clock(self):
self.assertEqual(clock(), (7, 56, 16))
if __name__ == '__main__':
# clock()
unittest.main()
# for hms in ((6, 9, 50), (7, 56, 16)):
# print(maxdiff(diffs(*hms)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment