It is possible when the message starts something like ABA for the first two values to be the same. In this case, you get gcd = values[0] instead of the prime shared between the first two values, and this wrong calculation leads to some of your later numbers being fractions, which probably leads to you computing more than 26 different values and then alphabets[primes.index(divisors[j])] indexes beyond the length of alphabets.
You have to find the first two values which are different and take their GCD to start the process off, and possible wind it both forward and backward from that point. Also, if you use math.gcd() (fractions.gcd() in versions of Python before 3.5) instead of your GCD function, it will use the Euclidean algorithm to compute GCD which will be fast enough for the hidden input where the primes could be up to 100 digits long. On Sun, Apr 7, 2019 at 9:27 AM zombiepunkman <[email protected]> wrote: > I am unable to debug the runtime error in this solution to Cryptopangrams > problem. > Please help. > > def gcd(a,b): > for i in range(min(a,b),0,-1): > if(a % i == 0 and b % i == 0): > return i > > > > if __name__=='__main__': > alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" > T = int(input()) > answers = ["" for i in range(T)] > for i in range(0,T): > N,L = [int(s) for s in input().split(" ")] > divisors = [] > values = [int(s) for s in input().split(" ")] > div = gcd(values[0],values[1]) > divisors.append(int(values[0]/div)) > divisors.append(div) > for j in values[1:len(values)]: > div = int(j/div) > divisors.append(div) > primes = list(set(divisors)) > primes.sort() > for j in range(0,len(divisors)): > answers[i] += alphabets[primes.index(divisors[j])] > for i in range(0,T): > print("Case #{}: {}".format(i+1,answers[i])) > > > Python version 3.6 > > -- > You received this message because you are subscribed to the Google Groups > "Google Code Jam" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/google-code/53742ecf-7373-4e3b-9e9e-f16717220df2%40googlegroups.com > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Google Code Jam" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-code/CAMAzhzjm7B82D_Bd6MnCvxXeg8FayvE54Dd34iPSqC2PiTaD4w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
