Just Twice Is Nice
Clash Royale CLAN TAG#URR8PPP
Let's have string multiplication to take a string and a positive number and concatenate that string that many times. In Haskell:
0 * s = ""
n * s = s ++ ((n - 1) * s)
Your task is to write a program that outputs a number $n > 0$. When you double your program (with the described procedure) the new program should output $2n$. When your program is tripled or quadrupled it should once again output the original $n$.
This is code-golf so your answers will be scored in bytes with fewer bytes being better.
Related, Related.
code-golf source-layout
add a comment |
Let's have string multiplication to take a string and a positive number and concatenate that string that many times. In Haskell:
0 * s = ""
n * s = s ++ ((n - 1) * s)
Your task is to write a program that outputs a number $n > 0$. When you double your program (with the described procedure) the new program should output $2n$. When your program is tripled or quadrupled it should once again output the original $n$.
This is code-golf so your answers will be scored in bytes with fewer bytes being better.
Related, Related.
code-golf source-layout
5
All the solutions so far are trivial modifications of solutions to existing challenges so I wouldn't be surprised to see this dupe-hammered by someone.
– Shaggy
Dec 20 '18 at 22:14
@Shaggy I disagree. For some the best approach is from the 3rd times the charm from some its the doubling, for some still (klein, lost etc.) a port wouldn't even work.
– Wît Wisarhd
Dec 24 '18 at 22:03
add a comment |
Let's have string multiplication to take a string and a positive number and concatenate that string that many times. In Haskell:
0 * s = ""
n * s = s ++ ((n - 1) * s)
Your task is to write a program that outputs a number $n > 0$. When you double your program (with the described procedure) the new program should output $2n$. When your program is tripled or quadrupled it should once again output the original $n$.
This is code-golf so your answers will be scored in bytes with fewer bytes being better.
Related, Related.
code-golf source-layout
Let's have string multiplication to take a string and a positive number and concatenate that string that many times. In Haskell:
0 * s = ""
n * s = s ++ ((n - 1) * s)
Your task is to write a program that outputs a number $n > 0$. When you double your program (with the described procedure) the new program should output $2n$. When your program is tripled or quadrupled it should once again output the original $n$.
This is code-golf so your answers will be scored in bytes with fewer bytes being better.
Related, Related.
code-golf source-layout
code-golf source-layout
asked Dec 20 '18 at 21:03
Wît Wisarhd
34k10156365
34k10156365
5
All the solutions so far are trivial modifications of solutions to existing challenges so I wouldn't be surprised to see this dupe-hammered by someone.
– Shaggy
Dec 20 '18 at 22:14
@Shaggy I disagree. For some the best approach is from the 3rd times the charm from some its the doubling, for some still (klein, lost etc.) a port wouldn't even work.
– Wît Wisarhd
Dec 24 '18 at 22:03
add a comment |
5
All the solutions so far are trivial modifications of solutions to existing challenges so I wouldn't be surprised to see this dupe-hammered by someone.
– Shaggy
Dec 20 '18 at 22:14
@Shaggy I disagree. For some the best approach is from the 3rd times the charm from some its the doubling, for some still (klein, lost etc.) a port wouldn't even work.
– Wît Wisarhd
Dec 24 '18 at 22:03
5
5
All the solutions so far are trivial modifications of solutions to existing challenges so I wouldn't be surprised to see this dupe-hammered by someone.
– Shaggy
Dec 20 '18 at 22:14
All the solutions so far are trivial modifications of solutions to existing challenges so I wouldn't be surprised to see this dupe-hammered by someone.
– Shaggy
Dec 20 '18 at 22:14
@Shaggy I disagree. For some the best approach is from the 3rd times the charm from some its the doubling, for some still (klein, lost etc.) a port wouldn't even work.
– Wît Wisarhd
Dec 24 '18 at 22:03
@Shaggy I disagree. For some the best approach is from the 3rd times the charm from some its the doubling, for some still (klein, lost etc.) a port wouldn't even work.
– Wît Wisarhd
Dec 24 '18 at 22:03
add a comment |
7 Answers
7
active
oldest
votes
Python 2, 9 bytes
Outputs via exit code. Full credit goes to Anders Kaseorg for this answer to I double the source, you double the output!.
';exit(2)
Try it online! | Doubled | Tripled | Quadrupled
Regularly, this raises a Syntax Error because the string is not closed properly and exists with exit code 1, then, when doubled, it becomes ';exit(2)';exit(2)
which simply exits with code 2 because the string literal is now quoted properly and has no effect at all, and when repeated any other arbitrary number of times, it raises Syntax Errors.
add a comment |
R, 27 25 bytes
1+!1-length(readLines())
Try it online!
Inspired by rturnbull's answer to Third time the charm, but the simplicity of the check makes it shorter.
Doubled | Tripled | Quadrupled
Why this works:
readLines()
will actually reads the source file itself rather than stdin
. Hence, adding lines just increments the length()
of the vector returned by readLines()
. Therefore, we compute !(1-length())
to obtain 1
whenever length()==1
and 0
when length()!=1
, adding one to have the desired effect.
add a comment |
Runic Enchantments, 29 bytes
^w '
/1@ 3
/ ~!4
2'51w
/yyy
Try it online!
Slight alteration from the Third Times A Charm entry, using Jo King's compressed version and swapping the two reflection locations.
Twice
Thrice
And frice for good measure.
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such asπ
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).
– Draco18s
Dec 25 '18 at 2:10
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
add a comment |
Klein 000, 6 bytes
1+@
Try it online!
Explanation
The idea here is pretty simple, the first 2 copies require the ip to move off the edge of the program but the third does not, that way adding anything extra after the third doesn't change anything.
The first program reflects off of both edges the
At the begining is just a fancy noop. So we just run 1+@
.
For the two copies this gets interrupted
1+@
\1+@
We hit both 1
s and a +
to get 2
.
On the three we interrupt the path even further
1+@
\1+@
\1+@
At this point it might not be the clearest, but the ip bounces around in the mirrors a bit before it hits runs the 3rd line.
This is what it runs
\
1+@
Since this doesn't go off an edge further additions don't make any change to the program.
add a comment |
Charcoal, 10 bytes
PI⊕⁼²L⊞Oυω
Try it online! Based on my answer to I double the source, you double the output! but compares the length to 2. Try it doubled. Try it tripled. Try it quadrupled. In verbose syntax this is Multiprint(Cast(Incremented(Equals(2, Length(PushOperator(u, w)))))));
.
add a comment |
MATL, 9 bytes
vxHQXH4=Q
Uses n = 1.
Try it online! Original, doubled, tripled, quadrupled.
Explanation
This uses clipboard H to store state information. Function H
pastes the clipboard contents onto the stack. Function XH
copies the top of the stack into the clipboard. The clipboard initially contains the number 2
.
Each time the snippet vxHQXH4=Q
is run it does the following.
The stack contents, if any, are deleted (vx
). The clipboard contents are pushed (H
) and incremented (Q
), and the result is copied back into the clipboard (XH
). This gives 4
the second time, and only that time.
The number in the stack is tested for equality with 4
(4=
) and incremented (Q
). This gives 2
for 4
(second time), and 1
otherwise (any other time).
add a comment |
05AB1E, 7 6 bytes, n=3
₆.g2Qè
Try it online; try it doubled; try it tripled; try it quadrupled.
Explanation:
₆ # Push 36
.g # Push the amount of items on the stack
2Q # Check if that amount is equal to 2 (results in 1 if truthy; 0 if falsey)
è # Index that into the 36 (and output the top of the stack implicitly)
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: "200"
;
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
);
);
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%2fcodegolf.stackexchange.com%2fquestions%2f177881%2fjust-twice-is-nice%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
7 Answers
7
active
oldest
votes
7 Answers
7
active
oldest
votes
active
oldest
votes
active
oldest
votes
Python 2, 9 bytes
Outputs via exit code. Full credit goes to Anders Kaseorg for this answer to I double the source, you double the output!.
';exit(2)
Try it online! | Doubled | Tripled | Quadrupled
Regularly, this raises a Syntax Error because the string is not closed properly and exists with exit code 1, then, when doubled, it becomes ';exit(2)';exit(2)
which simply exits with code 2 because the string literal is now quoted properly and has no effect at all, and when repeated any other arbitrary number of times, it raises Syntax Errors.
add a comment |
Python 2, 9 bytes
Outputs via exit code. Full credit goes to Anders Kaseorg for this answer to I double the source, you double the output!.
';exit(2)
Try it online! | Doubled | Tripled | Quadrupled
Regularly, this raises a Syntax Error because the string is not closed properly and exists with exit code 1, then, when doubled, it becomes ';exit(2)';exit(2)
which simply exits with code 2 because the string literal is now quoted properly and has no effect at all, and when repeated any other arbitrary number of times, it raises Syntax Errors.
add a comment |
Python 2, 9 bytes
Outputs via exit code. Full credit goes to Anders Kaseorg for this answer to I double the source, you double the output!.
';exit(2)
Try it online! | Doubled | Tripled | Quadrupled
Regularly, this raises a Syntax Error because the string is not closed properly and exists with exit code 1, then, when doubled, it becomes ';exit(2)';exit(2)
which simply exits with code 2 because the string literal is now quoted properly and has no effect at all, and when repeated any other arbitrary number of times, it raises Syntax Errors.
Python 2, 9 bytes
Outputs via exit code. Full credit goes to Anders Kaseorg for this answer to I double the source, you double the output!.
';exit(2)
Try it online! | Doubled | Tripled | Quadrupled
Regularly, this raises a Syntax Error because the string is not closed properly and exists with exit code 1, then, when doubled, it becomes ';exit(2)';exit(2)
which simply exits with code 2 because the string literal is now quoted properly and has no effect at all, and when repeated any other arbitrary number of times, it raises Syntax Errors.
answered Dec 20 '18 at 21:29
Mr. Xcoder
31.6k759198
31.6k759198
add a comment |
add a comment |
R, 27 25 bytes
1+!1-length(readLines())
Try it online!
Inspired by rturnbull's answer to Third time the charm, but the simplicity of the check makes it shorter.
Doubled | Tripled | Quadrupled
Why this works:
readLines()
will actually reads the source file itself rather than stdin
. Hence, adding lines just increments the length()
of the vector returned by readLines()
. Therefore, we compute !(1-length())
to obtain 1
whenever length()==1
and 0
when length()!=1
, adding one to have the desired effect.
add a comment |
R, 27 25 bytes
1+!1-length(readLines())
Try it online!
Inspired by rturnbull's answer to Third time the charm, but the simplicity of the check makes it shorter.
Doubled | Tripled | Quadrupled
Why this works:
readLines()
will actually reads the source file itself rather than stdin
. Hence, adding lines just increments the length()
of the vector returned by readLines()
. Therefore, we compute !(1-length())
to obtain 1
whenever length()==1
and 0
when length()!=1
, adding one to have the desired effect.
add a comment |
R, 27 25 bytes
1+!1-length(readLines())
Try it online!
Inspired by rturnbull's answer to Third time the charm, but the simplicity of the check makes it shorter.
Doubled | Tripled | Quadrupled
Why this works:
readLines()
will actually reads the source file itself rather than stdin
. Hence, adding lines just increments the length()
of the vector returned by readLines()
. Therefore, we compute !(1-length())
to obtain 1
whenever length()==1
and 0
when length()!=1
, adding one to have the desired effect.
R, 27 25 bytes
1+!1-length(readLines())
Try it online!
Inspired by rturnbull's answer to Third time the charm, but the simplicity of the check makes it shorter.
Doubled | Tripled | Quadrupled
Why this works:
readLines()
will actually reads the source file itself rather than stdin
. Hence, adding lines just increments the length()
of the vector returned by readLines()
. Therefore, we compute !(1-length())
to obtain 1
whenever length()==1
and 0
when length()!=1
, adding one to have the desired effect.
edited Dec 20 '18 at 21:41
answered Dec 20 '18 at 21:28
Giuseppe
16.6k31052
16.6k31052
add a comment |
add a comment |
Runic Enchantments, 29 bytes
^w '
/1@ 3
/ ~!4
2'51w
/yyy
Try it online!
Slight alteration from the Third Times A Charm entry, using Jo King's compressed version and swapping the two reflection locations.
Twice
Thrice
And frice for good measure.
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such asπ
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).
– Draco18s
Dec 25 '18 at 2:10
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
add a comment |
Runic Enchantments, 29 bytes
^w '
/1@ 3
/ ~!4
2'51w
/yyy
Try it online!
Slight alteration from the Third Times A Charm entry, using Jo King's compressed version and swapping the two reflection locations.
Twice
Thrice
And frice for good measure.
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such asπ
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).
– Draco18s
Dec 25 '18 at 2:10
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
add a comment |
Runic Enchantments, 29 bytes
^w '
/1@ 3
/ ~!4
2'51w
/yyy
Try it online!
Slight alteration from the Third Times A Charm entry, using Jo King's compressed version and swapping the two reflection locations.
Twice
Thrice
And frice for good measure.
Runic Enchantments, 29 bytes
^w '
/1@ 3
/ ~!4
2'51w
/yyy
Try it online!
Slight alteration from the Third Times A Charm entry, using Jo King's compressed version and swapping the two reflection locations.
Twice
Thrice
And frice for good measure.
edited Dec 21 '18 at 0:31
answered Dec 20 '18 at 21:32
Draco18s
1,246618
1,246618
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such asπ
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).
– Draco18s
Dec 25 '18 at 2:10
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
add a comment |
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such asπ
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).
– Draco18s
Dec 25 '18 at 2:10
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
What did you name the language after? God of War?
– Riker
Dec 25 '18 at 0:39
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such as
π
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).– Draco18s
Dec 25 '18 at 2:10
@Riker I named it because I want to (eventually) have a RPG-esque game where enchantments on gear can be created by players using a runic script (that, to the best of my ability) mapped to the 95 keyboard printable characters. I've added some extension symbols utilizing unicode combining characters (as well as a handful of other unicode characters that more readily represent the given action, such as
π
and several arrows). Once I have that game I'll end up making "runic 2.0" that has those game-specific commands (and probably remaps a lot of mathy stuff).– Draco18s
Dec 25 '18 at 2:10
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
Draco: huh, interesting, I'd love to see the final result.
– Riker
Dec 25 '18 at 4:26
add a comment |
Klein 000, 6 bytes
1+@
Try it online!
Explanation
The idea here is pretty simple, the first 2 copies require the ip to move off the edge of the program but the third does not, that way adding anything extra after the third doesn't change anything.
The first program reflects off of both edges the
At the begining is just a fancy noop. So we just run 1+@
.
For the two copies this gets interrupted
1+@
\1+@
We hit both 1
s and a +
to get 2
.
On the three we interrupt the path even further
1+@
\1+@
\1+@
At this point it might not be the clearest, but the ip bounces around in the mirrors a bit before it hits runs the 3rd line.
This is what it runs
\
1+@
Since this doesn't go off an edge further additions don't make any change to the program.
add a comment |
Klein 000, 6 bytes
1+@
Try it online!
Explanation
The idea here is pretty simple, the first 2 copies require the ip to move off the edge of the program but the third does not, that way adding anything extra after the third doesn't change anything.
The first program reflects off of both edges the
At the begining is just a fancy noop. So we just run 1+@
.
For the two copies this gets interrupted
1+@
\1+@
We hit both 1
s and a +
to get 2
.
On the three we interrupt the path even further
1+@
\1+@
\1+@
At this point it might not be the clearest, but the ip bounces around in the mirrors a bit before it hits runs the 3rd line.
This is what it runs
\
1+@
Since this doesn't go off an edge further additions don't make any change to the program.
add a comment |
Klein 000, 6 bytes
1+@
Try it online!
Explanation
The idea here is pretty simple, the first 2 copies require the ip to move off the edge of the program but the third does not, that way adding anything extra after the third doesn't change anything.
The first program reflects off of both edges the
At the begining is just a fancy noop. So we just run 1+@
.
For the two copies this gets interrupted
1+@
\1+@
We hit both 1
s and a +
to get 2
.
On the three we interrupt the path even further
1+@
\1+@
\1+@
At this point it might not be the clearest, but the ip bounces around in the mirrors a bit before it hits runs the 3rd line.
This is what it runs
\
1+@
Since this doesn't go off an edge further additions don't make any change to the program.
Klein 000, 6 bytes
1+@
Try it online!
Explanation
The idea here is pretty simple, the first 2 copies require the ip to move off the edge of the program but the third does not, that way adding anything extra after the third doesn't change anything.
The first program reflects off of both edges the
At the begining is just a fancy noop. So we just run 1+@
.
For the two copies this gets interrupted
1+@
\1+@
We hit both 1
s and a +
to get 2
.
On the three we interrupt the path even further
1+@
\1+@
\1+@
At this point it might not be the clearest, but the ip bounces around in the mirrors a bit before it hits runs the 3rd line.
This is what it runs
\
1+@
Since this doesn't go off an edge further additions don't make any change to the program.
edited Dec 25 '18 at 3:04
answered Dec 25 '18 at 2:58
Wît Wisarhd
34k10156365
34k10156365
add a comment |
add a comment |
Charcoal, 10 bytes
PI⊕⁼²L⊞Oυω
Try it online! Based on my answer to I double the source, you double the output! but compares the length to 2. Try it doubled. Try it tripled. Try it quadrupled. In verbose syntax this is Multiprint(Cast(Incremented(Equals(2, Length(PushOperator(u, w)))))));
.
add a comment |
Charcoal, 10 bytes
PI⊕⁼²L⊞Oυω
Try it online! Based on my answer to I double the source, you double the output! but compares the length to 2. Try it doubled. Try it tripled. Try it quadrupled. In verbose syntax this is Multiprint(Cast(Incremented(Equals(2, Length(PushOperator(u, w)))))));
.
add a comment |
Charcoal, 10 bytes
PI⊕⁼²L⊞Oυω
Try it online! Based on my answer to I double the source, you double the output! but compares the length to 2. Try it doubled. Try it tripled. Try it quadrupled. In verbose syntax this is Multiprint(Cast(Incremented(Equals(2, Length(PushOperator(u, w)))))));
.
Charcoal, 10 bytes
PI⊕⁼²L⊞Oυω
Try it online! Based on my answer to I double the source, you double the output! but compares the length to 2. Try it doubled. Try it tripled. Try it quadrupled. In verbose syntax this is Multiprint(Cast(Incremented(Equals(2, Length(PushOperator(u, w)))))));
.
answered Dec 20 '18 at 21:19
Neil
79.4k744177
79.4k744177
add a comment |
add a comment |
MATL, 9 bytes
vxHQXH4=Q
Uses n = 1.
Try it online! Original, doubled, tripled, quadrupled.
Explanation
This uses clipboard H to store state information. Function H
pastes the clipboard contents onto the stack. Function XH
copies the top of the stack into the clipboard. The clipboard initially contains the number 2
.
Each time the snippet vxHQXH4=Q
is run it does the following.
The stack contents, if any, are deleted (vx
). The clipboard contents are pushed (H
) and incremented (Q
), and the result is copied back into the clipboard (XH
). This gives 4
the second time, and only that time.
The number in the stack is tested for equality with 4
(4=
) and incremented (Q
). This gives 2
for 4
(second time), and 1
otherwise (any other time).
add a comment |
MATL, 9 bytes
vxHQXH4=Q
Uses n = 1.
Try it online! Original, doubled, tripled, quadrupled.
Explanation
This uses clipboard H to store state information. Function H
pastes the clipboard contents onto the stack. Function XH
copies the top of the stack into the clipboard. The clipboard initially contains the number 2
.
Each time the snippet vxHQXH4=Q
is run it does the following.
The stack contents, if any, are deleted (vx
). The clipboard contents are pushed (H
) and incremented (Q
), and the result is copied back into the clipboard (XH
). This gives 4
the second time, and only that time.
The number in the stack is tested for equality with 4
(4=
) and incremented (Q
). This gives 2
for 4
(second time), and 1
otherwise (any other time).
add a comment |
MATL, 9 bytes
vxHQXH4=Q
Uses n = 1.
Try it online! Original, doubled, tripled, quadrupled.
Explanation
This uses clipboard H to store state information. Function H
pastes the clipboard contents onto the stack. Function XH
copies the top of the stack into the clipboard. The clipboard initially contains the number 2
.
Each time the snippet vxHQXH4=Q
is run it does the following.
The stack contents, if any, are deleted (vx
). The clipboard contents are pushed (H
) and incremented (Q
), and the result is copied back into the clipboard (XH
). This gives 4
the second time, and only that time.
The number in the stack is tested for equality with 4
(4=
) and incremented (Q
). This gives 2
for 4
(second time), and 1
otherwise (any other time).
MATL, 9 bytes
vxHQXH4=Q
Uses n = 1.
Try it online! Original, doubled, tripled, quadrupled.
Explanation
This uses clipboard H to store state information. Function H
pastes the clipboard contents onto the stack. Function XH
copies the top of the stack into the clipboard. The clipboard initially contains the number 2
.
Each time the snippet vxHQXH4=Q
is run it does the following.
The stack contents, if any, are deleted (vx
). The clipboard contents are pushed (H
) and incremented (Q
), and the result is copied back into the clipboard (XH
). This gives 4
the second time, and only that time.
The number in the stack is tested for equality with 4
(4=
) and incremented (Q
). This gives 2
for 4
(second time), and 1
otherwise (any other time).
edited Dec 20 '18 at 23:47
answered Dec 20 '18 at 22:57
Luis Mendo
74k886291
74k886291
add a comment |
add a comment |
05AB1E, 7 6 bytes, n=3
₆.g2Qè
Try it online; try it doubled; try it tripled; try it quadrupled.
Explanation:
₆ # Push 36
.g # Push the amount of items on the stack
2Q # Check if that amount is equal to 2 (results in 1 if truthy; 0 if falsey)
è # Index that into the 36 (and output the top of the stack implicitly)
add a comment |
05AB1E, 7 6 bytes, n=3
₆.g2Qè
Try it online; try it doubled; try it tripled; try it quadrupled.
Explanation:
₆ # Push 36
.g # Push the amount of items on the stack
2Q # Check if that amount is equal to 2 (results in 1 if truthy; 0 if falsey)
è # Index that into the 36 (and output the top of the stack implicitly)
add a comment |
05AB1E, 7 6 bytes, n=3
₆.g2Qè
Try it online; try it doubled; try it tripled; try it quadrupled.
Explanation:
₆ # Push 36
.g # Push the amount of items on the stack
2Q # Check if that amount is equal to 2 (results in 1 if truthy; 0 if falsey)
è # Index that into the 36 (and output the top of the stack implicitly)
05AB1E, 7 6 bytes, n=3
₆.g2Qè
Try it online; try it doubled; try it tripled; try it quadrupled.
Explanation:
₆ # Push 36
.g # Push the amount of items on the stack
2Q # Check if that amount is equal to 2 (results in 1 if truthy; 0 if falsey)
è # Index that into the 36 (and output the top of the stack implicitly)
edited Dec 22 '18 at 18:09
answered Dec 22 '18 at 17:50
Kevin Cruijssen
35.6k554186
35.6k554186
add a comment |
add a comment |
If this is an answer to a challenge…
…Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.
…Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
Explanations of your answer make it more interesting to read and are very much encouraged.…Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.
More generally…
…Please make sure to answer the question and provide sufficient detail.
…Avoid asking for help, clarification or responding to other answers (use comments instead).
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%2fcodegolf.stackexchange.com%2fquestions%2f177881%2fjust-twice-is-nice%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
5
All the solutions so far are trivial modifications of solutions to existing challenges so I wouldn't be surprised to see this dupe-hammered by someone.
– Shaggy
Dec 20 '18 at 22:14
@Shaggy I disagree. For some the best approach is from the 3rd times the charm from some its the doubling, for some still (klein, lost etc.) a port wouldn't even work.
– Wît Wisarhd
Dec 24 '18 at 22:03