Assigning projects in order of priority
up vote
3
down vote
favorite
Let's assume we have the following situation:
- Multiple project topics exist, each corresponding to a natural number
n
, - students can sign in and choose two projects and give them either
priority_1
orpriority_2
, - The name and the time when they sign in is tracked as well.
With all of the information above assume you receive data in the from of a txt
-file looking like this
Martin 16:46:32 8 19
Alice 15:22:56 8 12
Alex 17:23:11 19 1
John 19:02:11 11 13
Phillip 19:03:11 11 13
Diego 15:23:57 14 5
Jack 16:46:45 8 3
where the columns represent the name
, time
, priority 1
and priority 2
in this order. You can assume that all of them signed in on the same day and students which signed in first have a higher priority in comparison to the others.
I wanted to write a program that takes this txt
-file as input and returns a txt
-file with output
Name Assigned Project
Alice 8
Diego 14
Martin 19
Jack 3
Alex 1
John 11
Phillip 13
The solution I came up with looks like this:
import numpy as np
dat = np.genfromtxt("data.txt", dtype="str")
class person:
def __init__(self, name, time, prio1, prio2):
self.name = name
sp = time.split(":")
t = sp[0]*3600 + sp[1]*60 + sp[2]
self.time = t
self.prio1 = prio1
self.prio2 = prio2
names = dat[:, 0]
time = dat[:, 1]
prio1 = dat[:, 2]
prio2 = dat[:, 3]
people =
for i,j,k,l in zip(names, time, prio1, prio2):
people.append(person(i,j,k,l))
people_sorted_time = sorted(people, key=lambda x: x.time)
for k in range(len(people_sorted_time)):
for j in range(k + 1, len(people_sorted_time)):
if people_sorted_time[k].prio1 == people_sorted_time[j].prio1:
people_sorted_time[j].prio1 = people_sorted_time[j].prio2
res = open("results","w")
res.write("Name"+"t"+"Assigned Project"+"n")
for k in range(len(people_sorted_time)):
res.write(people_sorted_time[k].name + "t"
+ people_sorted_time[k].prio1 + "n")
The code seems to work fine, but I'm not sure if I actually was able to take care of all edge-cases. I'm also not sure if this is really a efficient way to solve the problem, I rarely code stuff like that (mostly computational physics stuff), and would appreciate any kind of suggestions on how one could improve the code in general.
python python-3.x
New contributor
add a comment |
up vote
3
down vote
favorite
Let's assume we have the following situation:
- Multiple project topics exist, each corresponding to a natural number
n
, - students can sign in and choose two projects and give them either
priority_1
orpriority_2
, - The name and the time when they sign in is tracked as well.
With all of the information above assume you receive data in the from of a txt
-file looking like this
Martin 16:46:32 8 19
Alice 15:22:56 8 12
Alex 17:23:11 19 1
John 19:02:11 11 13
Phillip 19:03:11 11 13
Diego 15:23:57 14 5
Jack 16:46:45 8 3
where the columns represent the name
, time
, priority 1
and priority 2
in this order. You can assume that all of them signed in on the same day and students which signed in first have a higher priority in comparison to the others.
I wanted to write a program that takes this txt
-file as input and returns a txt
-file with output
Name Assigned Project
Alice 8
Diego 14
Martin 19
Jack 3
Alex 1
John 11
Phillip 13
The solution I came up with looks like this:
import numpy as np
dat = np.genfromtxt("data.txt", dtype="str")
class person:
def __init__(self, name, time, prio1, prio2):
self.name = name
sp = time.split(":")
t = sp[0]*3600 + sp[1]*60 + sp[2]
self.time = t
self.prio1 = prio1
self.prio2 = prio2
names = dat[:, 0]
time = dat[:, 1]
prio1 = dat[:, 2]
prio2 = dat[:, 3]
people =
for i,j,k,l in zip(names, time, prio1, prio2):
people.append(person(i,j,k,l))
people_sorted_time = sorted(people, key=lambda x: x.time)
for k in range(len(people_sorted_time)):
for j in range(k + 1, len(people_sorted_time)):
if people_sorted_time[k].prio1 == people_sorted_time[j].prio1:
people_sorted_time[j].prio1 = people_sorted_time[j].prio2
res = open("results","w")
res.write("Name"+"t"+"Assigned Project"+"n")
for k in range(len(people_sorted_time)):
res.write(people_sorted_time[k].name + "t"
+ people_sorted_time[k].prio1 + "n")
The code seems to work fine, but I'm not sure if I actually was able to take care of all edge-cases. I'm also not sure if this is really a efficient way to solve the problem, I rarely code stuff like that (mostly computational physics stuff), and would appreciate any kind of suggestions on how one could improve the code in general.
python python-3.x
New contributor
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
Let's assume we have the following situation:
- Multiple project topics exist, each corresponding to a natural number
n
, - students can sign in and choose two projects and give them either
priority_1
orpriority_2
, - The name and the time when they sign in is tracked as well.
With all of the information above assume you receive data in the from of a txt
-file looking like this
Martin 16:46:32 8 19
Alice 15:22:56 8 12
Alex 17:23:11 19 1
John 19:02:11 11 13
Phillip 19:03:11 11 13
Diego 15:23:57 14 5
Jack 16:46:45 8 3
where the columns represent the name
, time
, priority 1
and priority 2
in this order. You can assume that all of them signed in on the same day and students which signed in first have a higher priority in comparison to the others.
I wanted to write a program that takes this txt
-file as input and returns a txt
-file with output
Name Assigned Project
Alice 8
Diego 14
Martin 19
Jack 3
Alex 1
John 11
Phillip 13
The solution I came up with looks like this:
import numpy as np
dat = np.genfromtxt("data.txt", dtype="str")
class person:
def __init__(self, name, time, prio1, prio2):
self.name = name
sp = time.split(":")
t = sp[0]*3600 + sp[1]*60 + sp[2]
self.time = t
self.prio1 = prio1
self.prio2 = prio2
names = dat[:, 0]
time = dat[:, 1]
prio1 = dat[:, 2]
prio2 = dat[:, 3]
people =
for i,j,k,l in zip(names, time, prio1, prio2):
people.append(person(i,j,k,l))
people_sorted_time = sorted(people, key=lambda x: x.time)
for k in range(len(people_sorted_time)):
for j in range(k + 1, len(people_sorted_time)):
if people_sorted_time[k].prio1 == people_sorted_time[j].prio1:
people_sorted_time[j].prio1 = people_sorted_time[j].prio2
res = open("results","w")
res.write("Name"+"t"+"Assigned Project"+"n")
for k in range(len(people_sorted_time)):
res.write(people_sorted_time[k].name + "t"
+ people_sorted_time[k].prio1 + "n")
The code seems to work fine, but I'm not sure if I actually was able to take care of all edge-cases. I'm also not sure if this is really a efficient way to solve the problem, I rarely code stuff like that (mostly computational physics stuff), and would appreciate any kind of suggestions on how one could improve the code in general.
python python-3.x
New contributor
Let's assume we have the following situation:
- Multiple project topics exist, each corresponding to a natural number
n
, - students can sign in and choose two projects and give them either
priority_1
orpriority_2
, - The name and the time when they sign in is tracked as well.
With all of the information above assume you receive data in the from of a txt
-file looking like this
Martin 16:46:32 8 19
Alice 15:22:56 8 12
Alex 17:23:11 19 1
John 19:02:11 11 13
Phillip 19:03:11 11 13
Diego 15:23:57 14 5
Jack 16:46:45 8 3
where the columns represent the name
, time
, priority 1
and priority 2
in this order. You can assume that all of them signed in on the same day and students which signed in first have a higher priority in comparison to the others.
I wanted to write a program that takes this txt
-file as input and returns a txt
-file with output
Name Assigned Project
Alice 8
Diego 14
Martin 19
Jack 3
Alex 1
John 11
Phillip 13
The solution I came up with looks like this:
import numpy as np
dat = np.genfromtxt("data.txt", dtype="str")
class person:
def __init__(self, name, time, prio1, prio2):
self.name = name
sp = time.split(":")
t = sp[0]*3600 + sp[1]*60 + sp[2]
self.time = t
self.prio1 = prio1
self.prio2 = prio2
names = dat[:, 0]
time = dat[:, 1]
prio1 = dat[:, 2]
prio2 = dat[:, 3]
people =
for i,j,k,l in zip(names, time, prio1, prio2):
people.append(person(i,j,k,l))
people_sorted_time = sorted(people, key=lambda x: x.time)
for k in range(len(people_sorted_time)):
for j in range(k + 1, len(people_sorted_time)):
if people_sorted_time[k].prio1 == people_sorted_time[j].prio1:
people_sorted_time[j].prio1 = people_sorted_time[j].prio2
res = open("results","w")
res.write("Name"+"t"+"Assigned Project"+"n")
for k in range(len(people_sorted_time)):
res.write(people_sorted_time[k].name + "t"
+ people_sorted_time[k].prio1 + "n")
The code seems to work fine, but I'm not sure if I actually was able to take care of all edge-cases. I'm also not sure if this is really a efficient way to solve the problem, I rarely code stuff like that (mostly computational physics stuff), and would appreciate any kind of suggestions on how one could improve the code in general.
python python-3.x
python python-3.x
New contributor
New contributor
New contributor
asked 1 hour ago
Sito
1162
1162
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',
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
});
}
});
Sito 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%2f209729%2fassigning-projects-in-order-of-priority%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sito is a new contributor. Be nice, and check out our Code of Conduct.
Sito is a new contributor. Be nice, and check out our Code of Conduct.
Sito is a new contributor. Be nice, and check out our Code of Conduct.
Sito 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%2f209729%2fassigning-projects-in-order-of-priority%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