[Tutor] crashed with Runtime Error: NZEC (non-zero exit code)
Andrei Petre
andrei.petre at gmail.com
Sun Feb 24 13:36:53 CET 2008
Hello,
I wrote a code for a problem and submitted to an online judge, a program
that runs my program against a set of predefined input data.
I wrote it for exercise my python writing. In don't want to discuss the
algorithm here!
I dare to ask for help because the answer was : crashed with Runtime Error:
NZEC (non-zero exit code). I heard that is a general error for most
interpreters and elsewhere that NZEC error code has to do with exceptions.
So, i'm seeking for a possible problem with the coding, not with the
algorithm.
Here, the code. (l also attached it in a file)
Using characters of the string, the program should construct the maximum
number which divides by fifteen without remainder.
example
*Input:*
1
02041
*Output:*
4200
[code]
import sys
def write(number): # assamble the number
# assure the 5 divisibility
if number[0] != 0:
number[0] -= 1
last_d = 0
else:
number[5] -= 1
last_d = 5
zero = True
for i in reversed(range(1,10)):
for j in range(digits[i]):
sys.stdout.write(i)
zero = False
# leading zeroes should be omitted
if zero == False:
for i in range(digits[0]):
sys.stdout.write(0)
print last_d
def remove_item(d,item):
if type(item) != list:
d[item] -= 1
else:
d[item[0]] -= 1
d[item[1]] -= 1
def case5(d,item):
# return True if i try to remove the only five that assure the
divisibility with 5
return item == 5 and d[0] == 0 and d[item] == 1
def exist(d,item):
found = False
if type(item) != list:
if d[item] != 0 and case5(d,item) == False:
found = True
else:
p1 = d[item[0]] != 0 and case5(d,d[item[0]]) == False
d[item[0]] -= 1
p2 = d[item[1]] != 0 and case5(d,d[item[1]]) == False
d[item[0]] += 1
if p1 == True and p2 == True:
found = True
return found
def remove(d, mult):
found = False
for item in mult:
if exist(d,item) == True:
remove_item(d,item)
found = True
break
if found == False:
d = []
return d
def remove_all(digits,rest):
# if the number is the form 3k+1, i try to remove one 3k+1 digit or two
3k+2 digits
# if the number is the form 3k+2, i try to remove one 3k+2 digit or two
3k+2 digits
one = [1,4,7,[2,2],[2,5],[2,8],[5,5],[5,8],[8,8]]
two = [2,5,8,[1,1],[1,4],[1,7],[4,4],[4,7],[7,7]]
if rest == 1:
d = remove(digits, one)
else:
d = remove(digits, two)
return d
def resolve(digits):
suma = 0
for i in range(10):
suma += i*digits[i]
rest = suma % 3
if rest != 0: # if it's not divisible with 3 i try to remove some digits
digits = remove_all(digits,rest)
return digits
t = int(raw_input())
for tt in range(t):
line = raw_input()
digits = [0]*10
# counts the frequence of digits in the string
for i in range(len(line)):
digits[int(line[i])] += 1
# if it's not divisible with 5
if digits[0] == 0 and digits[5] == 0:
print("impossible")
else:
number = resolve(digits)
if(number == []):
print("impossible")
else:
write(number)
[/code]
Any alternatives for the personal rambling(if it's a wrong way to do it, of
course):
L = [1,2,[3,4],[5,5]]
for item in L:
if type(item) == list:
print L[item[0]], L[item[1]]
else:
print L[item]
Thanks,
Andrei
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20080224/7682a3f9/attachment.htm
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: div15.py
Url: http://mail.python.org/pipermail/tutor/attachments/20080224/7682a3f9/attachment.txt
More information about the Tutor
mailing list