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

How do you conduct xenoanthropology after first contact?

How can bays and straits be determined in a procedurally generated map?

DOS, create pipe for stdin/stdout of command.com(or 4dos.com) in C or Batch?

Why is an old chain unsafe?

What do you call something that goes against the spirit of the law, but is legal when interpreting the law to the letter?

Is there a familial term for apples and pears?

How old can references or sources in a thesis be?

What makes Graph invariants so useful/important?

How long does it take to type this?

How to report a triplet of septets in NMR tabulation?

Is there a minimum number of transactions in a block?

A Journey Through Space and Time

Can I interfere when another PC is about to be attacked?

Example of a relative pronoun

How can the DM most effectively choose 1 out of an odd number of players to be targeted by an attack or effect?

Is there really no realistic way for a skeleton monster to move around without magic?

Copycat chess is back

What is the logic behind how bash tests for true/false?

"You are your self first supporter", a more proper way to say it

What would happen to a modern skyscraper if it rains micro blackholes?

Why Is Death Allowed In the Matrix?

Is it possible to do 50 km distance without any previous training?

A function which translates a sentence to title-case

Infinite past with a beginning?



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













2












$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
    8 hours ago










  • $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
    7 hours ago










  • $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
    7 hours ago










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    7 hours ago










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
















2












$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
    8 hours ago










  • $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
    7 hours ago










  • $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
    7 hours ago










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    7 hours ago










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














2












2








2





$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 3 hours ago







MilkyWay90

















asked 8 hours ago









MilkyWay90MilkyWay90

695315




695315












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










  • $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
    7 hours ago










  • $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
    7 hours ago










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    7 hours ago










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


















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










  • $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
    7 hours ago










  • $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
    7 hours ago










  • $begingroup$
    @Jonah Oh, missed that
    $endgroup$
    – MilkyWay90
    7 hours ago










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
















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




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












$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
7 hours ago




$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
7 hours ago












$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
7 hours ago




$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
7 hours ago












$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
7 hours ago




$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
7 hours ago












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




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










7 Answers
7






active

oldest

votes


















1












$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$





















    1












    $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
      6 hours ago






    • 1




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












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










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










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





















    0












    $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
              6 hours ago










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












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












            • $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
              1 hour ago












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












            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

























            7 Answers
            7






            active

            oldest

            votes








            7 Answers
            7






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1












            $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$


















              1












              $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$
















                1












                1








                1





                $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 3 hours ago

























                answered 4 hours ago









                niminimi

                32.6k32489




                32.6k32489























                    1












                    $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
                      6 hours ago






                    • 1




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












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










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










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


















                    1












                    $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
                      6 hours ago






                    • 1




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












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










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










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
















                    1












                    1








                    1





                    $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 2 hours ago

























                    answered 6 hours ago









                    Embodiment of IgnoranceEmbodiment of Ignorance

                    2,828127




                    2,828127












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






                    • 1




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












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










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










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




















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






                    • 1




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












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










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










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


















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




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




                    1




                    1




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






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














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




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












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




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












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






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













                    0












                    $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$


                      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












                        0








                        0





                        $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 6 hours ago

























                        answered 6 hours ago









                        JonahJonah

                        2,5911017




                        2,5911017























                            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 5 hours ago

























                                answered 6 hours ago









                                Chas BrownChas Brown

                                5,1991523




                                5,1991523























                                    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 4 hours ago









                                        Nick KennedyNick Kennedy

                                        1,32649




                                        1,32649























                                            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 3 hours ago









                                                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
                                                      6 hours ago










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












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












                                                    • $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
                                                      1 hour ago












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
















                                                    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
                                                      6 hours ago










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












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












                                                    • $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
                                                      1 hour ago












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














                                                    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 1 hour ago

























                                                    answered 6 hours ago









                                                    Embodiment of IgnoranceEmbodiment of Ignorance

                                                    2,828127




                                                    2,828127












                                                    • $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
                                                      6 hours ago










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












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












                                                    • $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
                                                      1 hour ago












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


















                                                    • $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
                                                      6 hours ago










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












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












                                                    • $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
                                                      1 hour ago












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
















                                                    $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
                                                    6 hours ago




                                                    $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
                                                    6 hours ago












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






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














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






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














                                                    $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
                                                    1 hour ago






                                                    $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
                                                    1 hour ago














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




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


















                                                    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

                                                    Why do type traits not work with types in namespace scope?What are POD types in C++?Why can templates only be...

                                                    Will tsunami waves travel forever if there was no land?Why do tsunami waves begin with the water flowing away...

                                                    Simple Scan not detecting my scanner (Brother DCP-7055W)Brother MFC-L2700DW printer can print, can't...