Simulate Bitwise Cyclic TagSimulate a Minsky Register Machine (I)Simulate a Minsky Register Machine...
Does the average primeness of natural numbers tend to zero?
Add an angle to a sphere
I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine
Is domain driven design an anti-SQL pattern?
How can I fix this gap between bookcases I made?
When blogging recipes, how can I support both readers who want the narrative/journey and ones who want the printer-friendly recipe?
Does it makes sense to buy a new cycle to learn riding?
Why do UK politicians seemingly ignore opinion polls on Brexit?
Is every set a filtered colimit of finite sets?
What to wear for invited talk in Canada
Information to fellow intern about hiring?
Could Giant Ground Sloths have been a good pack animal for the ancient Mayans?
Is ipsum/ipsa/ipse a third person pronoun, or can it serve other functions?
How to make payment on the internet without leaving a money trail?
Are objects structures and/or vice versa?
Landlord wants to switch my lease to a "Land contract" to "get back at the city"
Is it wise to focus on putting odd beats on left when playing double bass drums?
Lied on resume at previous job
aging parents with no investments
Eliminate empty elements from a list with a specific pattern
What causes the sudden spool-up sound from an F-16 when enabling afterburner?
Symmetry in quantum mechanics
Check if two datetimes are between two others
Piano - What is the notation for a double stop where both notes in the double stop are different lengths?
Simulate Bitwise Cyclic Tag
Simulate a Minsky Register Machine (I)Simulate a Minsky Register Machine (II)Simulate any 1D cellular automatonTuring Machine SimulatorInterpret /// (pronounced 'slashes')Simulate a Cyclic Tag SystemOutput “Fit” numbersThe Binary Square Diagonal SequenceHalting Problem for Simplified HexagonySimulate a Cisco Ping
$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 11 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
yesterday
$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in the first test case,100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$endgroup$
– Jonah
yesterday
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday
|
show 11 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 yesterday
MilkyWay90
asked yesterday
MilkyWay90MilkyWay90
740316
740316
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
yesterday
$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in the first test case,100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$endgroup$
– Jonah
yesterday
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday
|
show 11 more comments
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
yesterday
$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in the first test case,100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?
$endgroup$
– Jonah
yesterday
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
yesterday
$begingroup$
This seems a duplicate of /questions/40300/simulate-a-cyclic-tag-system
$endgroup$
– Sanchises
yesterday
$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday
$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in the first test case,
100
goes to 10
on cmd 0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100
be 1
?$endgroup$
– Jonah
yesterday
$begingroup$
in the first test case,
100
goes to 10
on cmd 0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of 100
be 1
?$endgroup$
– Jonah
yesterday
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday
|
show 11 more comments
8 Answers
8
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
yesterday
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
yesterday
|
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
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array[]
instead of a newline on e.g., data[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
add a comment |
$begingroup$
05AB1E, 24 21 bytes
[¹Nèi¬i¹N>è«}ë¦}DõQ#=
Takes the program as first input and data as second input.input.
Try it online.
Explanation:
[ # Start an infinite loop:
¹Nè # Get the N'th digit of the first (program) input
# (NOTES: N is the index of the infinite loop;
# indexing in 05AB1E automatically wraps around)
i # If this digit is 1:
¬ # Push the head of the current data (without popping it)
# (will take the second (data) input implicitly if it's the first iteration)
i } # If this head is 1:
¹N>è # Get the (N+1)'th digit of the first (program) input
« # And append it to the current data
ë } # Else (the digit is a 0 instead):
¦ # Remove the first digit from the current data
# (will take the second input (data) implicitly if it's the first iteration)
DõQ # If the current data is an empty string:
# # Stop the infinite loop
= # Print the current data with trailing newline (without popping it)
$endgroup$
add a 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
8 Answers
8
active
oldest
votes
8 Answers
8
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 yesterday
answered yesterday
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
yesterday
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
yesterday
|
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
yesterday
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
yesterday
|
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 yesterday
answered yesterday
Embodiment of IgnoranceEmbodiment of Ignorance
2,866127
2,866127
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
yesterday
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
yesterday
|
show 1 more comment
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
yesterday
1
$begingroup$
@Jonah 48 is the ASCII value of0
, and 49 is the ASCII value of1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@EmbodimentofIgnorance why not use aList
andSkip
, or something like that
$endgroup$
– ASCII-only
yesterday
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
yesterday
$begingroup$
what are the significance of the 48 and 49, out of curiosity?
$endgroup$
– Jonah
yesterday
1
1
$begingroup$
@Jonah 48 is the ASCII value of
0
, and 49 is the ASCII value of 1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@Jonah 48 is the ASCII value of
0
, and 49 is the ASCII value of 1
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
shouldn't you use 0 and 1 instead here :P
$endgroup$
– ASCII-only
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ASCII-only I'm using a string, not an array.
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@EmbodimentofIgnorance why not use a
List
and Skip
, or something like that$endgroup$
– ASCII-only
yesterday
$begingroup$
@EmbodimentofIgnorance why not use a
List
and Skip
, or something like that$endgroup$
– ASCII-only
yesterday
|
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 yesterday
answered yesterday
JonahJonah
2,6611017
2,6611017
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 yesterday
answered yesterday
Chas BrownChas Brown
5,2091523
5,2091523
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 yesterday
Nick KennedyNick Kennedy
1,36649
1,36649
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 yesterday
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
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array[]
instead of a newline on e.g., data[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
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
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array[]
instead of a newline on e.g., data[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
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$
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 yesterday
answered yesterday
Embodiment of IgnoranceEmbodiment of Ignorance
2,866127
2,866127
$begingroup$
Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
$endgroup$
– Chas Brown
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array[]
instead of a newline on e.g., data[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
add a 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
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array[]
instead of a newline on e.g., data[1,0,0]
, program[0]
.
$endgroup$
– Chas Brown
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
$begingroup$
Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
$endgroup$
– Chas Brown
yesterday
$begingroup$
Nice! A niggle: for data '100', program '0', this will print the empty string once: but rule c says "If the data is not empty now, output the data."
$endgroup$
– Chas Brown
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown Small typo, I'm waiting for clarification from the OP if trailing newlines are ok
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
@ChasBrown The OP says multiple trailing newlines are allowed, see here
$endgroup$
– Embodiment of Ignorance
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array
[]
instead of a newline on e.g., data [1,0,0]
, program [0]
.$endgroup$
– Chas Brown
yesterday
$begingroup$
But after switching to arrays of 1's and 0s, now you're printing an empty array
[]
instead of a newline on e.g., data [1,0,0]
, program [0]
.$endgroup$
– Chas Brown
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
$begingroup$
python 1? python 2 doesn't work?
$endgroup$
– ASCII-only
yesterday
add a comment |
$begingroup$
05AB1E, 24 21 bytes
[¹Nèi¬i¹N>è«}ë¦}DõQ#=
Takes the program as first input and data as second input.input.
Try it online.
Explanation:
[ # Start an infinite loop:
¹Nè # Get the N'th digit of the first (program) input
# (NOTES: N is the index of the infinite loop;
# indexing in 05AB1E automatically wraps around)
i # If this digit is 1:
¬ # Push the head of the current data (without popping it)
# (will take the second (data) input implicitly if it's the first iteration)
i } # If this head is 1:
¹N>è # Get the (N+1)'th digit of the first (program) input
« # And append it to the current data
ë } # Else (the digit is a 0 instead):
¦ # Remove the first digit from the current data
# (will take the second input (data) implicitly if it's the first iteration)
DõQ # If the current data is an empty string:
# # Stop the infinite loop
= # Print the current data with trailing newline (without popping it)
$endgroup$
add a comment |
$begingroup$
05AB1E, 24 21 bytes
[¹Nèi¬i¹N>è«}ë¦}DõQ#=
Takes the program as first input and data as second input.input.
Try it online.
Explanation:
[ # Start an infinite loop:
¹Nè # Get the N'th digit of the first (program) input
# (NOTES: N is the index of the infinite loop;
# indexing in 05AB1E automatically wraps around)
i # If this digit is 1:
¬ # Push the head of the current data (without popping it)
# (will take the second (data) input implicitly if it's the first iteration)
i } # If this head is 1:
¹N>è # Get the (N+1)'th digit of the first (program) input
« # And append it to the current data
ë } # Else (the digit is a 0 instead):
¦ # Remove the first digit from the current data
# (will take the second input (data) implicitly if it's the first iteration)
DõQ # If the current data is an empty string:
# # Stop the infinite loop
= # Print the current data with trailing newline (without popping it)
$endgroup$
add a comment |
$begingroup$
05AB1E, 24 21 bytes
[¹Nèi¬i¹N>è«}ë¦}DõQ#=
Takes the program as first input and data as second input.input.
Try it online.
Explanation:
[ # Start an infinite loop:
¹Nè # Get the N'th digit of the first (program) input
# (NOTES: N is the index of the infinite loop;
# indexing in 05AB1E automatically wraps around)
i # If this digit is 1:
¬ # Push the head of the current data (without popping it)
# (will take the second (data) input implicitly if it's the first iteration)
i } # If this head is 1:
¹N>è # Get the (N+1)'th digit of the first (program) input
« # And append it to the current data
ë } # Else (the digit is a 0 instead):
¦ # Remove the first digit from the current data
# (will take the second input (data) implicitly if it's the first iteration)
DõQ # If the current data is an empty string:
# # Stop the infinite loop
= # Print the current data with trailing newline (without popping it)
$endgroup$
05AB1E, 24 21 bytes
[¹Nèi¬i¹N>è«}ë¦}DõQ#=
Takes the program as first input and data as second input.input.
Try it online.
Explanation:
[ # Start an infinite loop:
¹Nè # Get the N'th digit of the first (program) input
# (NOTES: N is the index of the infinite loop;
# indexing in 05AB1E automatically wraps around)
i # If this digit is 1:
¬ # Push the head of the current data (without popping it)
# (will take the second (data) input implicitly if it's the first iteration)
i } # If this head is 1:
¹N>è # Get the (N+1)'th digit of the first (program) input
« # And append it to the current data
ë } # Else (the digit is a 0 instead):
¦ # Remove the first digit from the current data
# (will take the second input (data) implicitly if it's the first iteration)
DõQ # If the current data is an empty string:
# # Stop the infinite loop
= # Print the current data with trailing newline (without popping it)
edited 16 hours ago
answered 16 hours ago
Kevin CruijssenKevin Cruijssen
42.4k570217
42.4k570217
add a comment |
add a 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
yesterday
$begingroup$
@Sanchises Seems like a borderline duplicate to that, but you have to get the result at a certain generation and that is for any cyclic tag system.
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in the first test case,
100
goes to10
on cmd0
, whose definition is "delete the left-most bit in the data." wouldn't the leftmost bit of100
be1
?$endgroup$
– Jonah
yesterday
$begingroup$
@Jonah Oh, missed that
$endgroup$
– MilkyWay90
yesterday
$begingroup$
in case (b), if you do the append, does the instruction pointer move right one or two characters?
$endgroup$
– Sparr
yesterday