Simulate Bitwise Cyclic Tag
$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".
- 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"
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
$endgroup$
|
show 9 more comments
$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".
- 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"
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
$endgroup$
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
11 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
11 hours ago
$begingroup$
in the first test case,100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$endgroup$
– Jonah
11 hours ago
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
11 hours ago
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
11 hours ago
|
show 9 more comments
$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".
- 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"
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
$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".
- 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"
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
code-golf interpreter
edited 7 hours ago
MilkyWay90
asked 12 hours ago
MilkyWay90MilkyWay90
705315
705315
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
11 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
11 hours ago
$begingroup$
in the first test case,100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$endgroup$
– Jonah
11 hours ago
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
11 hours ago
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
11 hours ago
|
show 9 more comments
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
11 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
11 hours ago
$begingroup$
in the first test case,100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$endgroup$
– Jonah
11 hours ago
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
11 hours ago
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
11 hours ago
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
11 hours ago
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
11 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
11 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
11 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
11 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
11 hours ago
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
11 hours ago
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
11 hours ago
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
11 hours ago
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
11 hours ago
|
show 9 more comments
7 Answers
7
active
oldest
votes
$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!
$endgroup$
add a comment |
$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!
$endgroup$
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
10 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
10 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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!
$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
9 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty arrayinstead of a newline on e.g., data
[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
5 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "200"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%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
$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!
$endgroup$
add a comment |
$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!
$endgroup$
add a comment |
$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!
$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!
edited 6 hours ago
answered 8 hours ago
niminimi
32.6k32489
32.6k32489
add a comment |
add a comment |
$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!
$endgroup$
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
10 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
10 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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!
$endgroup$
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
10 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
10 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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!
$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!
edited 6 hours ago
answered 10 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
10 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
10 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
10 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
10 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
10 hours ago
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
10 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
10 hours ago
$begingroup$
@Jonah 48 is the ASCII value of
0
, and 49 is the ASCII value of 1
$endgroup$
– Embodiment of Ignorance
10 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use a
List
and Skip
, or something like that$endgroup$
– ASCII-only
4 hours ago
$begingroup$
@EmbodimentofIgnorance why not use a
List
and Skip
, or something like that$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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.
$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.
edited 10 hours ago
answered 10 hours ago
JonahJonah
2,6111017
2,6111017
add a comment |
add a comment |
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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.
$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.
edited 9 hours ago
answered 9 hours ago
Chas BrownChas Brown
5,1991523
5,1991523
add a comment |
add a comment |
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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.
$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.
answered 7 hours ago
Nick KennedyNick Kennedy
1,33649
1,33649
add a comment |
add a comment |
$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.
$endgroup$
add a comment |
$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.
$endgroup$
add a comment |
$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.
$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.
answered 7 hours ago
Erik the OutgolferErik the Outgolfer
33k429106
33k429106
add a comment |
add a comment |
$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!
$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
9 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty arrayinstead of a newline on e.g., data
[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
5 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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!
$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
9 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty arrayinstead of a newline on e.g., data
[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
5 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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!
$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!
edited 4 hours ago
answered 9 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
9 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty arrayinstead of a newline on e.g., data
[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
5 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
$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
9 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty arrayinstead of a newline on e.g., data
[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
5 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 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
9 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
9 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 hours ago
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
7 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
5 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
5 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 hours ago
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
4 hours ago
|
show 1 more comment
If this is an answer to a challenge…
…Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.
…Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
Explanations of your answer make it more interesting to read and are very much encouraged.…Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.
More generally…
…Please make sure to answer the question and provide sufficient detail.
…Avoid asking for help, clarification or responding to other answers (use comments instead).
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182788%2fsimulate-bitwise-cyclic-tag%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
11 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
11 hours ago
$begingroup$
in the first test case,
100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?$endgroup$
– Jonah
11 hours ago
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
11 hours ago
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
11 hours ago