Codejam 2018 - Getting confusing runtime error
up vote
0
down vote
favorite
I am trying to solve Codejam 2018 Round 1B - Rounding Error.
I believe my solution should be correct. However, the system does not accept my code due to a "Runtime Error". I simply can't figure out what the error could be.
Here is my code:
# Codejam 2018, Round 1B: Rounding Error
from math import floor
def round_half_up(x):
"""Rounding to nearest integer with tie-breaker rounding up."""
return floor(x + 0.5)
def round_up_set(N):
"""Returns set of votes that round up given total number of voters."""
return set([i for i in range(1, N + 1)
if round_half_up(100*i/N) != floor(100*i/N)])
def get_percentage(num_voters, lang_votes):
"""Gets total percentage given list of vote counts and total voters."""
return sum([round_half_up(100*i/num_voters) for i in lang_votes])
def get_max_percentage(num_voters, lang_votes):
"""Find max sum of votes when rounding percentages of votes."""
voters_left = num_voters - sum(lang_votes)
round_up_votes = round_up_set(num_voters)
if len(round_up_votes) > 0:
min_votes = min(round_up_votes)
for i, votes in enumerate(lang_votes):
if votes not in round_up_votes:
extra_votes = min([i for i in round_up_votes
if i > votes]) - votes
if extra_votes < min_votes and extra_votes <= voters_left:
lang_votes[i] += extra_votes
voters_left -= extra_votes
while voters_left >= min_votes:
lang_votes.append(min_votes)
voters_left -= min_votes
if voters_left > 0:
lang_votes.append(voters_left)
return get_percentage(num_voters, lang_votes)
# I/O Code
num_cases = int(input())
for case in range(1, num_cases + 1):
num_voters, num_lang = [int(i) for i in input().split()]
lang_votes = [int(i) for i in input().split()]
max_percentage = get_max_percentage(num_voters, lang_votes)
print("Case #{}: {}".format(case, max_percentage))
This seems to run to completion without any runtime errors when I test it locally (even using a separate Python 3.5.2 distribution which should be closer to what Google Codejam uses - they use 3.5.3).
I can't come up with any input that the Codejam problem could be generating that would cause the program to exit with an error.
What am I missing?
python python-3.x programming-challenge
New contributor
add a comment |
up vote
0
down vote
favorite
I am trying to solve Codejam 2018 Round 1B - Rounding Error.
I believe my solution should be correct. However, the system does not accept my code due to a "Runtime Error". I simply can't figure out what the error could be.
Here is my code:
# Codejam 2018, Round 1B: Rounding Error
from math import floor
def round_half_up(x):
"""Rounding to nearest integer with tie-breaker rounding up."""
return floor(x + 0.5)
def round_up_set(N):
"""Returns set of votes that round up given total number of voters."""
return set([i for i in range(1, N + 1)
if round_half_up(100*i/N) != floor(100*i/N)])
def get_percentage(num_voters, lang_votes):
"""Gets total percentage given list of vote counts and total voters."""
return sum([round_half_up(100*i/num_voters) for i in lang_votes])
def get_max_percentage(num_voters, lang_votes):
"""Find max sum of votes when rounding percentages of votes."""
voters_left = num_voters - sum(lang_votes)
round_up_votes = round_up_set(num_voters)
if len(round_up_votes) > 0:
min_votes = min(round_up_votes)
for i, votes in enumerate(lang_votes):
if votes not in round_up_votes:
extra_votes = min([i for i in round_up_votes
if i > votes]) - votes
if extra_votes < min_votes and extra_votes <= voters_left:
lang_votes[i] += extra_votes
voters_left -= extra_votes
while voters_left >= min_votes:
lang_votes.append(min_votes)
voters_left -= min_votes
if voters_left > 0:
lang_votes.append(voters_left)
return get_percentage(num_voters, lang_votes)
# I/O Code
num_cases = int(input())
for case in range(1, num_cases + 1):
num_voters, num_lang = [int(i) for i in input().split()]
lang_votes = [int(i) for i in input().split()]
max_percentage = get_max_percentage(num_voters, lang_votes)
print("Case #{}: {}".format(case, max_percentage))
This seems to run to completion without any runtime errors when I test it locally (even using a separate Python 3.5.2 distribution which should be closer to what Google Codejam uses - they use 3.5.3).
I can't come up with any input that the Codejam problem could be generating that would cause the program to exit with an error.
What am I missing?
python python-3.x programming-challenge
New contributor
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to solve Codejam 2018 Round 1B - Rounding Error.
I believe my solution should be correct. However, the system does not accept my code due to a "Runtime Error". I simply can't figure out what the error could be.
Here is my code:
# Codejam 2018, Round 1B: Rounding Error
from math import floor
def round_half_up(x):
"""Rounding to nearest integer with tie-breaker rounding up."""
return floor(x + 0.5)
def round_up_set(N):
"""Returns set of votes that round up given total number of voters."""
return set([i for i in range(1, N + 1)
if round_half_up(100*i/N) != floor(100*i/N)])
def get_percentage(num_voters, lang_votes):
"""Gets total percentage given list of vote counts and total voters."""
return sum([round_half_up(100*i/num_voters) for i in lang_votes])
def get_max_percentage(num_voters, lang_votes):
"""Find max sum of votes when rounding percentages of votes."""
voters_left = num_voters - sum(lang_votes)
round_up_votes = round_up_set(num_voters)
if len(round_up_votes) > 0:
min_votes = min(round_up_votes)
for i, votes in enumerate(lang_votes):
if votes not in round_up_votes:
extra_votes = min([i for i in round_up_votes
if i > votes]) - votes
if extra_votes < min_votes and extra_votes <= voters_left:
lang_votes[i] += extra_votes
voters_left -= extra_votes
while voters_left >= min_votes:
lang_votes.append(min_votes)
voters_left -= min_votes
if voters_left > 0:
lang_votes.append(voters_left)
return get_percentage(num_voters, lang_votes)
# I/O Code
num_cases = int(input())
for case in range(1, num_cases + 1):
num_voters, num_lang = [int(i) for i in input().split()]
lang_votes = [int(i) for i in input().split()]
max_percentage = get_max_percentage(num_voters, lang_votes)
print("Case #{}: {}".format(case, max_percentage))
This seems to run to completion without any runtime errors when I test it locally (even using a separate Python 3.5.2 distribution which should be closer to what Google Codejam uses - they use 3.5.3).
I can't come up with any input that the Codejam problem could be generating that would cause the program to exit with an error.
What am I missing?
python python-3.x programming-challenge
New contributor
I am trying to solve Codejam 2018 Round 1B - Rounding Error.
I believe my solution should be correct. However, the system does not accept my code due to a "Runtime Error". I simply can't figure out what the error could be.
Here is my code:
# Codejam 2018, Round 1B: Rounding Error
from math import floor
def round_half_up(x):
"""Rounding to nearest integer with tie-breaker rounding up."""
return floor(x + 0.5)
def round_up_set(N):
"""Returns set of votes that round up given total number of voters."""
return set([i for i in range(1, N + 1)
if round_half_up(100*i/N) != floor(100*i/N)])
def get_percentage(num_voters, lang_votes):
"""Gets total percentage given list of vote counts and total voters."""
return sum([round_half_up(100*i/num_voters) for i in lang_votes])
def get_max_percentage(num_voters, lang_votes):
"""Find max sum of votes when rounding percentages of votes."""
voters_left = num_voters - sum(lang_votes)
round_up_votes = round_up_set(num_voters)
if len(round_up_votes) > 0:
min_votes = min(round_up_votes)
for i, votes in enumerate(lang_votes):
if votes not in round_up_votes:
extra_votes = min([i for i in round_up_votes
if i > votes]) - votes
if extra_votes < min_votes and extra_votes <= voters_left:
lang_votes[i] += extra_votes
voters_left -= extra_votes
while voters_left >= min_votes:
lang_votes.append(min_votes)
voters_left -= min_votes
if voters_left > 0:
lang_votes.append(voters_left)
return get_percentage(num_voters, lang_votes)
# I/O Code
num_cases = int(input())
for case in range(1, num_cases + 1):
num_voters, num_lang = [int(i) for i in input().split()]
lang_votes = [int(i) for i in input().split()]
max_percentage = get_max_percentage(num_voters, lang_votes)
print("Case #{}: {}".format(case, max_percentage))
This seems to run to completion without any runtime errors when I test it locally (even using a separate Python 3.5.2 distribution which should be closer to what Google Codejam uses - they use 3.5.3).
I can't come up with any input that the Codejam problem could be generating that would cause the program to exit with an error.
What am I missing?
python python-3.x programming-challenge
python python-3.x programming-challenge
New contributor
New contributor
New contributor
asked 12 mins ago
Nikhil Mahajan
101
101
New contributor
New contributor
add a comment |
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Nikhil Mahajan is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210016%2fcodejam-2018-getting-confusing-runtime-error%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Nikhil Mahajan is a new contributor. Be nice, and check out our Code of Conduct.
Nikhil Mahajan is a new contributor. Be nice, and check out our Code of Conduct.
Nikhil Mahajan is a new contributor. Be nice, and check out our Code of Conduct.
Nikhil Mahajan is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210016%2fcodejam-2018-getting-confusing-runtime-error%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown