First non-repeating letter
up vote
5
down vote
favorite
The problem: find and return the first nonrepeating character in a string, if the string does not have a nonrepeating character return an empty string. For purposes of finding the nonrepeating character it's case insensitive so 't' and 'T' appearing in the string would imply that that 't' and 'T' are not candidates for a nonrepeating character. When you return the character you must return it as its original case.
My Solution:
def non_repeat(_str):
counts = {}
for pos, letter in enumerate(_str.lower()):
if letter not in counts:
counts[letter] = (0, pos)
incr_val = counts[letter][0] + 1
counts[letter] = (incr_val, pos)
for letter in _str.lower():
if counts[letter][0] == 1:
return _str[counts[letter][1]]
return ''
How can I improve the readability of my solution? In particular, I don't like:
counts[letter][0]
because the 0 index is a bit ambiguous.- calculating the incremented value as another line,
incr_val
; it'd be nice to do the incrementing and updating of the dict in one line.
Anything else you could make more readable? I should add that I'm aware of collections.Counter
; for this solution I'd like to avoid using it.
python python-3.x
add a comment |
up vote
5
down vote
favorite
The problem: find and return the first nonrepeating character in a string, if the string does not have a nonrepeating character return an empty string. For purposes of finding the nonrepeating character it's case insensitive so 't' and 'T' appearing in the string would imply that that 't' and 'T' are not candidates for a nonrepeating character. When you return the character you must return it as its original case.
My Solution:
def non_repeat(_str):
counts = {}
for pos, letter in enumerate(_str.lower()):
if letter not in counts:
counts[letter] = (0, pos)
incr_val = counts[letter][0] + 1
counts[letter] = (incr_val, pos)
for letter in _str.lower():
if counts[letter][0] == 1:
return _str[counts[letter][1]]
return ''
How can I improve the readability of my solution? In particular, I don't like:
counts[letter][0]
because the 0 index is a bit ambiguous.- calculating the incremented value as another line,
incr_val
; it'd be nice to do the incrementing and updating of the dict in one line.
Anything else you could make more readable? I should add that I'm aware of collections.Counter
; for this solution I'd like to avoid using it.
python python-3.x
4
I rolled back your last edit. After getting an answer you are not allowed to change your code anymore. This is to ensure that answers do not get invalidated and have to hit a moving target. If you have changed your code you can either post it as an answer (if it would constitute a code review) or ask a new question with your changed code (linking back to this one as reference). Refer to this post for more information
– Sᴀᴍ Onᴇᴌᴀ
1 hour ago
add a comment |
up vote
5
down vote
favorite
up vote
5
down vote
favorite
The problem: find and return the first nonrepeating character in a string, if the string does not have a nonrepeating character return an empty string. For purposes of finding the nonrepeating character it's case insensitive so 't' and 'T' appearing in the string would imply that that 't' and 'T' are not candidates for a nonrepeating character. When you return the character you must return it as its original case.
My Solution:
def non_repeat(_str):
counts = {}
for pos, letter in enumerate(_str.lower()):
if letter not in counts:
counts[letter] = (0, pos)
incr_val = counts[letter][0] + 1
counts[letter] = (incr_val, pos)
for letter in _str.lower():
if counts[letter][0] == 1:
return _str[counts[letter][1]]
return ''
How can I improve the readability of my solution? In particular, I don't like:
counts[letter][0]
because the 0 index is a bit ambiguous.- calculating the incremented value as another line,
incr_val
; it'd be nice to do the incrementing and updating of the dict in one line.
Anything else you could make more readable? I should add that I'm aware of collections.Counter
; for this solution I'd like to avoid using it.
python python-3.x
The problem: find and return the first nonrepeating character in a string, if the string does not have a nonrepeating character return an empty string. For purposes of finding the nonrepeating character it's case insensitive so 't' and 'T' appearing in the string would imply that that 't' and 'T' are not candidates for a nonrepeating character. When you return the character you must return it as its original case.
My Solution:
def non_repeat(_str):
counts = {}
for pos, letter in enumerate(_str.lower()):
if letter not in counts:
counts[letter] = (0, pos)
incr_val = counts[letter][0] + 1
counts[letter] = (incr_val, pos)
for letter in _str.lower():
if counts[letter][0] == 1:
return _str[counts[letter][1]]
return ''
How can I improve the readability of my solution? In particular, I don't like:
counts[letter][0]
because the 0 index is a bit ambiguous.- calculating the incremented value as another line,
incr_val
; it'd be nice to do the incrementing and updating of the dict in one line.
Anything else you could make more readable? I should add that I'm aware of collections.Counter
; for this solution I'd like to avoid using it.
python python-3.x
python python-3.x
edited 57 mins ago
Toby Speight
23.2k638110
23.2k638110
asked 2 hours ago
Kevin S
785
785
4
I rolled back your last edit. After getting an answer you are not allowed to change your code anymore. This is to ensure that answers do not get invalidated and have to hit a moving target. If you have changed your code you can either post it as an answer (if it would constitute a code review) or ask a new question with your changed code (linking back to this one as reference). Refer to this post for more information
– Sᴀᴍ Onᴇᴌᴀ
1 hour ago
add a comment |
4
I rolled back your last edit. After getting an answer you are not allowed to change your code anymore. This is to ensure that answers do not get invalidated and have to hit a moving target. If you have changed your code you can either post it as an answer (if it would constitute a code review) or ask a new question with your changed code (linking back to this one as reference). Refer to this post for more information
– Sᴀᴍ Onᴇᴌᴀ
1 hour ago
4
4
I rolled back your last edit. After getting an answer you are not allowed to change your code anymore. This is to ensure that answers do not get invalidated and have to hit a moving target. If you have changed your code you can either post it as an answer (if it would constitute a code review) or ask a new question with your changed code (linking back to this one as reference). Refer to this post for more information
– Sᴀᴍ Onᴇᴌᴀ
1 hour ago
I rolled back your last edit. After getting an answer you are not allowed to change your code anymore. This is to ensure that answers do not get invalidated and have to hit a moving target. If you have changed your code you can either post it as an answer (if it would constitute a code review) or ask a new question with your changed code (linking back to this one as reference). Refer to this post for more information
– Sᴀᴍ Onᴇᴌᴀ
1 hour ago
add a comment |
2 Answers
2
active
oldest
votes
up vote
4
down vote
accepted
I would separate counting from keeping the initial positions. This would allow to use collections.defaultdict
for counting and simplify the code and contribute to readability:
from collections import defaultdict
def non_repeat(input_string):
counts = defaultdict(int)
positions = {}
for position, letter in enumerate(input_string.lower()):
counts[letter] += 1
positions[letter] = position
for letter in input_string.lower():
if counts[letter] == 1:
return input_string[positions[letter]]
return ''
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
@KevinS well, I think theinitial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?
– alecxe
1 hour ago
1
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
1
@KevinS yeah, this means that we don't really need theif letter not in initial_positions
check.
– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into thecounts
values to avoid storing positions separately inpositions
.
– alecxe
1 hour ago
|
show 1 more comment
up vote
3
down vote
Going further from alecxe's answer:
- you could use the Counter collections instead of performing the counting yourself - I didn't see that this was avoided on purpose.
- you can ensure
lower
is called only once
You'd get something like:
from collections import Counter
def non_repeat(input_string):
lower = input_string.lower()
count = Counter(lower)
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
or, for a Counter-less solution:
def non_repeat(input_string):
lower = input_string.lower()
count = defaultdict(int)
for c in lower:
count[c] += 1
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
Also, here's a quick test suite I wrote:
tests = [
('', ''),
('AA', ''),
('AAABBB', ''),
('AAABBBc', 'c'),
('azerty', 'a'),
('aazzeerty', 'r'),
('azerAZERty', 't'),
]
for inp, out in tests:
assert non_repeat(inp) == out
1
The question did specifically state that Kevin is avoidingcollections.Counter
, so that's not such a helpful suggestion. The rest makes sense.
– Toby Speight
54 mins ago
1
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
add a comment |
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
});
}
});
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%2f209622%2ffirst-non-repeating-letter%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
accepted
I would separate counting from keeping the initial positions. This would allow to use collections.defaultdict
for counting and simplify the code and contribute to readability:
from collections import defaultdict
def non_repeat(input_string):
counts = defaultdict(int)
positions = {}
for position, letter in enumerate(input_string.lower()):
counts[letter] += 1
positions[letter] = position
for letter in input_string.lower():
if counts[letter] == 1:
return input_string[positions[letter]]
return ''
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
@KevinS well, I think theinitial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?
– alecxe
1 hour ago
1
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
1
@KevinS yeah, this means that we don't really need theif letter not in initial_positions
check.
– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into thecounts
values to avoid storing positions separately inpositions
.
– alecxe
1 hour ago
|
show 1 more comment
up vote
4
down vote
accepted
I would separate counting from keeping the initial positions. This would allow to use collections.defaultdict
for counting and simplify the code and contribute to readability:
from collections import defaultdict
def non_repeat(input_string):
counts = defaultdict(int)
positions = {}
for position, letter in enumerate(input_string.lower()):
counts[letter] += 1
positions[letter] = position
for letter in input_string.lower():
if counts[letter] == 1:
return input_string[positions[letter]]
return ''
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
@KevinS well, I think theinitial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?
– alecxe
1 hour ago
1
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
1
@KevinS yeah, this means that we don't really need theif letter not in initial_positions
check.
– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into thecounts
values to avoid storing positions separately inpositions
.
– alecxe
1 hour ago
|
show 1 more comment
up vote
4
down vote
accepted
up vote
4
down vote
accepted
I would separate counting from keeping the initial positions. This would allow to use collections.defaultdict
for counting and simplify the code and contribute to readability:
from collections import defaultdict
def non_repeat(input_string):
counts = defaultdict(int)
positions = {}
for position, letter in enumerate(input_string.lower()):
counts[letter] += 1
positions[letter] = position
for letter in input_string.lower():
if counts[letter] == 1:
return input_string[positions[letter]]
return ''
I would separate counting from keeping the initial positions. This would allow to use collections.defaultdict
for counting and simplify the code and contribute to readability:
from collections import defaultdict
def non_repeat(input_string):
counts = defaultdict(int)
positions = {}
for position, letter in enumerate(input_string.lower()):
counts[letter] += 1
positions[letter] = position
for letter in input_string.lower():
if counts[letter] == 1:
return input_string[positions[letter]]
return ''
edited 1 hour ago
answered 2 hours ago
alecxe
14.5k53277
14.5k53277
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
@KevinS well, I think theinitial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?
– alecxe
1 hour ago
1
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
1
@KevinS yeah, this means that we don't really need theif letter not in initial_positions
check.
– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into thecounts
values to avoid storing positions separately inpositions
.
– alecxe
1 hour ago
|
show 1 more comment
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
@KevinS well, I think theinitial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?
– alecxe
1 hour ago
1
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
1
@KevinS yeah, this means that we don't really need theif letter not in initial_positions
check.
– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into thecounts
values to avoid storing positions separately inpositions
.
– alecxe
1 hour ago
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
I think you're on the right track. What if a defaultdict(int) was also used for initial_positions? This simplifies your line "if letter not in initial_positions".
– Kevin S
2 hours ago
@KevinS well, I think the
initial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?– alecxe
1 hour ago
@KevinS well, I think the
initial_positions
has to stay as a regular dictionary as we are only recording the first position of the letter, right?– alecxe
1 hour ago
1
1
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
We only care about characters that have one occurrence, and in particular we only care about the first character that has one occurrence. As a result the initial position for the character we care about will be correct, the others won't, but we don't care that they're not accurate, they're not what we're after
– Kevin S
1 hour ago
1
1
@KevinS yeah, this means that we don't really need the
if letter not in initial_positions
check.– alecxe
1 hour ago
@KevinS yeah, this means that we don't really need the
if letter not in initial_positions
check.– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into the
counts
values to avoid storing positions separately in positions
.– alecxe
1 hour ago
@KevinS readability wise, I think we are at a good stage. We might though save on memory and think of encoding the position into the
counts
values to avoid storing positions separately in positions
.– alecxe
1 hour ago
|
show 1 more comment
up vote
3
down vote
Going further from alecxe's answer:
- you could use the Counter collections instead of performing the counting yourself - I didn't see that this was avoided on purpose.
- you can ensure
lower
is called only once
You'd get something like:
from collections import Counter
def non_repeat(input_string):
lower = input_string.lower()
count = Counter(lower)
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
or, for a Counter-less solution:
def non_repeat(input_string):
lower = input_string.lower()
count = defaultdict(int)
for c in lower:
count[c] += 1
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
Also, here's a quick test suite I wrote:
tests = [
('', ''),
('AA', ''),
('AAABBB', ''),
('AAABBBc', 'c'),
('azerty', 'a'),
('aazzeerty', 'r'),
('azerAZERty', 't'),
]
for inp, out in tests:
assert non_repeat(inp) == out
1
The question did specifically state that Kevin is avoidingcollections.Counter
, so that's not such a helpful suggestion. The rest makes sense.
– Toby Speight
54 mins ago
1
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
add a comment |
up vote
3
down vote
Going further from alecxe's answer:
- you could use the Counter collections instead of performing the counting yourself - I didn't see that this was avoided on purpose.
- you can ensure
lower
is called only once
You'd get something like:
from collections import Counter
def non_repeat(input_string):
lower = input_string.lower()
count = Counter(lower)
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
or, for a Counter-less solution:
def non_repeat(input_string):
lower = input_string.lower()
count = defaultdict(int)
for c in lower:
count[c] += 1
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
Also, here's a quick test suite I wrote:
tests = [
('', ''),
('AA', ''),
('AAABBB', ''),
('AAABBBc', 'c'),
('azerty', 'a'),
('aazzeerty', 'r'),
('azerAZERty', 't'),
]
for inp, out in tests:
assert non_repeat(inp) == out
1
The question did specifically state that Kevin is avoidingcollections.Counter
, so that's not such a helpful suggestion. The rest makes sense.
– Toby Speight
54 mins ago
1
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
add a comment |
up vote
3
down vote
up vote
3
down vote
Going further from alecxe's answer:
- you could use the Counter collections instead of performing the counting yourself - I didn't see that this was avoided on purpose.
- you can ensure
lower
is called only once
You'd get something like:
from collections import Counter
def non_repeat(input_string):
lower = input_string.lower()
count = Counter(lower)
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
or, for a Counter-less solution:
def non_repeat(input_string):
lower = input_string.lower()
count = defaultdict(int)
for c in lower:
count[c] += 1
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
Also, here's a quick test suite I wrote:
tests = [
('', ''),
('AA', ''),
('AAABBB', ''),
('AAABBBc', 'c'),
('azerty', 'a'),
('aazzeerty', 'r'),
('azerAZERty', 't'),
]
for inp, out in tests:
assert non_repeat(inp) == out
Going further from alecxe's answer:
- you could use the Counter collections instead of performing the counting yourself - I didn't see that this was avoided on purpose.
- you can ensure
lower
is called only once
You'd get something like:
from collections import Counter
def non_repeat(input_string):
lower = input_string.lower()
count = Counter(lower)
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
or, for a Counter-less solution:
def non_repeat(input_string):
lower = input_string.lower()
count = defaultdict(int)
for c in lower:
count[c] += 1
for c, l in zip(input_string, lower):
if count[l] == 1:
return c
return ''
Also, here's a quick test suite I wrote:
tests = [
('', ''),
('AA', ''),
('AAABBB', ''),
('AAABBBc', 'c'),
('azerty', 'a'),
('aazzeerty', 'r'),
('azerAZERty', 't'),
]
for inp, out in tests:
assert non_repeat(inp) == out
edited 43 mins ago
answered 59 mins ago
Josay
24.6k13783
24.6k13783
1
The question did specifically state that Kevin is avoidingcollections.Counter
, so that's not such a helpful suggestion. The rest makes sense.
– Toby Speight
54 mins ago
1
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
add a comment |
1
The question did specifically state that Kevin is avoidingcollections.Counter
, so that's not such a helpful suggestion. The rest makes sense.
– Toby Speight
54 mins ago
1
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
1
1
The question did specifically state that Kevin is avoiding
collections.Counter
, so that's not such a helpful suggestion. The rest makes sense.– Toby Speight
54 mins ago
The question did specifically state that Kevin is avoiding
collections.Counter
, so that's not such a helpful suggestion. The rest makes sense.– Toby Speight
54 mins ago
1
1
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
@TobySpeight Thanks for spotting this, I completely missed in the the original question. I've updated my answer accordingly but it is not that relevant anymore :)
– Josay
42 mins ago
add a comment |
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%2f209622%2ffirst-non-repeating-letter%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
4
I rolled back your last edit. After getting an answer you are not allowed to change your code anymore. This is to ensure that answers do not get invalidated and have to hit a moving target. If you have changed your code you can either post it as an answer (if it would constitute a code review) or ask a new question with your changed code (linking back to this one as reference). Refer to this post for more information
– Sᴀᴍ Onᴇᴌᴀ
1 hour ago