Simulate Bitwise Cyclic TagSimulate a Minsky Register Machine (I)Simulate a Minsky Register Machine...

Does the average primeness of natural numbers tend to zero?

Add an angle to a sphere

I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine

Is domain driven design an anti-SQL pattern?

How can I fix this gap between bookcases I made?

When blogging recipes, how can I support both readers who want the narrative/journey and ones who want the printer-friendly recipe?

Does it makes sense to buy a new cycle to learn riding?

Why do UK politicians seemingly ignore opinion polls on Brexit?

Is every set a filtered colimit of finite sets?

What to wear for invited talk in Canada

Information to fellow intern about hiring?

Could Giant Ground Sloths have been a good pack animal for the ancient Mayans?

Is ipsum/ipsa/ipse a third person pronoun, or can it serve other functions?

How to make payment on the internet without leaving a money trail?

Are objects structures and/or vice versa?

Landlord wants to switch my lease to a "Land contract" to "get back at the city"

Is it wise to focus on putting odd beats on left when playing double bass drums?

Lied on resume at previous job

aging parents with no investments

Eliminate empty elements from a list with a specific pattern

What causes the sudden spool-up sound from an F-16 when enabling afterburner?

Symmetry in quantum mechanics

Check if two datetimes are between two others

Piano - What is the notation for a double stop where both notes in the double stop are different lengths?



Simulate Bitwise Cyclic Tag


Simulate a Minsky Register Machine (I)Simulate a Minsky Register Machine (II)Simulate any 1D cellular automatonTuring Machine SimulatorInterpret /// (pronounced 'slashes')Simulate a Cyclic Tag SystemOutput “Fit” numbersThe Binary Square Diagonal SequenceHalting Problem for Simplified HexagonySimulate a Cisco Ping













10












$begingroup$


Challenge



Given two strings in any default I/O format, do the following:



NOTE: The challenge will refer to the first string as the "data" and the second referred to as the "program".




  1. Change the program to an infinite string which is just the program repeated infinitely (e.g. 10 --> 1010101010...). The challenge will refer to this as the "infinite program"


  2. While the data is non-empty, do the following while looping over the infinite program:



    a. If the current command is "0", delete the left-most bit in the data. If the data is empty, "0" does not do anything.



    b. If the current command is "1", append the next character in the program to the data if the left-most bit in the data is a one.



    c. If the data is not empty now, output the data.




Test Cases



Data is the left side of the input and the program is the right side.



100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...


Notes




  • The data and program will consist of only 0s and 1s

  • For data/programs that do not halt, your program does not need to halt.

  • The data and program will not be empty in the input.

  • You may have multiple trailing and leading newlines


  • Standard Loopholes are forbidden

  • You can use any convenient I/O format


As always with code-golf, shortest code wins!










share|improve this question











$endgroup$












  • $begingroup$
    This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
    $endgroup$
    – Sanchises
    yesterday










  • $begingroup$
    @Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in the first test case, 100 goes to 10 on cmd 0, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100 be 1?
    $endgroup$
    – Jonah
    yesterday










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in case (b), if you do the append, does the instruction pointer move right one or two characters?
    $endgroup$
    – Sparr
    yesterday
















10












$begingroup$


Challenge



Given two strings in any default I/O format, do the following:



NOTE: The challenge will refer to the first string as the "data" and the second referred to as the "program".




  1. Change the program to an infinite string which is just the program repeated infinitely (e.g. 10 --> 1010101010...). The challenge will refer to this as the "infinite program"


  2. While the data is non-empty, do the following while looping over the infinite program:



    a. If the current command is "0", delete the left-most bit in the data. If the data is empty, "0" does not do anything.



    b. If the current command is "1", append the next character in the program to the data if the left-most bit in the data is a one.



    c. If the data is not empty now, output the data.




Test Cases



Data is the left side of the input and the program is the right side.



100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...


Notes




  • The data and program will consist of only 0s and 1s

  • For data/programs that do not halt, your program does not need to halt.

  • The data and program will not be empty in the input.

  • You may have multiple trailing and leading newlines


  • Standard Loopholes are forbidden

  • You can use any convenient I/O format


As always with code-golf, shortest code wins!










share|improve this question











$endgroup$












  • $begingroup$
    This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
    $endgroup$
    – Sanchises
    yesterday










  • $begingroup$
    @Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in the first test case, 100 goes to 10 on cmd 0, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100 be 1?
    $endgroup$
    – Jonah
    yesterday










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in case (b), if you do the append, does the instruction pointer move right one or two characters?
    $endgroup$
    – Sparr
    yesterday














10












10








10





$begingroup$


Challenge



Given two strings in any default I/O format, do the following:



NOTE: The challenge will refer to the first string as the "data" and the second referred to as the "program".




  1. Change the program to an infinite string which is just the program repeated infinitely (e.g. 10 --> 1010101010...). The challenge will refer to this as the "infinite program"


  2. While the data is non-empty, do the following while looping over the infinite program:



    a. If the current command is "0", delete the left-most bit in the data. If the data is empty, "0" does not do anything.



    b. If the current command is "1", append the next character in the program to the data if the left-most bit in the data is a one.



    c. If the data is not empty now, output the data.




Test Cases



Data is the left side of the input and the program is the right side.



100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...


Notes




  • The data and program will consist of only 0s and 1s

  • For data/programs that do not halt, your program does not need to halt.

  • The data and program will not be empty in the input.

  • You may have multiple trailing and leading newlines


  • Standard Loopholes are forbidden

  • You can use any convenient I/O format


As always with code-golf, shortest code wins!










share|improve this question











$endgroup$




Challenge



Given two strings in any default I/O format, do the following:



NOTE: The challenge will refer to the first string as the "data" and the second referred to as the "program".




  1. Change the program to an infinite string which is just the program repeated infinitely (e.g. 10 --> 1010101010...). The challenge will refer to this as the "infinite program"


  2. While the data is non-empty, do the following while looping over the infinite program:



    a. If the current command is "0", delete the left-most bit in the data. If the data is empty, "0" does not do anything.



    b. If the current command is "1", append the next character in the program to the data if the left-most bit in the data is a one.



    c. If the data is not empty now, output the data.




Test Cases



Data is the left side of the input and the program is the right side.



100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...


Notes




  • The data and program will consist of only 0s and 1s

  • For data/programs that do not halt, your program does not need to halt.

  • The data and program will not be empty in the input.

  • You may have multiple trailing and leading newlines


  • Standard Loopholes are forbidden

  • You can use any convenient I/O format


As always with code-golf, shortest code wins!







code-golf interpreter






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday







MilkyWay90

















asked yesterday









MilkyWay90MilkyWay90

740316




740316












  • $begingroup$
    This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
    $endgroup$
    – Sanchises
    yesterday










  • $begingroup$
    @Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in the first test case, 100 goes to 10 on cmd 0, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100 be 1?
    $endgroup$
    – Jonah
    yesterday










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in case (b), if you do the append, does the instruction pointer move right one or two characters?
    $endgroup$
    – Sparr
    yesterday


















  • $begingroup$
    This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
    $endgroup$
    – Sanchises
    yesterday










  • $begingroup$
    @Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in the first test case, 100 goes to 10 on cmd 0, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100 be 1?
    $endgroup$
    – Jonah
    yesterday










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    yesterday










  • $begingroup$
    in case (b), if you do the append, does the instruction pointer move right one or two characters?
    $endgroup$
    – Sparr
    yesterday
















$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
yesterday




$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
yesterday












$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday




$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday












$begingroup$
in the first test case, 100 goes to 10 on cmd 0, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100 be 1?
$endgroup$
– Jonah
yesterday




$begingroup$
in the first test case, 100 goes to 10 on cmd 0, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100 be 1?
$endgroup$
– Jonah
yesterday












$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday




$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday












$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday




$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday










8 Answers
8






active

oldest

votes


















3












$begingroup$

Haskell, 77 71 bytes



f@(d:e)#(p:q)=f:[[e,e],[f,f++[q!!0]]]!!p!!d#q
_#_=[]
a!b=tail$a#cycle b


Try it online!






share|improve this answer











$endgroup$





















    2












    $begingroup$


    C# (Visual C# Interactive Compiler), 82 bytes





    m=>n=>{for(int i=0;m!="";Print(m=n[i++]<49?m.Substring(1):m[0]>48?m+n[i]:m))n+=n;}


    Try it online!






    share|improve this answer











    $endgroup$













    • $begingroup$
      what are the significance of the 48 and 49, out of curiosity?
      $endgroup$
      – Jonah
      yesterday






    • 1




      $begingroup$
      @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
      $endgroup$
      – Embodiment of Ignorance
      yesterday












    • $begingroup$
      shouldn't you use 0 and 1 instead here :P
      $endgroup$
      – ASCII-only
      yesterday










    • $begingroup$
      @ASCII-only I'm using a string, not an array.
      $endgroup$
      – Embodiment of Ignorance
      yesterday










    • $begingroup$
      @EmbodimentofIgnorance why not use a List and Skip, or something like that
      $endgroup$
      – ASCII-only
      yesterday





















    1












    $begingroup$


    J, 65 bytes



    (([:(][echo)(}.@[)`([,{.@[#1{],])@.({.@]));1|.])&>/^:(0<0#@{>)^:5


    Try it online!



    I may golf this further later. Note the 5 at the end would be infinity _ in the actual program, but I've left it there to make running the non-halting examples easier.






    share|improve this answer











    $endgroup$





















      0












      $begingroup$


      Python 2, 96 82 bytes





      def g(d,p):
      while d:
      c=p[0];p=p[1:]+[c];d=[d[1:],d+[p[0]]*d[0]][c]
      if d:yield d


      Try it online!



      Stealing a bit from Emodiment of Ignorance's answer...



      A generator which uses lists of 1's and 0's for input / output.






      share|improve this answer











      $endgroup$





















        0












        $begingroup$


        Jelly, 40 bytes



        ;€Ø2œịxØ1œị$Ʋ$Ḋ€2,1œị$?1¦ṙ€1$2¦µ⁺1ịGṄƲ¿Ḣ


        Try it online!



        I’ve assumed trailing newlines are ok. I’ve also gone with a list of two lists of zeros and ones as input, and output to stdout.






        share|improve this answer









        $endgroup$





















          0












          $begingroup$


          Python 3, 74 bytes





          def f(d,p):
          while d:c,*p=p+p[:1];d=(d[1:],d+p[:1]*d[0])[c];d and print(d)


          Try it online!



          Arguments: d: data, p: program.






          share|improve this answer









          $endgroup$





















            0












            $begingroup$


            Python 1, 78 bytes





            a,b=input()
            while a:
            b=b[1:]+b[:1];a=[a[1:],a+b[:1]*a[0]][b[0]]
            if a:print a


            Try it online!






            share|improve this answer











            $endgroup$













            • $begingroup$
              Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
              $endgroup$
              – Chas Brown
              yesterday










            • $begingroup$
              @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
              $endgroup$
              – Embodiment of Ignorance
              yesterday












            • $begingroup$
              @ChasBrown The OP says multiple trailing newlines are allowed, see here
              $endgroup$
              – Embodiment of Ignorance
              yesterday












            • $begingroup$
              But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
              $endgroup$
              – Chas Brown
              yesterday












            • $begingroup$
              python 1? python 2 doesn't work?
              $endgroup$
              – ASCII-only
              yesterday



















            0












            $begingroup$


            05AB1E, 24 21 bytes



            [¹Nèi¬i¹N>è«}ë¦}DõQ#=


            Takes the program as first input and data as second input.input.



            Try it online.



            Explanation:





            [             # Start an infinite loop:
            ¹Nè # Get the N'th digit of the first (program) input
            # (NOTES: N is the index of the infinite loop;
            # indexing in 05AB1E automatically wraps around)
            i # If this digit is 1:
            ¬ # Push the head of the current data (without popping it)
            # (will take the second (data) input implicitly if it's the first iteration)
            i } # If this head is 1:
            ¹N>è # Get the (N+1)'th digit of the first (program) input
            « # And append it to the current data
            ë } # Else (the digit is a 0 instead):
            ¦ # Remove the first digit from the current data
            # (will take the second input (data) implicitly if it's the first iteration)
            DõQ # If the current data is an empty string:
            # # Stop the infinite loop
            = # Print the current data with trailing newline (without popping it)





            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%2f182788%2fsimulate-bitwise-cyclic-tag%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              8 Answers
              8






              active

              oldest

              votes








              8 Answers
              8






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              3












              $begingroup$

              Haskell, 77 71 bytes



              f@(d:e)#(p:q)=f:[[e,e],[f,f++[q!!0]]]!!p!!d#q
              _#_=[]
              a!b=tail$a#cycle b


              Try it online!






              share|improve this answer











              $endgroup$


















                3












                $begingroup$

                Haskell, 77 71 bytes



                f@(d:e)#(p:q)=f:[[e,e],[f,f++[q!!0]]]!!p!!d#q
                _#_=[]
                a!b=tail$a#cycle b


                Try it online!






                share|improve this answer











                $endgroup$
















                  3












                  3








                  3





                  $begingroup$

                  Haskell, 77 71 bytes



                  f@(d:e)#(p:q)=f:[[e,e],[f,f++[q!!0]]]!!p!!d#q
                  _#_=[]
                  a!b=tail$a#cycle b


                  Try it online!






                  share|improve this answer











                  $endgroup$



                  Haskell, 77 71 bytes



                  f@(d:e)#(p:q)=f:[[e,e],[f,f++[q!!0]]]!!p!!d#q
                  _#_=[]
                  a!b=tail$a#cycle b


                  Try it online!







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited yesterday

























                  answered yesterday









                  niminimi

                  32.6k32489




                  32.6k32489























                      2












                      $begingroup$


                      C# (Visual C# Interactive Compiler), 82 bytes





                      m=>n=>{for(int i=0;m!="";Print(m=n[i++]<49?m.Substring(1):m[0]>48?m+n[i]:m))n+=n;}


                      Try it online!






                      share|improve this answer











                      $endgroup$













                      • $begingroup$
                        what are the significance of the 48 and 49, out of curiosity?
                        $endgroup$
                        – Jonah
                        yesterday






                      • 1




                        $begingroup$
                        @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday












                      • $begingroup$
                        shouldn't you use 0 and 1 instead here :P
                        $endgroup$
                        – ASCII-only
                        yesterday










                      • $begingroup$
                        @ASCII-only I'm using a string, not an array.
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday










                      • $begingroup$
                        @EmbodimentofIgnorance why not use a List and Skip, or something like that
                        $endgroup$
                        – ASCII-only
                        yesterday


















                      2












                      $begingroup$


                      C# (Visual C# Interactive Compiler), 82 bytes





                      m=>n=>{for(int i=0;m!="";Print(m=n[i++]<49?m.Substring(1):m[0]>48?m+n[i]:m))n+=n;}


                      Try it online!






                      share|improve this answer











                      $endgroup$













                      • $begingroup$
                        what are the significance of the 48 and 49, out of curiosity?
                        $endgroup$
                        – Jonah
                        yesterday






                      • 1




                        $begingroup$
                        @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday












                      • $begingroup$
                        shouldn't you use 0 and 1 instead here :P
                        $endgroup$
                        – ASCII-only
                        yesterday










                      • $begingroup$
                        @ASCII-only I'm using a string, not an array.
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday










                      • $begingroup$
                        @EmbodimentofIgnorance why not use a List and Skip, or something like that
                        $endgroup$
                        – ASCII-only
                        yesterday
















                      2












                      2








                      2





                      $begingroup$


                      C# (Visual C# Interactive Compiler), 82 bytes





                      m=>n=>{for(int i=0;m!="";Print(m=n[i++]<49?m.Substring(1):m[0]>48?m+n[i]:m))n+=n;}


                      Try it online!






                      share|improve this answer











                      $endgroup$




                      C# (Visual C# Interactive Compiler), 82 bytes





                      m=>n=>{for(int i=0;m!="";Print(m=n[i++]<49?m.Substring(1):m[0]>48?m+n[i]:m))n+=n;}


                      Try it online!







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited yesterday

























                      answered yesterday









                      Embodiment of IgnoranceEmbodiment of Ignorance

                      2,866127




                      2,866127












                      • $begingroup$
                        what are the significance of the 48 and 49, out of curiosity?
                        $endgroup$
                        – Jonah
                        yesterday






                      • 1




                        $begingroup$
                        @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday












                      • $begingroup$
                        shouldn't you use 0 and 1 instead here :P
                        $endgroup$
                        – ASCII-only
                        yesterday










                      • $begingroup$
                        @ASCII-only I'm using a string, not an array.
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday










                      • $begingroup$
                        @EmbodimentofIgnorance why not use a List and Skip, or something like that
                        $endgroup$
                        – ASCII-only
                        yesterday




















                      • $begingroup$
                        what are the significance of the 48 and 49, out of curiosity?
                        $endgroup$
                        – Jonah
                        yesterday






                      • 1




                        $begingroup$
                        @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday












                      • $begingroup$
                        shouldn't you use 0 and 1 instead here :P
                        $endgroup$
                        – ASCII-only
                        yesterday










                      • $begingroup$
                        @ASCII-only I'm using a string, not an array.
                        $endgroup$
                        – Embodiment of Ignorance
                        yesterday










                      • $begingroup$
                        @EmbodimentofIgnorance why not use a List and Skip, or something like that
                        $endgroup$
                        – ASCII-only
                        yesterday


















                      $begingroup$
                      what are the significance of the 48 and 49, out of curiosity?
                      $endgroup$
                      – Jonah
                      yesterday




                      $begingroup$
                      what are the significance of the 48 and 49, out of curiosity?
                      $endgroup$
                      – Jonah
                      yesterday




                      1




                      1




                      $begingroup$
                      @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
                      $endgroup$
                      – Embodiment of Ignorance
                      yesterday






                      $begingroup$
                      @Jonah 48 is the ASCII value of 0, and 49 is the ASCII value of 1
                      $endgroup$
                      – Embodiment of Ignorance
                      yesterday














                      $begingroup$
                      shouldn't you use 0 and 1 instead here :P
                      $endgroup$
                      – ASCII-only
                      yesterday




                      $begingroup$
                      shouldn't you use 0 and 1 instead here :P
                      $endgroup$
                      – ASCII-only
                      yesterday












                      $begingroup$
                      @ASCII-only I'm using a string, not an array.
                      $endgroup$
                      – Embodiment of Ignorance
                      yesterday




                      $begingroup$
                      @ASCII-only I'm using a string, not an array.
                      $endgroup$
                      – Embodiment of Ignorance
                      yesterday












                      $begingroup$
                      @EmbodimentofIgnorance why not use a List and Skip, or something like that
                      $endgroup$
                      – ASCII-only
                      yesterday






                      $begingroup$
                      @EmbodimentofIgnorance why not use a List and Skip, or something like that
                      $endgroup$
                      – ASCII-only
                      yesterday













                      1












                      $begingroup$


                      J, 65 bytes



                      (([:(][echo)(}.@[)`([,{.@[#1{],])@.({.@]));1|.])&>/^:(0<0#@{>)^:5


                      Try it online!



                      I may golf this further later. Note the 5 at the end would be infinity _ in the actual program, but I've left it there to make running the non-halting examples easier.






                      share|improve this answer











                      $endgroup$


















                        1












                        $begingroup$


                        J, 65 bytes



                        (([:(][echo)(}.@[)`([,{.@[#1{],])@.({.@]));1|.])&>/^:(0<0#@{>)^:5


                        Try it online!



                        I may golf this further later. Note the 5 at the end would be infinity _ in the actual program, but I've left it there to make running the non-halting examples easier.






                        share|improve this answer











                        $endgroup$
















                          1












                          1








                          1





                          $begingroup$


                          J, 65 bytes



                          (([:(][echo)(}.@[)`([,{.@[#1{],])@.({.@]));1|.])&>/^:(0<0#@{>)^:5


                          Try it online!



                          I may golf this further later. Note the 5 at the end would be infinity _ in the actual program, but I've left it there to make running the non-halting examples easier.






                          share|improve this answer











                          $endgroup$




                          J, 65 bytes



                          (([:(][echo)(}.@[)`([,{.@[#1{],])@.({.@]));1|.])&>/^:(0<0#@{>)^:5


                          Try it online!



                          I may golf this further later. Note the 5 at the end would be infinity _ in the actual program, but I've left it there to make running the non-halting examples easier.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited yesterday

























                          answered yesterday









                          JonahJonah

                          2,6611017




                          2,6611017























                              0












                              $begingroup$


                              Python 2, 96 82 bytes





                              def g(d,p):
                              while d:
                              c=p[0];p=p[1:]+[c];d=[d[1:],d+[p[0]]*d[0]][c]
                              if d:yield d


                              Try it online!



                              Stealing a bit from Emodiment of Ignorance's answer...



                              A generator which uses lists of 1's and 0's for input / output.






                              share|improve this answer











                              $endgroup$


















                                0












                                $begingroup$


                                Python 2, 96 82 bytes





                                def g(d,p):
                                while d:
                                c=p[0];p=p[1:]+[c];d=[d[1:],d+[p[0]]*d[0]][c]
                                if d:yield d


                                Try it online!



                                Stealing a bit from Emodiment of Ignorance's answer...



                                A generator which uses lists of 1's and 0's for input / output.






                                share|improve this answer











                                $endgroup$
















                                  0












                                  0








                                  0





                                  $begingroup$


                                  Python 2, 96 82 bytes





                                  def g(d,p):
                                  while d:
                                  c=p[0];p=p[1:]+[c];d=[d[1:],d+[p[0]]*d[0]][c]
                                  if d:yield d


                                  Try it online!



                                  Stealing a bit from Emodiment of Ignorance's answer...



                                  A generator which uses lists of 1's and 0's for input / output.






                                  share|improve this answer











                                  $endgroup$




                                  Python 2, 96 82 bytes





                                  def g(d,p):
                                  while d:
                                  c=p[0];p=p[1:]+[c];d=[d[1:],d+[p[0]]*d[0]][c]
                                  if d:yield d


                                  Try it online!



                                  Stealing a bit from Emodiment of Ignorance's answer...



                                  A generator which uses lists of 1's and 0's for input / output.







                                  share|improve this answer














                                  share|improve this answer



                                  share|improve this answer








                                  edited yesterday

























                                  answered yesterday









                                  Chas BrownChas Brown

                                  5,2091523




                                  5,2091523























                                      0












                                      $begingroup$


                                      Jelly, 40 bytes



                                      ;€Ø2œịxØ1œị$Ʋ$Ḋ€2,1œị$?1¦ṙ€1$2¦µ⁺1ịGṄƲ¿Ḣ


                                      Try it online!



                                      I’ve assumed trailing newlines are ok. I’ve also gone with a list of two lists of zeros and ones as input, and output to stdout.






                                      share|improve this answer









                                      $endgroup$


















                                        0












                                        $begingroup$


                                        Jelly, 40 bytes



                                        ;€Ø2œịxØ1œị$Ʋ$Ḋ€2,1œị$?1¦ṙ€1$2¦µ⁺1ịGṄƲ¿Ḣ


                                        Try it online!



                                        I’ve assumed trailing newlines are ok. I’ve also gone with a list of two lists of zeros and ones as input, and output to stdout.






                                        share|improve this answer









                                        $endgroup$
















                                          0












                                          0








                                          0





                                          $begingroup$


                                          Jelly, 40 bytes



                                          ;€Ø2œịxØ1œị$Ʋ$Ḋ€2,1œị$?1¦ṙ€1$2¦µ⁺1ịGṄƲ¿Ḣ


                                          Try it online!



                                          I’ve assumed trailing newlines are ok. I’ve also gone with a list of two lists of zeros and ones as input, and output to stdout.






                                          share|improve this answer









                                          $endgroup$




                                          Jelly, 40 bytes



                                          ;€Ø2œịxØ1œị$Ʋ$Ḋ€2,1œị$?1¦ṙ€1$2¦µ⁺1ịGṄƲ¿Ḣ


                                          Try it online!



                                          I’ve assumed trailing newlines are ok. I’ve also gone with a list of two lists of zeros and ones as input, and output to stdout.







                                          share|improve this answer












                                          share|improve this answer



                                          share|improve this answer










                                          answered yesterday









                                          Nick KennedyNick Kennedy

                                          1,36649




                                          1,36649























                                              0












                                              $begingroup$


                                              Python 3, 74 bytes





                                              def f(d,p):
                                              while d:c,*p=p+p[:1];d=(d[1:],d+p[:1]*d[0])[c];d and print(d)


                                              Try it online!



                                              Arguments: d: data, p: program.






                                              share|improve this answer









                                              $endgroup$


















                                                0












                                                $begingroup$


                                                Python 3, 74 bytes





                                                def f(d,p):
                                                while d:c,*p=p+p[:1];d=(d[1:],d+p[:1]*d[0])[c];d and print(d)


                                                Try it online!



                                                Arguments: d: data, p: program.






                                                share|improve this answer









                                                $endgroup$
















                                                  0












                                                  0








                                                  0





                                                  $begingroup$


                                                  Python 3, 74 bytes





                                                  def f(d,p):
                                                  while d:c,*p=p+p[:1];d=(d[1:],d+p[:1]*d[0])[c];d and print(d)


                                                  Try it online!



                                                  Arguments: d: data, p: program.






                                                  share|improve this answer









                                                  $endgroup$




                                                  Python 3, 74 bytes





                                                  def f(d,p):
                                                  while d:c,*p=p+p[:1];d=(d[1:],d+p[:1]*d[0])[c];d and print(d)


                                                  Try it online!



                                                  Arguments: d: data, p: program.







                                                  share|improve this answer












                                                  share|improve this answer



                                                  share|improve this answer










                                                  answered yesterday









                                                  Erik the OutgolferErik the Outgolfer

                                                  33k429106




                                                  33k429106























                                                      0












                                                      $begingroup$


                                                      Python 1, 78 bytes





                                                      a,b=input()
                                                      while a:
                                                      b=b[1:]+b[:1];a=[a[1:],a+b[:1]*a[0]][b[0]]
                                                      if a:print a


                                                      Try it online!






                                                      share|improve this answer











                                                      $endgroup$













                                                      • $begingroup$
                                                        Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday










                                                      • $begingroup$
                                                        @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        @ChasBrown The OP says multiple trailing newlines are allowed, see here
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday












                                                      • $begingroup$
                                                        python 1? python 2 doesn't work?
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday
















                                                      0












                                                      $begingroup$


                                                      Python 1, 78 bytes





                                                      a,b=input()
                                                      while a:
                                                      b=b[1:]+b[:1];a=[a[1:],a+b[:1]*a[0]][b[0]]
                                                      if a:print a


                                                      Try it online!






                                                      share|improve this answer











                                                      $endgroup$













                                                      • $begingroup$
                                                        Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday










                                                      • $begingroup$
                                                        @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        @ChasBrown The OP says multiple trailing newlines are allowed, see here
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday












                                                      • $begingroup$
                                                        python 1? python 2 doesn't work?
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday














                                                      0












                                                      0








                                                      0





                                                      $begingroup$


                                                      Python 1, 78 bytes





                                                      a,b=input()
                                                      while a:
                                                      b=b[1:]+b[:1];a=[a[1:],a+b[:1]*a[0]][b[0]]
                                                      if a:print a


                                                      Try it online!






                                                      share|improve this answer











                                                      $endgroup$




                                                      Python 1, 78 bytes





                                                      a,b=input()
                                                      while a:
                                                      b=b[1:]+b[:1];a=[a[1:],a+b[:1]*a[0]][b[0]]
                                                      if a:print a


                                                      Try it online!







                                                      share|improve this answer














                                                      share|improve this answer



                                                      share|improve this answer








                                                      edited yesterday

























                                                      answered yesterday









                                                      Embodiment of IgnoranceEmbodiment of Ignorance

                                                      2,866127




                                                      2,866127












                                                      • $begingroup$
                                                        Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday










                                                      • $begingroup$
                                                        @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        @ChasBrown The OP says multiple trailing newlines are allowed, see here
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday












                                                      • $begingroup$
                                                        python 1? python 2 doesn't work?
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday


















                                                      • $begingroup$
                                                        Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday










                                                      • $begingroup$
                                                        @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        @ChasBrown The OP says multiple trailing newlines are allowed, see here
                                                        $endgroup$
                                                        – Embodiment of Ignorance
                                                        yesterday












                                                      • $begingroup$
                                                        But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
                                                        $endgroup$
                                                        – Chas Brown
                                                        yesterday












                                                      • $begingroup$
                                                        python 1? python 2 doesn't work?
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday
















                                                      $begingroup$
                                                      Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
                                                      $endgroup$
                                                      – Chas Brown
                                                      yesterday




                                                      $begingroup$
                                                      Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
                                                      $endgroup$
                                                      – Chas Brown
                                                      yesterday












                                                      $begingroup$
                                                      @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
                                                      $endgroup$
                                                      – Embodiment of Ignorance
                                                      yesterday






                                                      $begingroup$
                                                      @ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
                                                      $endgroup$
                                                      – Embodiment of Ignorance
                                                      yesterday














                                                      $begingroup$
                                                      @ChasBrown The OP says multiple trailing newlines are allowed, see here
                                                      $endgroup$
                                                      – Embodiment of Ignorance
                                                      yesterday






                                                      $begingroup$
                                                      @ChasBrown The OP says multiple trailing newlines are allowed, see here
                                                      $endgroup$
                                                      – Embodiment of Ignorance
                                                      yesterday














                                                      $begingroup$
                                                      But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
                                                      $endgroup$
                                                      – Chas Brown
                                                      yesterday






                                                      $begingroup$
                                                      But after switching to arrays of 1's and 0s, now you're printing an empty array [] instead of a newline on e.g., data [1,0,0] , program [0].
                                                      $endgroup$
                                                      – Chas Brown
                                                      yesterday














                                                      $begingroup$
                                                      python 1? python 2 doesn't work?
                                                      $endgroup$
                                                      – ASCII-only
                                                      yesterday




                                                      $begingroup$
                                                      python 1? python 2 doesn't work?
                                                      $endgroup$
                                                      – ASCII-only
                                                      yesterday











                                                      0












                                                      $begingroup$


                                                      05AB1E, 24 21 bytes



                                                      [¹Nèi¬i¹N>è«}ë¦}DõQ#=


                                                      Takes the program as first input and data as second input.input.



                                                      Try it online.



                                                      Explanation:





                                                      [             # Start an infinite loop:
                                                      ¹Nè # Get the N'th digit of the first (program) input
                                                      # (NOTES: N is the index of the infinite loop;
                                                      # indexing in 05AB1E automatically wraps around)
                                                      i # If this digit is 1:
                                                      ¬ # Push the head of the current data (without popping it)
                                                      # (will take the second (data) input implicitly if it's the first iteration)
                                                      i } # If this head is 1:
                                                      ¹N>è # Get the (N+1)'th digit of the first (program) input
                                                      « # And append it to the current data
                                                      ë } # Else (the digit is a 0 instead):
                                                      ¦ # Remove the first digit from the current data
                                                      # (will take the second input (data) implicitly if it's the first iteration)
                                                      DõQ # If the current data is an empty string:
                                                      # # Stop the infinite loop
                                                      = # Print the current data with trailing newline (without popping it)





                                                      share|improve this answer











                                                      $endgroup$


















                                                        0












                                                        $begingroup$


                                                        05AB1E, 24 21 bytes



                                                        [¹Nèi¬i¹N>è«}ë¦}DõQ#=


                                                        Takes the program as first input and data as second input.input.



                                                        Try it online.



                                                        Explanation:





                                                        [             # Start an infinite loop:
                                                        ¹Nè # Get the N'th digit of the first (program) input
                                                        # (NOTES: N is the index of the infinite loop;
                                                        # indexing in 05AB1E automatically wraps around)
                                                        i # If this digit is 1:
                                                        ¬ # Push the head of the current data (without popping it)
                                                        # (will take the second (data) input implicitly if it's the first iteration)
                                                        i } # If this head is 1:
                                                        ¹N>è # Get the (N+1)'th digit of the first (program) input
                                                        « # And append it to the current data
                                                        ë } # Else (the digit is a 0 instead):
                                                        ¦ # Remove the first digit from the current data
                                                        # (will take the second input (data) implicitly if it's the first iteration)
                                                        DõQ # If the current data is an empty string:
                                                        # # Stop the infinite loop
                                                        = # Print the current data with trailing newline (without popping it)





                                                        share|improve this answer











                                                        $endgroup$
















                                                          0












                                                          0








                                                          0





                                                          $begingroup$


                                                          05AB1E, 24 21 bytes



                                                          [¹Nèi¬i¹N>è«}ë¦}DõQ#=


                                                          Takes the program as first input and data as second input.input.



                                                          Try it online.



                                                          Explanation:





                                                          [             # Start an infinite loop:
                                                          ¹Nè # Get the N'th digit of the first (program) input
                                                          # (NOTES: N is the index of the infinite loop;
                                                          # indexing in 05AB1E automatically wraps around)
                                                          i # If this digit is 1:
                                                          ¬ # Push the head of the current data (without popping it)
                                                          # (will take the second (data) input implicitly if it's the first iteration)
                                                          i } # If this head is 1:
                                                          ¹N>è # Get the (N+1)'th digit of the first (program) input
                                                          « # And append it to the current data
                                                          ë } # Else (the digit is a 0 instead):
                                                          ¦ # Remove the first digit from the current data
                                                          # (will take the second input (data) implicitly if it's the first iteration)
                                                          DõQ # If the current data is an empty string:
                                                          # # Stop the infinite loop
                                                          = # Print the current data with trailing newline (without popping it)





                                                          share|improve this answer











                                                          $endgroup$




                                                          05AB1E, 24 21 bytes



                                                          [¹Nèi¬i¹N>è«}ë¦}DõQ#=


                                                          Takes the program as first input and data as second input.input.



                                                          Try it online.



                                                          Explanation:





                                                          [             # Start an infinite loop:
                                                          ¹Nè # Get the N'th digit of the first (program) input
                                                          # (NOTES: N is the index of the infinite loop;
                                                          # indexing in 05AB1E automatically wraps around)
                                                          i # If this digit is 1:
                                                          ¬ # Push the head of the current data (without popping it)
                                                          # (will take the second (data) input implicitly if it's the first iteration)
                                                          i } # If this head is 1:
                                                          ¹N>è # Get the (N+1)'th digit of the first (program) input
                                                          « # And append it to the current data
                                                          ë } # Else (the digit is a 0 instead):
                                                          ¦ # Remove the first digit from the current data
                                                          # (will take the second input (data) implicitly if it's the first iteration)
                                                          DõQ # If the current data is an empty string:
                                                          # # Stop the infinite loop
                                                          = # Print the current data with trailing newline (without popping it)






                                                          share|improve this answer














                                                          share|improve this answer



                                                          share|improve this answer








                                                          edited 16 hours ago

























                                                          answered 16 hours ago









                                                          Kevin CruijssenKevin Cruijssen

                                                          42.4k570217




                                                          42.4k570217






























                                                              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%2f182788%2fsimulate-bitwise-cyclic-tag%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

                                                              Paper upload error, “Upload failed: The top margin is 0.715 in on page 3, which is below the required...

                                                              Emraan Hashmi Filmografia | Linki zewnętrzne | Menu nawigacyjneGulshan GroverGulshan...

                                                              How can I write this formula?newline and italics added with leqWhy does widehat behave differently if I...