Last active
November 18, 2020 11:12
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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