#!/usr/bin/python3 # 29-3-2: Trpasličí závaží # autor: Jirka Setnička # Formát vstupu: # Dva řádky čísel -1,0,1 oddělených mezerou, například: # 1 0 -1 -1 0 1 1 # 1 -1 0 1 def odstranNuly(cislo): cislo = list(cislo) nejlevejsi = None for (i, c) in enumerate(cislo): if c != 0: nejlevejsi = i break if nejlevejsi is None: return [0] else: return cislo[nejlevejsi:] # Převod do dvojkového čísla # Vrací dvojici (vystup, zaporne) def preved(cislo): cislo = odstranNuly(cislo) zaporne = False if cislo[0] == -1: zaporne = True cislo = list(map(lambda x: -x, cislo)) # Obrátíme hodnoty v čísle vystup = [] prevod = 0 for c in reversed(cislo): cc = c + prevod # Jedna číslice i s převodem prevod = 0 if cc < 0: # Aplikování vzoru (-1,+2) cc += 2 prevod = -1 vystup.append(cc) return(odstranNuly(reversed(vystup)), zaporne) def porovnejBinarne(A, B): A = list(reversed(A)) B = list(reversed(B)) while len(A) < len(B): A.append(0) while len(B) < len(A): B.append(0) A = reversed(A) # Odečte od sebe dvě čísla, vrací výsledek A-B (v -1,0,1 soustavě) def odecti(A, B): A = list(reversed(A)) B = list(reversed(B)) vystup = [] prevod = 0 for i in range(max(len(A), len(B))): a = A[i] if i < len(A) else 0 b = B[i] if i < len(B) else 0 c = a - b + prevod prevod = 0 if c < -1: # Aplikování vzoru (-1,+2) c += 2 prevod = -1 elif c > 1: # Aplikování vzoru (+1,-2) c -= 2 prevod = 1 vystup.append(c) if prevod != 0: vystup.append(prevod) return(odstranNuly(reversed(vystup))) ################################################################################ def porovnejPrevedenim(A, B): A, znamenkoA = preved(A) B, znamenkoB = preved(B) if znamenkoA > znamenkoB or (znamenkoA == znamenkoB and len(A) > len(B)): return 1 elif znamenkoA < znamenkoB or (znamenkoA == znamenkoB and len(A) < len(B)): return -1 else: for a, b in zip(A, B): if a > b: return 1 elif b > a: return -1 return 0 def porovnejOdectenim(A, B): return odecti(A, B)[0] ################################################################################ # Načtení vstupu A = list(map(int, input().split())) B = list(map(int, input().split())) for a in A: if a not in [-1, 0, 1]: print("Špatný formát vstupu, vstup obsahuje", a) for b in B: if b not in [-1, 0, 1]: print("Špatný formát vstupu, vstup obsahuje", b) # Porovnání pomocí obou metod print("Porovnání pomocí převedení... ", end="") vysledek = porovnejPrevedenim(A, B) if vysledek == 1: print("A větší") elif vysledek == 0: print("stejné") else: print("B větší") print("Porovnání pomocí odečtení... ", end="") vysledek = porovnejOdectenim(A, B) if vysledek == 1: print("A větší") elif vysledek == 0: print("stejné") else: print("B větší")