New order #4: World












6












$begingroup$


Introduction (may be ignored)



Putting all positive numbers in its regular order (1, 2, 3, ...) is a bit boring, isn't it? So here is a series of challenges around permutations (reshuffelings) of all positive numbers. This is the fourth challenge in this series (links to the first, second and third challenge).



In this challenge, we will explore not one permutation of the natural numbers, but an entire world of permutations!



In 2000, Clark Kimberling posed a problem in the 26th issue of Crux Mathematicorum, a scientific journal of mathematics published by the Canadian Mathematical Society. The problem was:




$text{Sequence }a = begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{2} rfloortext{ if }lfloor frac{a_{n-1}}{2} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = 3 a_{n-1}text{ otherwise}
end{cases}$



Does every positive integer occur exactly once in this sequence?




In 2004, Mateusz Kwasnicki provided positive proof in the same journal and in 2008, he published a more formal and (compared to the original question) a more general proof. He formulated the sequence with parameters $p$ and $q$:



$begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{q} rfloortext{ if }lfloor frac{a_{n-1}}{q} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = p a_{n-1}text{ otherwise}
end{cases}$



He proved that for any $p, q>1$ such that $log_p(q)$ is irrational, the sequence is a permutation of the natural numbers. Since there are an infinite number of $p$ and $q$ values for which this is true, this is truly an entire world of permutations of the natural numbers. We will stick with the original $(p, q)=(3, 2)$, and for these paramters, the sequence can be found as A050000 in the OEIS. Its first 20 elements are:



1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15


Since this is a "pure sequence" challenge, the task is to output $a(n)$ for a given $n$ as input, where $a(n)$ is A050000.



Task



Given an integer input $n$, output $a(n)$ in integer format, where:



$begin{cases}
a(1) = 1\
a(n) = lfloor frac{a(n-1)}{2} rfloortext{ if }lfloor frac{a(n-1)}{2} rfloor notin {0, a_1, ... , a(n-1)}\
a(n) = 3 a(n-1)text{ otherwise}
end{cases}$



Note: 1-based indexing is assumed here; you may use 0-based indexing, so $a(0) = 1; a(1) = 3$, etc. Please mention this in your answer if you choose to use this.



Test cases



Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853


Rules




  • Input and output are integers (your program should at least support input and output in the range of 1 up to 32767)

  • Invalid input (0, floats, strings, negative values, etc.) may lead to unpredicted output, errors or (un)defined behaviour.

  • Default I/O rules apply.


  • Default loopholes are forbidden.

  • This is code-golf, so the shortest answers in bytes wins










share|improve this question











$endgroup$








  • 6




    $begingroup$
    In the second case of your formula, should it be not an element of?
    $endgroup$
    – xnor
    5 hours ago












  • $begingroup$
    Sharp! My mistake. Corrected it. Sorry if this caused any trouble or confusion.
    $endgroup$
    – agtoever
    5 hours ago


















6












$begingroup$


Introduction (may be ignored)



Putting all positive numbers in its regular order (1, 2, 3, ...) is a bit boring, isn't it? So here is a series of challenges around permutations (reshuffelings) of all positive numbers. This is the fourth challenge in this series (links to the first, second and third challenge).



In this challenge, we will explore not one permutation of the natural numbers, but an entire world of permutations!



In 2000, Clark Kimberling posed a problem in the 26th issue of Crux Mathematicorum, a scientific journal of mathematics published by the Canadian Mathematical Society. The problem was:




$text{Sequence }a = begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{2} rfloortext{ if }lfloor frac{a_{n-1}}{2} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = 3 a_{n-1}text{ otherwise}
end{cases}$



Does every positive integer occur exactly once in this sequence?




In 2004, Mateusz Kwasnicki provided positive proof in the same journal and in 2008, he published a more formal and (compared to the original question) a more general proof. He formulated the sequence with parameters $p$ and $q$:



$begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{q} rfloortext{ if }lfloor frac{a_{n-1}}{q} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = p a_{n-1}text{ otherwise}
end{cases}$



He proved that for any $p, q>1$ such that $log_p(q)$ is irrational, the sequence is a permutation of the natural numbers. Since there are an infinite number of $p$ and $q$ values for which this is true, this is truly an entire world of permutations of the natural numbers. We will stick with the original $(p, q)=(3, 2)$, and for these paramters, the sequence can be found as A050000 in the OEIS. Its first 20 elements are:



1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15


Since this is a "pure sequence" challenge, the task is to output $a(n)$ for a given $n$ as input, where $a(n)$ is A050000.



Task



Given an integer input $n$, output $a(n)$ in integer format, where:



$begin{cases}
a(1) = 1\
a(n) = lfloor frac{a(n-1)}{2} rfloortext{ if }lfloor frac{a(n-1)}{2} rfloor notin {0, a_1, ... , a(n-1)}\
a(n) = 3 a(n-1)text{ otherwise}
end{cases}$



Note: 1-based indexing is assumed here; you may use 0-based indexing, so $a(0) = 1; a(1) = 3$, etc. Please mention this in your answer if you choose to use this.



Test cases



Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853


Rules




  • Input and output are integers (your program should at least support input and output in the range of 1 up to 32767)

  • Invalid input (0, floats, strings, negative values, etc.) may lead to unpredicted output, errors or (un)defined behaviour.

  • Default I/O rules apply.


  • Default loopholes are forbidden.

  • This is code-golf, so the shortest answers in bytes wins










share|improve this question











$endgroup$








  • 6




    $begingroup$
    In the second case of your formula, should it be not an element of?
    $endgroup$
    – xnor
    5 hours ago












  • $begingroup$
    Sharp! My mistake. Corrected it. Sorry if this caused any trouble or confusion.
    $endgroup$
    – agtoever
    5 hours ago
















6












6








6





$begingroup$


Introduction (may be ignored)



Putting all positive numbers in its regular order (1, 2, 3, ...) is a bit boring, isn't it? So here is a series of challenges around permutations (reshuffelings) of all positive numbers. This is the fourth challenge in this series (links to the first, second and third challenge).



In this challenge, we will explore not one permutation of the natural numbers, but an entire world of permutations!



In 2000, Clark Kimberling posed a problem in the 26th issue of Crux Mathematicorum, a scientific journal of mathematics published by the Canadian Mathematical Society. The problem was:




$text{Sequence }a = begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{2} rfloortext{ if }lfloor frac{a_{n-1}}{2} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = 3 a_{n-1}text{ otherwise}
end{cases}$



Does every positive integer occur exactly once in this sequence?




In 2004, Mateusz Kwasnicki provided positive proof in the same journal and in 2008, he published a more formal and (compared to the original question) a more general proof. He formulated the sequence with parameters $p$ and $q$:



$begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{q} rfloortext{ if }lfloor frac{a_{n-1}}{q} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = p a_{n-1}text{ otherwise}
end{cases}$



He proved that for any $p, q>1$ such that $log_p(q)$ is irrational, the sequence is a permutation of the natural numbers. Since there are an infinite number of $p$ and $q$ values for which this is true, this is truly an entire world of permutations of the natural numbers. We will stick with the original $(p, q)=(3, 2)$, and for these paramters, the sequence can be found as A050000 in the OEIS. Its first 20 elements are:



1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15


Since this is a "pure sequence" challenge, the task is to output $a(n)$ for a given $n$ as input, where $a(n)$ is A050000.



Task



Given an integer input $n$, output $a(n)$ in integer format, where:



$begin{cases}
a(1) = 1\
a(n) = lfloor frac{a(n-1)}{2} rfloortext{ if }lfloor frac{a(n-1)}{2} rfloor notin {0, a_1, ... , a(n-1)}\
a(n) = 3 a(n-1)text{ otherwise}
end{cases}$



Note: 1-based indexing is assumed here; you may use 0-based indexing, so $a(0) = 1; a(1) = 3$, etc. Please mention this in your answer if you choose to use this.



Test cases



Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853


Rules




  • Input and output are integers (your program should at least support input and output in the range of 1 up to 32767)

  • Invalid input (0, floats, strings, negative values, etc.) may lead to unpredicted output, errors or (un)defined behaviour.

  • Default I/O rules apply.


  • Default loopholes are forbidden.

  • This is code-golf, so the shortest answers in bytes wins










share|improve this question











$endgroup$




Introduction (may be ignored)



Putting all positive numbers in its regular order (1, 2, 3, ...) is a bit boring, isn't it? So here is a series of challenges around permutations (reshuffelings) of all positive numbers. This is the fourth challenge in this series (links to the first, second and third challenge).



In this challenge, we will explore not one permutation of the natural numbers, but an entire world of permutations!



In 2000, Clark Kimberling posed a problem in the 26th issue of Crux Mathematicorum, a scientific journal of mathematics published by the Canadian Mathematical Society. The problem was:




$text{Sequence }a = begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{2} rfloortext{ if }lfloor frac{a_{n-1}}{2} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = 3 a_{n-1}text{ otherwise}
end{cases}$



Does every positive integer occur exactly once in this sequence?




In 2004, Mateusz Kwasnicki provided positive proof in the same journal and in 2008, he published a more formal and (compared to the original question) a more general proof. He formulated the sequence with parameters $p$ and $q$:



$begin{cases}
a_1 = 1\
a_n = lfloor frac{a_{n-1}}{q} rfloortext{ if }lfloor frac{a_{n-1}}{q} rfloor notin {0, a_1, ... , a_{n-1}}\
a_n = p a_{n-1}text{ otherwise}
end{cases}$



He proved that for any $p, q>1$ such that $log_p(q)$ is irrational, the sequence is a permutation of the natural numbers. Since there are an infinite number of $p$ and $q$ values for which this is true, this is truly an entire world of permutations of the natural numbers. We will stick with the original $(p, q)=(3, 2)$, and for these paramters, the sequence can be found as A050000 in the OEIS. Its first 20 elements are:



1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15


Since this is a "pure sequence" challenge, the task is to output $a(n)$ for a given $n$ as input, where $a(n)$ is A050000.



Task



Given an integer input $n$, output $a(n)$ in integer format, where:



$begin{cases}
a(1) = 1\
a(n) = lfloor frac{a(n-1)}{2} rfloortext{ if }lfloor frac{a(n-1)}{2} rfloor notin {0, a_1, ... , a(n-1)}\
a(n) = 3 a(n-1)text{ otherwise}
end{cases}$



Note: 1-based indexing is assumed here; you may use 0-based indexing, so $a(0) = 1; a(1) = 3$, etc. Please mention this in your answer if you choose to use this.



Test cases



Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853


Rules




  • Input and output are integers (your program should at least support input and output in the range of 1 up to 32767)

  • Invalid input (0, floats, strings, negative values, etc.) may lead to unpredicted output, errors or (un)defined behaviour.

  • Default I/O rules apply.


  • Default loopholes are forbidden.

  • This is code-golf, so the shortest answers in bytes wins







code-golf sequence






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 5 hours ago







agtoever

















asked 5 hours ago









agtoeveragtoever

1,272422




1,272422








  • 6




    $begingroup$
    In the second case of your formula, should it be not an element of?
    $endgroup$
    – xnor
    5 hours ago












  • $begingroup$
    Sharp! My mistake. Corrected it. Sorry if this caused any trouble or confusion.
    $endgroup$
    – agtoever
    5 hours ago
















  • 6




    $begingroup$
    In the second case of your formula, should it be not an element of?
    $endgroup$
    – xnor
    5 hours ago












  • $begingroup$
    Sharp! My mistake. Corrected it. Sorry if this caused any trouble or confusion.
    $endgroup$
    – agtoever
    5 hours ago










6




6




$begingroup$
In the second case of your formula, should it be not an element of?
$endgroup$
– xnor
5 hours ago






$begingroup$
In the second case of your formula, should it be not an element of?
$endgroup$
– xnor
5 hours ago














$begingroup$
Sharp! My mistake. Corrected it. Sorry if this caused any trouble or confusion.
$endgroup$
– agtoever
5 hours ago






$begingroup$
Sharp! My mistake. Corrected it. Sorry if this caused any trouble or confusion.
$endgroup$
– agtoever
5 hours ago












7 Answers
7






active

oldest

votes


















1












$begingroup$

JavaScript (ES6),  55  51 bytes



Saved 1 byte thanks to @EmbodimentofIgnorance





n=>eval("for(o=[p=2];n--;o[p]=1)p=o[q=p>>1]?3*p:q")


Try it online!






share|improve this answer











$endgroup$













  • $begingroup$
    55 bytes
    $endgroup$
    – Embodiment of Ignorance
    5 hours ago












  • $begingroup$
    @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
    $endgroup$
    – Arnauld
    5 hours ago










  • $begingroup$
    But this is code-golf, we don't care about speed, as long as it gets the job done
    $endgroup$
    – Embodiment of Ignorance
    4 hours ago










  • $begingroup$
    n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
    $endgroup$
    – tsh
    43 mins ago



















0












$begingroup$


Jelly, 21 bytes



Ø.;0ị×3$:2$:2eɗ?Ɗ$⁸¡Ṫ


Try it online!



A monadic link that takes zero-indexed $n$ as the argument and returns $a(n)$.






share|improve this answer









$endgroup$





















    0












    $begingroup$


    Jelly, 15 bytes



    µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ


    A full program accepting the integer, n (1-based), from STDIN which prints the result.



    Try it online!



    How?



    µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ - Main Link: no arguments (implicit left argument = 0)
    µ µ¡ - repeat this monadic chain STDIN times (starting with x=0)
    - e.g. x = ... 0 [1,0] [9,3,1,0]
    ×3 - multiply by 3 0 [3,0] [27,9,3,0]
    H - halve 0 [1.5,0] [4.5,1.5,0.5,0]
    ż - zip together [0,0] [[3,1.5],[0,0]] [[27,4.5],[9,1.5],[3,0.5],[0,0]]
    Ḟ - floor [0,0] [[3,1],[0,0]] [[27,4],[9,1],[3,0],[0,0]]
    Ḣ - head 0 [3,1] [27,4]
    ḟ - filter discard if in x [3] [27,4]
    ȯ1 - logical OR with 1 1 [3] [27,4]
    Ṫ - tail 1 3 4
    ; - concatenate with x [1,0] [3,1,0] [4,9,3,1,0]
    Ḣ - head 1 3 4
    - implicit print





    share|improve this answer









    $endgroup$





















      0












      $begingroup$


      Perl 6, 51 bytes





      {(1,3,{first *∉@_,@_[*-1]+>1,3*@_[*-1]}...*)[$_]}


      Try it online!



      Returns the 0-indexed element in the sequence. You can change this to 1-indexed by changing the starting elements to 0,1 instead of 1,3



      Explanation:



      {                                               }  # Anonymous code block
      ( ...*)[$_] # Index into the infinite sequence
      1,3 # That starts with 1,3
      ,{ } # And each element is
      first # The first of
      @_[*-1]+>1 # The previous element bitshifted one
      ,3*@_[*-1] # Triple the previous element
      *∉@_, # That hasn't appeared in the sequence





      share|improve this answer









      $endgroup$





















        0












        $begingroup$


        Wolfram Language (Mathematica), 63 bytes



        (L=Last)@Nest[{##,If[FreeQ[#,x=⌊L@#/2⌋],x,3L@#]}&,{0,1},#]&


        Try it online!



        This is 0-indexed

        (In TIO I added -1 in every test case)






        share|improve this answer











        $endgroup$





















          0












          $begingroup$


          C++ (gcc), 189 bytes





          #include <vector>
          #include <algorithm>
          int a(int n){std::vector<int>s={1};for(int i=0;i<n;++i){int p=s[i]/2;s.push_back(p&&std::find(s.begin(),s.end(),p)==s.end()?p:3*s[i]);}return s[n-1];}


          Try it online!



          Computes the sequence up to n, then returns the desired element. Slow for larger indices.






          share|improve this answer









          $endgroup$





















            0












            $begingroup$


            J, 47 40 bytes



            [:{:0 1(],<.@-:@{:@](e.{[,3*{:@])])^:[~]


            Try it online!



            ungolfed



            [: {: 0 1 (] , <.@-:@{:@] (e. { [ , 3 * {:@]) ])^:[~ ]


            Direct translation of the definition into J. It builds bottom up by using ^: to iterate from the starting value the required number of times.






            share|improve this answer











            $endgroup$














              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
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182810%2fnew-order-4-world%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









              1












              $begingroup$

              JavaScript (ES6),  55  51 bytes



              Saved 1 byte thanks to @EmbodimentofIgnorance





              n=>eval("for(o=[p=2];n--;o[p]=1)p=o[q=p>>1]?3*p:q")


              Try it online!






              share|improve this answer











              $endgroup$













              • $begingroup$
                55 bytes
                $endgroup$
                – Embodiment of Ignorance
                5 hours ago












              • $begingroup$
                @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
                $endgroup$
                – Arnauld
                5 hours ago










              • $begingroup$
                But this is code-golf, we don't care about speed, as long as it gets the job done
                $endgroup$
                – Embodiment of Ignorance
                4 hours ago










              • $begingroup$
                n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
                $endgroup$
                – tsh
                43 mins ago
















              1












              $begingroup$

              JavaScript (ES6),  55  51 bytes



              Saved 1 byte thanks to @EmbodimentofIgnorance





              n=>eval("for(o=[p=2];n--;o[p]=1)p=o[q=p>>1]?3*p:q")


              Try it online!






              share|improve this answer











              $endgroup$













              • $begingroup$
                55 bytes
                $endgroup$
                – Embodiment of Ignorance
                5 hours ago












              • $begingroup$
                @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
                $endgroup$
                – Arnauld
                5 hours ago










              • $begingroup$
                But this is code-golf, we don't care about speed, as long as it gets the job done
                $endgroup$
                – Embodiment of Ignorance
                4 hours ago










              • $begingroup$
                n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
                $endgroup$
                – tsh
                43 mins ago














              1












              1








              1





              $begingroup$

              JavaScript (ES6),  55  51 bytes



              Saved 1 byte thanks to @EmbodimentofIgnorance





              n=>eval("for(o=[p=2];n--;o[p]=1)p=o[q=p>>1]?3*p:q")


              Try it online!






              share|improve this answer











              $endgroup$



              JavaScript (ES6),  55  51 bytes



              Saved 1 byte thanks to @EmbodimentofIgnorance





              n=>eval("for(o=[p=2];n--;o[p]=1)p=o[q=p>>1]?3*p:q")


              Try it online!







              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited 4 hours ago

























              answered 5 hours ago









              ArnauldArnauld

              80.5k797333




              80.5k797333












              • $begingroup$
                55 bytes
                $endgroup$
                – Embodiment of Ignorance
                5 hours ago












              • $begingroup$
                @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
                $endgroup$
                – Arnauld
                5 hours ago










              • $begingroup$
                But this is code-golf, we don't care about speed, as long as it gets the job done
                $endgroup$
                – Embodiment of Ignorance
                4 hours ago










              • $begingroup$
                n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
                $endgroup$
                – tsh
                43 mins ago


















              • $begingroup$
                55 bytes
                $endgroup$
                – Embodiment of Ignorance
                5 hours ago












              • $begingroup$
                @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
                $endgroup$
                – Arnauld
                5 hours ago










              • $begingroup$
                But this is code-golf, we don't care about speed, as long as it gets the job done
                $endgroup$
                – Embodiment of Ignorance
                4 hours ago










              • $begingroup$
                n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
                $endgroup$
                – tsh
                43 mins ago
















              $begingroup$
              55 bytes
              $endgroup$
              – Embodiment of Ignorance
              5 hours ago






              $begingroup$
              55 bytes
              $endgroup$
              – Embodiment of Ignorance
              5 hours ago














              $begingroup$
              @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
              $endgroup$
              – Arnauld
              5 hours ago




              $begingroup$
              @EmbodimentofIgnorance I usually avoid that trick, as the eval'ed code is much slower. But the difference is barely noticeable for that one, so I guess that's fine.
              $endgroup$
              – Arnauld
              5 hours ago












              $begingroup$
              But this is code-golf, we don't care about speed, as long as it gets the job done
              $endgroup$
              – Embodiment of Ignorance
              4 hours ago




              $begingroup$
              But this is code-golf, we don't care about speed, as long as it gets the job done
              $endgroup$
              – Embodiment of Ignorance
              4 hours ago












              $begingroup$
              n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
              $endgroup$
              – tsh
              43 mins ago




              $begingroup$
              n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
              $endgroup$
              – tsh
              43 mins ago











              0












              $begingroup$


              Jelly, 21 bytes



              Ø.;0ị×3$:2$:2eɗ?Ɗ$⁸¡Ṫ


              Try it online!



              A monadic link that takes zero-indexed $n$ as the argument and returns $a(n)$.






              share|improve this answer









              $endgroup$


















                0












                $begingroup$


                Jelly, 21 bytes



                Ø.;0ị×3$:2$:2eɗ?Ɗ$⁸¡Ṫ


                Try it online!



                A monadic link that takes zero-indexed $n$ as the argument and returns $a(n)$.






                share|improve this answer









                $endgroup$
















                  0












                  0








                  0





                  $begingroup$


                  Jelly, 21 bytes



                  Ø.;0ị×3$:2$:2eɗ?Ɗ$⁸¡Ṫ


                  Try it online!



                  A monadic link that takes zero-indexed $n$ as the argument and returns $a(n)$.






                  share|improve this answer









                  $endgroup$




                  Jelly, 21 bytes



                  Ø.;0ị×3$:2$:2eɗ?Ɗ$⁸¡Ṫ


                  Try it online!



                  A monadic link that takes zero-indexed $n$ as the argument and returns $a(n)$.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 5 hours ago









                  Nick KennedyNick Kennedy

                  1,32649




                  1,32649























                      0












                      $begingroup$


                      Jelly, 15 bytes



                      µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ


                      A full program accepting the integer, n (1-based), from STDIN which prints the result.



                      Try it online!



                      How?



                      µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ - Main Link: no arguments (implicit left argument = 0)
                      µ µ¡ - repeat this monadic chain STDIN times (starting with x=0)
                      - e.g. x = ... 0 [1,0] [9,3,1,0]
                      ×3 - multiply by 3 0 [3,0] [27,9,3,0]
                      H - halve 0 [1.5,0] [4.5,1.5,0.5,0]
                      ż - zip together [0,0] [[3,1.5],[0,0]] [[27,4.5],[9,1.5],[3,0.5],[0,0]]
                      Ḟ - floor [0,0] [[3,1],[0,0]] [[27,4],[9,1],[3,0],[0,0]]
                      Ḣ - head 0 [3,1] [27,4]
                      ḟ - filter discard if in x [3] [27,4]
                      ȯ1 - logical OR with 1 1 [3] [27,4]
                      Ṫ - tail 1 3 4
                      ; - concatenate with x [1,0] [3,1,0] [4,9,3,1,0]
                      Ḣ - head 1 3 4
                      - implicit print





                      share|improve this answer









                      $endgroup$


















                        0












                        $begingroup$


                        Jelly, 15 bytes



                        µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ


                        A full program accepting the integer, n (1-based), from STDIN which prints the result.



                        Try it online!



                        How?



                        µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ - Main Link: no arguments (implicit left argument = 0)
                        µ µ¡ - repeat this monadic chain STDIN times (starting with x=0)
                        - e.g. x = ... 0 [1,0] [9,3,1,0]
                        ×3 - multiply by 3 0 [3,0] [27,9,3,0]
                        H - halve 0 [1.5,0] [4.5,1.5,0.5,0]
                        ż - zip together [0,0] [[3,1.5],[0,0]] [[27,4.5],[9,1.5],[3,0.5],[0,0]]
                        Ḟ - floor [0,0] [[3,1],[0,0]] [[27,4],[9,1],[3,0],[0,0]]
                        Ḣ - head 0 [3,1] [27,4]
                        ḟ - filter discard if in x [3] [27,4]
                        ȯ1 - logical OR with 1 1 [3] [27,4]
                        Ṫ - tail 1 3 4
                        ; - concatenate with x [1,0] [3,1,0] [4,9,3,1,0]
                        Ḣ - head 1 3 4
                        - implicit print





                        share|improve this answer









                        $endgroup$
















                          0












                          0








                          0





                          $begingroup$


                          Jelly, 15 bytes



                          µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ


                          A full program accepting the integer, n (1-based), from STDIN which prints the result.



                          Try it online!



                          How?



                          µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ - Main Link: no arguments (implicit left argument = 0)
                          µ µ¡ - repeat this monadic chain STDIN times (starting with x=0)
                          - e.g. x = ... 0 [1,0] [9,3,1,0]
                          ×3 - multiply by 3 0 [3,0] [27,9,3,0]
                          H - halve 0 [1.5,0] [4.5,1.5,0.5,0]
                          ż - zip together [0,0] [[3,1.5],[0,0]] [[27,4.5],[9,1.5],[3,0.5],[0,0]]
                          Ḟ - floor [0,0] [[3,1],[0,0]] [[27,4],[9,1],[3,0],[0,0]]
                          Ḣ - head 0 [3,1] [27,4]
                          ḟ - filter discard if in x [3] [27,4]
                          ȯ1 - logical OR with 1 1 [3] [27,4]
                          Ṫ - tail 1 3 4
                          ; - concatenate with x [1,0] [3,1,0] [4,9,3,1,0]
                          Ḣ - head 1 3 4
                          - implicit print





                          share|improve this answer









                          $endgroup$




                          Jelly, 15 bytes



                          µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ


                          A full program accepting the integer, n (1-based), from STDIN which prints the result.



                          Try it online!



                          How?



                          µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ - Main Link: no arguments (implicit left argument = 0)
                          µ µ¡ - repeat this monadic chain STDIN times (starting with x=0)
                          - e.g. x = ... 0 [1,0] [9,3,1,0]
                          ×3 - multiply by 3 0 [3,0] [27,9,3,0]
                          H - halve 0 [1.5,0] [4.5,1.5,0.5,0]
                          ż - zip together [0,0] [[3,1.5],[0,0]] [[27,4.5],[9,1.5],[3,0.5],[0,0]]
                          Ḟ - floor [0,0] [[3,1],[0,0]] [[27,4],[9,1],[3,0],[0,0]]
                          Ḣ - head 0 [3,1] [27,4]
                          ḟ - filter discard if in x [3] [27,4]
                          ȯ1 - logical OR with 1 1 [3] [27,4]
                          Ṫ - tail 1 3 4
                          ; - concatenate with x [1,0] [3,1,0] [4,9,3,1,0]
                          Ḣ - head 1 3 4
                          - implicit print






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 4 hours ago









                          Jonathan AllanJonathan Allan

                          53.8k535173




                          53.8k535173























                              0












                              $begingroup$


                              Perl 6, 51 bytes





                              {(1,3,{first *∉@_,@_[*-1]+>1,3*@_[*-1]}...*)[$_]}


                              Try it online!



                              Returns the 0-indexed element in the sequence. You can change this to 1-indexed by changing the starting elements to 0,1 instead of 1,3



                              Explanation:



                              {                                               }  # Anonymous code block
                              ( ...*)[$_] # Index into the infinite sequence
                              1,3 # That starts with 1,3
                              ,{ } # And each element is
                              first # The first of
                              @_[*-1]+>1 # The previous element bitshifted one
                              ,3*@_[*-1] # Triple the previous element
                              *∉@_, # That hasn't appeared in the sequence





                              share|improve this answer









                              $endgroup$


















                                0












                                $begingroup$


                                Perl 6, 51 bytes





                                {(1,3,{first *∉@_,@_[*-1]+>1,3*@_[*-1]}...*)[$_]}


                                Try it online!



                                Returns the 0-indexed element in the sequence. You can change this to 1-indexed by changing the starting elements to 0,1 instead of 1,3



                                Explanation:



                                {                                               }  # Anonymous code block
                                ( ...*)[$_] # Index into the infinite sequence
                                1,3 # That starts with 1,3
                                ,{ } # And each element is
                                first # The first of
                                @_[*-1]+>1 # The previous element bitshifted one
                                ,3*@_[*-1] # Triple the previous element
                                *∉@_, # That hasn't appeared in the sequence





                                share|improve this answer









                                $endgroup$
















                                  0












                                  0








                                  0





                                  $begingroup$


                                  Perl 6, 51 bytes





                                  {(1,3,{first *∉@_,@_[*-1]+>1,3*@_[*-1]}...*)[$_]}


                                  Try it online!



                                  Returns the 0-indexed element in the sequence. You can change this to 1-indexed by changing the starting elements to 0,1 instead of 1,3



                                  Explanation:



                                  {                                               }  # Anonymous code block
                                  ( ...*)[$_] # Index into the infinite sequence
                                  1,3 # That starts with 1,3
                                  ,{ } # And each element is
                                  first # The first of
                                  @_[*-1]+>1 # The previous element bitshifted one
                                  ,3*@_[*-1] # Triple the previous element
                                  *∉@_, # That hasn't appeared in the sequence





                                  share|improve this answer









                                  $endgroup$




                                  Perl 6, 51 bytes





                                  {(1,3,{first *∉@_,@_[*-1]+>1,3*@_[*-1]}...*)[$_]}


                                  Try it online!



                                  Returns the 0-indexed element in the sequence. You can change this to 1-indexed by changing the starting elements to 0,1 instead of 1,3



                                  Explanation:



                                  {                                               }  # Anonymous code block
                                  ( ...*)[$_] # Index into the infinite sequence
                                  1,3 # That starts with 1,3
                                  ,{ } # And each element is
                                  first # The first of
                                  @_[*-1]+>1 # The previous element bitshifted one
                                  ,3*@_[*-1] # Triple the previous element
                                  *∉@_, # That hasn't appeared in the sequence






                                  share|improve this answer












                                  share|improve this answer



                                  share|improve this answer










                                  answered 4 hours ago









                                  Jo KingJo King

                                  26.5k364130




                                  26.5k364130























                                      0












                                      $begingroup$


                                      Wolfram Language (Mathematica), 63 bytes



                                      (L=Last)@Nest[{##,If[FreeQ[#,x=⌊L@#/2⌋],x,3L@#]}&,{0,1},#]&


                                      Try it online!



                                      This is 0-indexed

                                      (In TIO I added -1 in every test case)






                                      share|improve this answer











                                      $endgroup$


















                                        0












                                        $begingroup$


                                        Wolfram Language (Mathematica), 63 bytes



                                        (L=Last)@Nest[{##,If[FreeQ[#,x=⌊L@#/2⌋],x,3L@#]}&,{0,1},#]&


                                        Try it online!



                                        This is 0-indexed

                                        (In TIO I added -1 in every test case)






                                        share|improve this answer











                                        $endgroup$
















                                          0












                                          0








                                          0





                                          $begingroup$


                                          Wolfram Language (Mathematica), 63 bytes



                                          (L=Last)@Nest[{##,If[FreeQ[#,x=⌊L@#/2⌋],x,3L@#]}&,{0,1},#]&


                                          Try it online!



                                          This is 0-indexed

                                          (In TIO I added -1 in every test case)






                                          share|improve this answer











                                          $endgroup$




                                          Wolfram Language (Mathematica), 63 bytes



                                          (L=Last)@Nest[{##,If[FreeQ[#,x=⌊L@#/2⌋],x,3L@#]}&,{0,1},#]&


                                          Try it online!



                                          This is 0-indexed

                                          (In TIO I added -1 in every test case)







                                          share|improve this answer














                                          share|improve this answer



                                          share|improve this answer








                                          edited 3 hours ago

























                                          answered 5 hours ago









                                          J42161217J42161217

                                          13.8k21253




                                          13.8k21253























                                              0












                                              $begingroup$


                                              C++ (gcc), 189 bytes





                                              #include <vector>
                                              #include <algorithm>
                                              int a(int n){std::vector<int>s={1};for(int i=0;i<n;++i){int p=s[i]/2;s.push_back(p&&std::find(s.begin(),s.end(),p)==s.end()?p:3*s[i]);}return s[n-1];}


                                              Try it online!



                                              Computes the sequence up to n, then returns the desired element. Slow for larger indices.






                                              share|improve this answer









                                              $endgroup$


















                                                0












                                                $begingroup$


                                                C++ (gcc), 189 bytes





                                                #include <vector>
                                                #include <algorithm>
                                                int a(int n){std::vector<int>s={1};for(int i=0;i<n;++i){int p=s[i]/2;s.push_back(p&&std::find(s.begin(),s.end(),p)==s.end()?p:3*s[i]);}return s[n-1];}


                                                Try it online!



                                                Computes the sequence up to n, then returns the desired element. Slow for larger indices.






                                                share|improve this answer









                                                $endgroup$
















                                                  0












                                                  0








                                                  0





                                                  $begingroup$


                                                  C++ (gcc), 189 bytes





                                                  #include <vector>
                                                  #include <algorithm>
                                                  int a(int n){std::vector<int>s={1};for(int i=0;i<n;++i){int p=s[i]/2;s.push_back(p&&std::find(s.begin(),s.end(),p)==s.end()?p:3*s[i]);}return s[n-1];}


                                                  Try it online!



                                                  Computes the sequence up to n, then returns the desired element. Slow for larger indices.






                                                  share|improve this answer









                                                  $endgroup$




                                                  C++ (gcc), 189 bytes





                                                  #include <vector>
                                                  #include <algorithm>
                                                  int a(int n){std::vector<int>s={1};for(int i=0;i<n;++i){int p=s[i]/2;s.push_back(p&&std::find(s.begin(),s.end(),p)==s.end()?p:3*s[i]);}return s[n-1];}


                                                  Try it online!



                                                  Computes the sequence up to n, then returns the desired element. Slow for larger indices.







                                                  share|improve this answer












                                                  share|improve this answer



                                                  share|improve this answer










                                                  answered 28 mins ago









                                                  Neil A.Neil A.

                                                  1,328120




                                                  1,328120























                                                      0












                                                      $begingroup$


                                                      J, 47 40 bytes



                                                      [:{:0 1(],<.@-:@{:@](e.{[,3*{:@])])^:[~]


                                                      Try it online!



                                                      ungolfed



                                                      [: {: 0 1 (] , <.@-:@{:@] (e. { [ , 3 * {:@]) ])^:[~ ]


                                                      Direct translation of the definition into J. It builds bottom up by using ^: to iterate from the starting value the required number of times.






                                                      share|improve this answer











                                                      $endgroup$


















                                                        0












                                                        $begingroup$


                                                        J, 47 40 bytes



                                                        [:{:0 1(],<.@-:@{:@](e.{[,3*{:@])])^:[~]


                                                        Try it online!



                                                        ungolfed



                                                        [: {: 0 1 (] , <.@-:@{:@] (e. { [ , 3 * {:@]) ])^:[~ ]


                                                        Direct translation of the definition into J. It builds bottom up by using ^: to iterate from the starting value the required number of times.






                                                        share|improve this answer











                                                        $endgroup$
















                                                          0












                                                          0








                                                          0





                                                          $begingroup$


                                                          J, 47 40 bytes



                                                          [:{:0 1(],<.@-:@{:@](e.{[,3*{:@])])^:[~]


                                                          Try it online!



                                                          ungolfed



                                                          [: {: 0 1 (] , <.@-:@{:@] (e. { [ , 3 * {:@]) ])^:[~ ]


                                                          Direct translation of the definition into J. It builds bottom up by using ^: to iterate from the starting value the required number of times.






                                                          share|improve this answer











                                                          $endgroup$




                                                          J, 47 40 bytes



                                                          [:{:0 1(],<.@-:@{:@](e.{[,3*{:@])])^:[~]


                                                          Try it online!



                                                          ungolfed



                                                          [: {: 0 1 (] , <.@-:@{:@] (e. { [ , 3 * {:@]) ])^:[~ ]


                                                          Direct translation of the definition into J. It builds bottom up by using ^: to iterate from the starting value the required number of times.







                                                          share|improve this answer














                                                          share|improve this answer



                                                          share|improve this answer








                                                          edited 10 mins ago

























                                                          answered 5 hours ago









                                                          JonahJonah

                                                          2,5911017




                                                          2,5911017






























                                                              draft saved

                                                              draft discarded




















































                                                              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).





                                                              draft saved


                                                              draft discarded














                                                              StackExchange.ready(
                                                              function () {
                                                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182810%2fnew-order-4-world%23new-answer', 'question_page');
                                                              }
                                                              );

                                                              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







                                                              Popular posts from this blog

                                                              Ponta tanko

                                                              Tantalo (mitologio)

                                                              Erzsébet Schaár