On Sunday, April 7, 2019 at 11:20:55 PM UTC+2, Michael wrote:
> My Cryptopangrams gave the correct output for the sample input when I ran it
> on my computer, however, it did not give the correct output when I ran it on
> Google's competition interface. Please, any help is greatly appreciated.
> When I run the sample inputs on my computer I get:
> Case #1: CJQUIZKNOWBEVYOFDPFLUXALGORITHMS
> Case #2: SUBDERMATOGLYPHICFJKNQVWXZ
> But when I run the sample inputs on Google's Server, I get:
> Case #1: COZGNSRVXKBFWMXHEYHTGPATIXQNDJUL
> Case #2: CVJUKGNBHYWTQOIASMXDZLEFPR
>
>
> #!/usr/bin/env python3
> # -*- coding: utf-8 -*-
> """
> Created on Fri Apr 5 18:03:33 2019
>
> @author: michaels
> """
> import string
>
> def GCD(a,b):
> while a!=0 and b!=0:
> remainder = a % b
> a = b
> b = remainder
> if a==0:
> return b
> if b==0:
> return a
>
> def output(message):
> for i in range(len(message)):
> print("Case #" + str(i+1) + ": " + str(message[i]))
>
> def characters(primes):
> uppercase = string.ascii_uppercase
> dictionary = {}
> for i in range(len(primes)):
> dictionary[primes[i]] = uppercase[i]
> return dictionary
>
>
> def findPrimes(NandL, numbers):
> primes = []
> charNumbers = []
> for i in range(NandL[1]-1):
> primes.append(GCD(numbers[i], numbers[i+1]))
> charNumbers.append(int(numbers[0]/primes[0]))
> for i in range(len(primes)):
> charNumbers.append(primes[i])
> charNumbers.append(int(numbers[-1]/primes[-1]))
> return charNumbers
>
> def sort(primes):
> for i in range(len(primes)):
> minimum = i
> for x in range(i + 1, len(primes)):
> if primes[x] < primes[minimum]:
> minimum = x
> primes[minimum], primes[i] = primes[i], primes[minimum]
> primes = list(dict.fromkeys(primes))
> return primes
>
> def findMessage(charPrimes, sortedPrimes):
> message = ""
> characters = string.ascii_uppercase
> dictionary = {}
> for i in range(len(characters)):
> dictionary[sortedPrimes[i]] = characters[i]
> for i in range(len(charPrimes)):
> message = message + dictionary[charPrimes[i]]
> return message
>
> def inputs():
> NandL = (str(input()))
> NandL = [int(s) for s in NandL.split() if s.isdigit()]
> L = str(input())
> numbers = [int(s) for s in L.split() if s.isdigit()]
> charPrimes = findPrimes(NandL, numbers)
> sortedPrimes = charPrimes.copy()
> sortedPrimes = sort(sortedPrimes)
> message = findMessage(charPrimes, sortedPrimes)
> return message
>
>
> if __name__ == "__main__":
>
> T = int(input())
> message = []
> for i in range(T):
> message.append(inputs())
>
> output(message)
Are you sure that the following:
primes = list(dict.fromkeys(primes))
return primes
will keep the order of the primes? It is extremely weird to create a dict from
an array to create a list. I must be missing something.
Also, why do you re-implement your own sort? I feel weird that you know about
dict.fromkeys(), but don't know about sort()... This whole function is just
"return sorted( set( primes ) )"
--
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/70d32c2d-79c5-4b6e-bbba-a8580c6daf18%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.