Increment each digit in a number to form a new number
$begingroup$
Today I've found /r/dailyprogrammer and I've solved an easy challenge. I'm new to coding and I'm not sure if this is good way to solve this kind of problems. Could you, please, give me some hints? How to make my code more clear and readable? Thanks!
Challange description:
A number is input in computer then a new no should get printed by
adding one to each of its digit. If you encounter a 9, insert a 10
(don't carry over, just shift things around).
For example, 998 becomes 10109.
Bonus
This challenge is trivial to do if you map it to a string to iterate
over the input, operate, and then cast it back. Instead, try doing it
without casting it as a string at any point, keep it numeric (int,
float if you need it) only.
private static int Challange(int number)
{
int digits = (int)Math.Log10(number); //this is number of digits -1
int result = 0;
for (int i=0; i <= digits; i++)
{
int tens = (int)(Math.Pow(10, digits - i));
int currentDigit = ((number / tens) % 10);
if (currentDigit == 9) result *= 10;
result += (currentDigit + 1) * tens;
}
return result;
}
c# programming-challenge
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
add a comment |
$begingroup$
Today I've found /r/dailyprogrammer and I've solved an easy challenge. I'm new to coding and I'm not sure if this is good way to solve this kind of problems. Could you, please, give me some hints? How to make my code more clear and readable? Thanks!
Challange description:
A number is input in computer then a new no should get printed by
adding one to each of its digit. If you encounter a 9, insert a 10
(don't carry over, just shift things around).
For example, 998 becomes 10109.
Bonus
This challenge is trivial to do if you map it to a string to iterate
over the input, operate, and then cast it back. Instead, try doing it
without casting it as a string at any point, keep it numeric (int,
float if you need it) only.
private static int Challange(int number)
{
int digits = (int)Math.Log10(number); //this is number of digits -1
int result = 0;
for (int i=0; i <= digits; i++)
{
int tens = (int)(Math.Pow(10, digits - i));
int currentDigit = ((number / tens) % 10);
if (currentDigit == 9) result *= 10;
result += (currentDigit + 1) * tens;
}
return result;
}
c# programming-challenge
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
add a comment |
$begingroup$
Today I've found /r/dailyprogrammer and I've solved an easy challenge. I'm new to coding and I'm not sure if this is good way to solve this kind of problems. Could you, please, give me some hints? How to make my code more clear and readable? Thanks!
Challange description:
A number is input in computer then a new no should get printed by
adding one to each of its digit. If you encounter a 9, insert a 10
(don't carry over, just shift things around).
For example, 998 becomes 10109.
Bonus
This challenge is trivial to do if you map it to a string to iterate
over the input, operate, and then cast it back. Instead, try doing it
without casting it as a string at any point, keep it numeric (int,
float if you need it) only.
private static int Challange(int number)
{
int digits = (int)Math.Log10(number); //this is number of digits -1
int result = 0;
for (int i=0; i <= digits; i++)
{
int tens = (int)(Math.Pow(10, digits - i));
int currentDigit = ((number / tens) % 10);
if (currentDigit == 9) result *= 10;
result += (currentDigit + 1) * tens;
}
return result;
}
c# programming-challenge
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
Today I've found /r/dailyprogrammer and I've solved an easy challenge. I'm new to coding and I'm not sure if this is good way to solve this kind of problems. Could you, please, give me some hints? How to make my code more clear and readable? Thanks!
Challange description:
A number is input in computer then a new no should get printed by
adding one to each of its digit. If you encounter a 9, insert a 10
(don't carry over, just shift things around).
For example, 998 becomes 10109.
Bonus
This challenge is trivial to do if you map it to a string to iterate
over the input, operate, and then cast it back. Instead, try doing it
without casting it as a string at any point, keep it numeric (int,
float if you need it) only.
private static int Challange(int number)
{
int digits = (int)Math.Log10(number); //this is number of digits -1
int result = 0;
for (int i=0; i <= digits; i++)
{
int tens = (int)(Math.Pow(10, digits - i));
int currentDigit = ((number / tens) % 10);
if (currentDigit == 9) result *= 10;
result += (currentDigit + 1) * tens;
}
return result;
}
c# programming-challenge
c# programming-challenge
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited 2 hours ago
t3chb0t
34.7k750121
34.7k750121
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 2 hours ago
nowakasdnowakasd
162
162
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
nowakasd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
It works, but it's a bit tricky to follow the logic and work out why. If you work from the other end then you can avoid the Log and Pow and shifting the partial result, and I find that easier to read.
Challange is not a descriptive name. What does the method do? IncrementDigits might be a better name, for example.
$endgroup$
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',
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
});
}
});
nowakasd 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%2f214403%2fincrement-each-digit-in-a-number-to-form-a-new-number%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
It works, but it's a bit tricky to follow the logic and work out why. If you work from the other end then you can avoid the Log and Pow and shifting the partial result, and I find that easier to read.
Challange is not a descriptive name. What does the method do? IncrementDigits might be a better name, for example.
$endgroup$
add a comment |
$begingroup$
It works, but it's a bit tricky to follow the logic and work out why. If you work from the other end then you can avoid the Log and Pow and shifting the partial result, and I find that easier to read.
Challange is not a descriptive name. What does the method do? IncrementDigits might be a better name, for example.
$endgroup$
add a comment |
$begingroup$
It works, but it's a bit tricky to follow the logic and work out why. If you work from the other end then you can avoid the Log and Pow and shifting the partial result, and I find that easier to read.
Challange is not a descriptive name. What does the method do? IncrementDigits might be a better name, for example.
$endgroup$
It works, but it's a bit tricky to follow the logic and work out why. If you work from the other end then you can avoid the Log and Pow and shifting the partial result, and I find that easier to read.
Challange is not a descriptive name. What does the method do? IncrementDigits might be a better name, for example.
answered 2 hours ago
Peter TaylorPeter Taylor
17.4k2862
17.4k2862
add a comment |
add a comment |
nowakasd is a new contributor. Be nice, and check out our Code of Conduct.
nowakasd is a new contributor. Be nice, and check out our Code of Conduct.
nowakasd is a new contributor. Be nice, and check out our Code of Conduct.
nowakasd 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.
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%2f214403%2fincrement-each-digit-in-a-number-to-form-a-new-number%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