Simulate Bitwise Cyclic TagSimulate a Minsky Register Machine (I)Simulate a Minsky Register Machine...
Extreme, but not acceptable situation and I can't start the work tomorrow morning
How old can references or sources in a thesis be?
If Manufacturer spice model and Datasheet give different values which should I use?
How can I fix this gap between bookcases I made?
Pronouncing Dictionary.com's W.O.D "vade mecum" in English
Is it tax fraud for an individual to declare non-taxable revenue as taxable income? (US tax laws)
Are there any consumables that function as addictive (psychedelic) drugs?
What would the Romans have called "sorcery"?
Why did the Germans forbid the possession of pet pigeons in Rostov-on-Don in 1941?
Email Account under attack (really) - anything I can do?
A newer friend of my brother's gave him a load of baseball cards that are supposedly extremely valuable. Is this a scam?
Can I interfere when another PC is about to be attacked?
What defenses are there against being summoned by the Gate spell?
What do you call something that goes against the spirit of the law, but is legal when interpreting the law to the letter?
Circuitry of TV splitters
Why are 150k or 200k jobs considered good when there are 300k+ births a month?
Are tax years 2016 & 2017 back taxes deductible for tax year 2018?
"which" command doesn't work / path of Safari?
Draw simple lines in Inkscape
Why is this code 6.5x slower with optimizations enabled?
What is the logic behind how bash tests for true/false?
Copycat chess is back
Shell script can be run only with sh command
How to make payment on the internet without leaving a money trail?
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
$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
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 to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$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
|
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 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 to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$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
|
show 9 more comments
$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 to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$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
|
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
6 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
6 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
39 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
36 mins 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
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
|
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 3 hours ago
answered 4 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
6 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
6 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
39 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
36 mins 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
6 hours ago
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
6 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
39 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
36 mins 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 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 of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
6 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
39 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
36 mins ago
|
show 1 more comment
$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 of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
6 hours ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
39 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
36 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
39 mins ago
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
39 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
37 mins ago
$begingroup$
@EmbodimentofIgnorance why not use a
List
and Skip
, or something like that$endgroup$
– ASCII-only
36 mins ago
$begingroup$
@EmbodimentofIgnorance why not use a
List
and Skip
, or something like that$endgroup$
– ASCII-only
36 mins 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 6 hours ago
answered 6 hours ago
JonahJonah
2,5911017
2,5911017
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 5 hours ago
answered 6 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 4 hours ago
Nick KennedyNick Kennedy
1,32649
1,32649
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 3 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
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
|
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
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
|
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 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
|
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
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
|
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
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 to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?$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