Could you please stop shuffling the deck and play already?Unflatten an ArrayLisp Extraction MissionLeaving the NestCalculate the sum of ILDPost-determined Array SortingFind the “Recursive Size” of a ListCould you make me a hexagon please?Visit and exit an arrayCodegolf Rainbow : Sorting Colors with ReflectionLongest Repeating Subsequence of a Single Digit
How is the Swiss post e-voting system supposed to work, and how was it wrong?
What is this large pipe coming out of my roof?
Sword in the Stone story where the sword was held in place by electromagnets
It's a yearly task, alright
Instead of Universal Basic Income, why not Universal Basic NEEDS?
Is it normal that my co-workers at a fitness company criticize my food choices?
What is the greatest age difference between a married couple in Tanach?
Why does Deadpool say "You're welcome, Canada," after shooting Ryan Reynolds in the end credits?
How do I hide Chekhov's Gun?
Why are the outputs of printf and std::cout different
Converting Functions to Arrow functions
Be in awe of my brilliance!
Will a pinhole camera work with instant film?
Informing my boss about remarks from a nasty colleague
Co-worker team leader wants to inject his friend's awful software into our development. What should I say to our common boss?
Do I need life insurance if I can cover my own funeral costs?
Why doesn't using two cd commands in bash script execute the second command?
Bash: What does "masking return values" mean?
Why did it take so long to abandon sail after steamships were demonstrated?
An Accountant Seeks the Help of a Mathematician
Is it possible to upcast ritual spells?
Is it possible that AIC = BIC?
Define, (actually define) the "stability" and "energy" of a compound
Make a transparent 448*448 image
Could you please stop shuffling the deck and play already?
Unflatten an ArrayLisp Extraction MissionLeaving the NestCalculate the sum of ILDPost-determined Array SortingFind the “Recursive Size” of a ListCould you make me a hexagon please?Visit and exit an arrayCodegolf Rainbow : Sorting Colors with ReflectionLongest Repeating Subsequence of a Single Digit
$begingroup$
Challenge:
Input: A list of distinct positive integers within the range $[1, textlist-size]$.
Output: An integer: the amount of times the list is riffle-shuffled. For a list, this means the list is split in two halves, and these halves are interleaved (i.e. riffle-shuffling the list [1,2,3,4,5,6,7,8,9,10]
once would result in [1,6,2,7,3,8,4,9,5,10]
, so for this challenge the input [1,6,2,7,3,8,4,9,5,10]
would result in 1
).
Challenge rules:
- You can assume the list will only contain positive integers in the range $[1, textlist-size]$ (or $[0, textlist-size-1]$ if you choose to have 0-indexed input-lists).
- You can assume all input-lists will either be a valid riffle-shuffled list, or a sorted list which isn't shuffled (in which case the output is
0
). - You can assume the input-list will contain at least three values.
Step-by-step example:
Input: [1,3,5,7,9,2,4,6,8]
Unshuffling it once becomes: [1,5,9,4,8,3,7,2,6]
, because every even 0-indexed item comes first [1, ,5, ,9, ,4, ,8]
, and then all odd 0-indexed items after that [ ,3, ,7, ,2, ,6, ]
.
The list isn't ordered yet, so we continue:
Unshuffling the list again becomes: [1,9,8,7,6,5,4,3,2]
Again becomes: [1,8,6,4,2,9,7,5,3]
Then: [1,6,2,7,3,8,4,9,5]
And finally: [1,2,3,4,5,6,7,8,9]
, which is an ordered list, so we're done unshuffling.
We unshuffled the original [1,3,5,7,9,2,4,6,8]
five times to get to [1,2,3,4,5,6,7,8,9]
, so the output is 5
in this case.
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test cases:
Input Output
[1,2,3] 0
[1,2,3,4,5] 0
[1,3,2] 1
[1,6,2,7,3,8,4,9,5,10] 1
[1,3,5,7,2,4,6] 2
[1,8,6,4,2,9,7,5,3,10] 2
[1,9,8,7,6,5,4,3,2,10] 3
[1,5,9,4,8,3,7,2,6,10] 4
[1,3,5,7,9,2,4,6,8] 5
[1,6,11,5,10,4,9,3,8,2,7] 6
[1,10,19,9,18,8,17,7,16,6,15,5,14,4,13,3,12,2,11,20] 10
[1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20] 17
[1,141,32,172,63,203,94,234,125,16,156,47,187,78,218,109,249,140,31,171,62,202,93,233,124,15,155,46,186,77,217,108,248,139,30,170,61,201,92,232,123,14,154,45,185,76,216,107,247,138,29,169,60,200,91,231,122,13,153,44,184,75,215,106,246,137,28,168,59,199,90,230,121,12,152,43,183,74,214,105,245,136,27,167,58,198,89,229,120,11,151,42,182,73,213,104,244,135,26,166,57,197,88,228,119,10,150,41,181,72,212,103,243,134,25,165,56,196,87,227,118,9,149,40,180,71,211,102,242,133,24,164,55,195,86,226,117,8,148,39,179,70,210,101,241,132,23,163,54,194,85,225,116,7,147,38,178,69,209,100,240,131,22,162,53,193,84,224,115,6,146,37,177,68,208,99,239,130,21,161,52,192,83,223,114,5,145,36,176,67,207,98,238,129,20,160,51,191,82,222,113,4,144,35,175,66,206,97,237,128,19,159,50,190,81,221,112,3,143,34,174,65,205,96,236,127,18,158,49,189,80,220,111,2,142,33,173,64,204,95,235,126,17,157,48,188,79,219,110,250]
45
code-golf number array-manipulation integer
$endgroup$
|
show 4 more comments
$begingroup$
Challenge:
Input: A list of distinct positive integers within the range $[1, textlist-size]$.
Output: An integer: the amount of times the list is riffle-shuffled. For a list, this means the list is split in two halves, and these halves are interleaved (i.e. riffle-shuffling the list [1,2,3,4,5,6,7,8,9,10]
once would result in [1,6,2,7,3,8,4,9,5,10]
, so for this challenge the input [1,6,2,7,3,8,4,9,5,10]
would result in 1
).
Challenge rules:
- You can assume the list will only contain positive integers in the range $[1, textlist-size]$ (or $[0, textlist-size-1]$ if you choose to have 0-indexed input-lists).
- You can assume all input-lists will either be a valid riffle-shuffled list, or a sorted list which isn't shuffled (in which case the output is
0
). - You can assume the input-list will contain at least three values.
Step-by-step example:
Input: [1,3,5,7,9,2,4,6,8]
Unshuffling it once becomes: [1,5,9,4,8,3,7,2,6]
, because every even 0-indexed item comes first [1, ,5, ,9, ,4, ,8]
, and then all odd 0-indexed items after that [ ,3, ,7, ,2, ,6, ]
.
The list isn't ordered yet, so we continue:
Unshuffling the list again becomes: [1,9,8,7,6,5,4,3,2]
Again becomes: [1,8,6,4,2,9,7,5,3]
Then: [1,6,2,7,3,8,4,9,5]
And finally: [1,2,3,4,5,6,7,8,9]
, which is an ordered list, so we're done unshuffling.
We unshuffled the original [1,3,5,7,9,2,4,6,8]
five times to get to [1,2,3,4,5,6,7,8,9]
, so the output is 5
in this case.
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test cases:
Input Output
[1,2,3] 0
[1,2,3,4,5] 0
[1,3,2] 1
[1,6,2,7,3,8,4,9,5,10] 1
[1,3,5,7,2,4,6] 2
[1,8,6,4,2,9,7,5,3,10] 2
[1,9,8,7,6,5,4,3,2,10] 3
[1,5,9,4,8,3,7,2,6,10] 4
[1,3,5,7,9,2,4,6,8] 5
[1,6,11,5,10,4,9,3,8,2,7] 6
[1,10,19,9,18,8,17,7,16,6,15,5,14,4,13,3,12,2,11,20] 10
[1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20] 17
[1,141,32,172,63,203,94,234,125,16,156,47,187,78,218,109,249,140,31,171,62,202,93,233,124,15,155,46,186,77,217,108,248,139,30,170,61,201,92,232,123,14,154,45,185,76,216,107,247,138,29,169,60,200,91,231,122,13,153,44,184,75,215,106,246,137,28,168,59,199,90,230,121,12,152,43,183,74,214,105,245,136,27,167,58,198,89,229,120,11,151,42,182,73,213,104,244,135,26,166,57,197,88,228,119,10,150,41,181,72,212,103,243,134,25,165,56,196,87,227,118,9,149,40,180,71,211,102,242,133,24,164,55,195,86,226,117,8,148,39,179,70,210,101,241,132,23,163,54,194,85,225,116,7,147,38,178,69,209,100,240,131,22,162,53,193,84,224,115,6,146,37,177,68,208,99,239,130,21,161,52,192,83,223,114,5,145,36,176,67,207,98,238,129,20,160,51,191,82,222,113,4,144,35,175,66,206,97,237,128,19,159,50,190,81,221,112,3,143,34,174,65,205,96,236,127,18,158,49,189,80,220,111,2,142,33,173,64,204,95,235,126,17,157,48,188,79,219,110,250]
45
code-golf number array-manipulation integer
$endgroup$
$begingroup$
One or two test cases with an odd length and an output greater than 0 would be nice. It's easy to mess the riffle in such cases if you have to write the riffle code by yourself instead of relying on builtins.
$endgroup$
– Olivier Grégoire
Mar 11 at 14:21
$begingroup$
@OlivierGrégoire The[1,3,5,7,9,2,4,6,8]
is of length 9, but I will add a few more for lengths 7 and 11 perhaps. EDIT: Added the test cases[1,3,5,7,2,4,6] = 2
(length 7) and[1,6,11,5,10,4,9,3,8,2,7] = 6
(length 11). Hope that helps.
$endgroup$
– Kevin Cruijssen
Mar 11 at 14:27
$begingroup$
My bad: I was sure the test case you mentioned was of size 8. But thanks for the extra test cases.
$endgroup$
– Olivier Grégoire
Mar 11 at 15:37
1
$begingroup$
Question as currently formulated seems "wrong"... a single riffle shuffle should result in the first and last cards changing, unless you're pulling some kind of con trick! i.e. [6,1,7,2,8,3,9,4,10,5] after a single shuffle of 10 cards.
$endgroup$
– Steve
2 days ago
2
$begingroup$
@Steve I guess you're kinda right. Riffle-shuffling in general simply interleaves two halves, so both[1,6,2,7,3,8,4,9,5,10]
or[6,1,7,2,8,3,9,4,10,5]
are possible. In my challenge it does mean that the top card will always remain the top card, so it's indeed a bit of a con-trick.. I've never seen someone irl use only riffle-shuffles to shuffle a deck of cards however. Usually they also use other type of shuffles in between. Anyway, it's too late to change the challenge now, so for the sake of this challenge the top card will always remain the top card after a riffle-shuffle.
$endgroup$
– Kevin Cruijssen
2 days ago
|
show 4 more comments
$begingroup$
Challenge:
Input: A list of distinct positive integers within the range $[1, textlist-size]$.
Output: An integer: the amount of times the list is riffle-shuffled. For a list, this means the list is split in two halves, and these halves are interleaved (i.e. riffle-shuffling the list [1,2,3,4,5,6,7,8,9,10]
once would result in [1,6,2,7,3,8,4,9,5,10]
, so for this challenge the input [1,6,2,7,3,8,4,9,5,10]
would result in 1
).
Challenge rules:
- You can assume the list will only contain positive integers in the range $[1, textlist-size]$ (or $[0, textlist-size-1]$ if you choose to have 0-indexed input-lists).
- You can assume all input-lists will either be a valid riffle-shuffled list, or a sorted list which isn't shuffled (in which case the output is
0
). - You can assume the input-list will contain at least three values.
Step-by-step example:
Input: [1,3,5,7,9,2,4,6,8]
Unshuffling it once becomes: [1,5,9,4,8,3,7,2,6]
, because every even 0-indexed item comes first [1, ,5, ,9, ,4, ,8]
, and then all odd 0-indexed items after that [ ,3, ,7, ,2, ,6, ]
.
The list isn't ordered yet, so we continue:
Unshuffling the list again becomes: [1,9,8,7,6,5,4,3,2]
Again becomes: [1,8,6,4,2,9,7,5,3]
Then: [1,6,2,7,3,8,4,9,5]
And finally: [1,2,3,4,5,6,7,8,9]
, which is an ordered list, so we're done unshuffling.
We unshuffled the original [1,3,5,7,9,2,4,6,8]
five times to get to [1,2,3,4,5,6,7,8,9]
, so the output is 5
in this case.
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test cases:
Input Output
[1,2,3] 0
[1,2,3,4,5] 0
[1,3,2] 1
[1,6,2,7,3,8,4,9,5,10] 1
[1,3,5,7,2,4,6] 2
[1,8,6,4,2,9,7,5,3,10] 2
[1,9,8,7,6,5,4,3,2,10] 3
[1,5,9,4,8,3,7,2,6,10] 4
[1,3,5,7,9,2,4,6,8] 5
[1,6,11,5,10,4,9,3,8,2,7] 6
[1,10,19,9,18,8,17,7,16,6,15,5,14,4,13,3,12,2,11,20] 10
[1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20] 17
[1,141,32,172,63,203,94,234,125,16,156,47,187,78,218,109,249,140,31,171,62,202,93,233,124,15,155,46,186,77,217,108,248,139,30,170,61,201,92,232,123,14,154,45,185,76,216,107,247,138,29,169,60,200,91,231,122,13,153,44,184,75,215,106,246,137,28,168,59,199,90,230,121,12,152,43,183,74,214,105,245,136,27,167,58,198,89,229,120,11,151,42,182,73,213,104,244,135,26,166,57,197,88,228,119,10,150,41,181,72,212,103,243,134,25,165,56,196,87,227,118,9,149,40,180,71,211,102,242,133,24,164,55,195,86,226,117,8,148,39,179,70,210,101,241,132,23,163,54,194,85,225,116,7,147,38,178,69,209,100,240,131,22,162,53,193,84,224,115,6,146,37,177,68,208,99,239,130,21,161,52,192,83,223,114,5,145,36,176,67,207,98,238,129,20,160,51,191,82,222,113,4,144,35,175,66,206,97,237,128,19,159,50,190,81,221,112,3,143,34,174,65,205,96,236,127,18,158,49,189,80,220,111,2,142,33,173,64,204,95,235,126,17,157,48,188,79,219,110,250]
45
code-golf number array-manipulation integer
$endgroup$
Challenge:
Input: A list of distinct positive integers within the range $[1, textlist-size]$.
Output: An integer: the amount of times the list is riffle-shuffled. For a list, this means the list is split in two halves, and these halves are interleaved (i.e. riffle-shuffling the list [1,2,3,4,5,6,7,8,9,10]
once would result in [1,6,2,7,3,8,4,9,5,10]
, so for this challenge the input [1,6,2,7,3,8,4,9,5,10]
would result in 1
).
Challenge rules:
- You can assume the list will only contain positive integers in the range $[1, textlist-size]$ (or $[0, textlist-size-1]$ if you choose to have 0-indexed input-lists).
- You can assume all input-lists will either be a valid riffle-shuffled list, or a sorted list which isn't shuffled (in which case the output is
0
). - You can assume the input-list will contain at least three values.
Step-by-step example:
Input: [1,3,5,7,9,2,4,6,8]
Unshuffling it once becomes: [1,5,9,4,8,3,7,2,6]
, because every even 0-indexed item comes first [1, ,5, ,9, ,4, ,8]
, and then all odd 0-indexed items after that [ ,3, ,7, ,2, ,6, ]
.
The list isn't ordered yet, so we continue:
Unshuffling the list again becomes: [1,9,8,7,6,5,4,3,2]
Again becomes: [1,8,6,4,2,9,7,5,3]
Then: [1,6,2,7,3,8,4,9,5]
And finally: [1,2,3,4,5,6,7,8,9]
, which is an ordered list, so we're done unshuffling.
We unshuffled the original [1,3,5,7,9,2,4,6,8]
five times to get to [1,2,3,4,5,6,7,8,9]
, so the output is 5
in this case.
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test cases:
Input Output
[1,2,3] 0
[1,2,3,4,5] 0
[1,3,2] 1
[1,6,2,7,3,8,4,9,5,10] 1
[1,3,5,7,2,4,6] 2
[1,8,6,4,2,9,7,5,3,10] 2
[1,9,8,7,6,5,4,3,2,10] 3
[1,5,9,4,8,3,7,2,6,10] 4
[1,3,5,7,9,2,4,6,8] 5
[1,6,11,5,10,4,9,3,8,2,7] 6
[1,10,19,9,18,8,17,7,16,6,15,5,14,4,13,3,12,2,11,20] 10
[1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20] 17
[1,141,32,172,63,203,94,234,125,16,156,47,187,78,218,109,249,140,31,171,62,202,93,233,124,15,155,46,186,77,217,108,248,139,30,170,61,201,92,232,123,14,154,45,185,76,216,107,247,138,29,169,60,200,91,231,122,13,153,44,184,75,215,106,246,137,28,168,59,199,90,230,121,12,152,43,183,74,214,105,245,136,27,167,58,198,89,229,120,11,151,42,182,73,213,104,244,135,26,166,57,197,88,228,119,10,150,41,181,72,212,103,243,134,25,165,56,196,87,227,118,9,149,40,180,71,211,102,242,133,24,164,55,195,86,226,117,8,148,39,179,70,210,101,241,132,23,163,54,194,85,225,116,7,147,38,178,69,209,100,240,131,22,162,53,193,84,224,115,6,146,37,177,68,208,99,239,130,21,161,52,192,83,223,114,5,145,36,176,67,207,98,238,129,20,160,51,191,82,222,113,4,144,35,175,66,206,97,237,128,19,159,50,190,81,221,112,3,143,34,174,65,205,96,236,127,18,158,49,189,80,220,111,2,142,33,173,64,204,95,235,126,17,157,48,188,79,219,110,250]
45
code-golf number array-manipulation integer
code-golf number array-manipulation integer
edited yesterday
Kevin Cruijssen
asked Mar 11 at 10:19
Kevin CruijssenKevin Cruijssen
40.5k565210
40.5k565210
$begingroup$
One or two test cases with an odd length and an output greater than 0 would be nice. It's easy to mess the riffle in such cases if you have to write the riffle code by yourself instead of relying on builtins.
$endgroup$
– Olivier Grégoire
Mar 11 at 14:21
$begingroup$
@OlivierGrégoire The[1,3,5,7,9,2,4,6,8]
is of length 9, but I will add a few more for lengths 7 and 11 perhaps. EDIT: Added the test cases[1,3,5,7,2,4,6] = 2
(length 7) and[1,6,11,5,10,4,9,3,8,2,7] = 6
(length 11). Hope that helps.
$endgroup$
– Kevin Cruijssen
Mar 11 at 14:27
$begingroup$
My bad: I was sure the test case you mentioned was of size 8. But thanks for the extra test cases.
$endgroup$
– Olivier Grégoire
Mar 11 at 15:37
1
$begingroup$
Question as currently formulated seems "wrong"... a single riffle shuffle should result in the first and last cards changing, unless you're pulling some kind of con trick! i.e. [6,1,7,2,8,3,9,4,10,5] after a single shuffle of 10 cards.
$endgroup$
– Steve
2 days ago
2
$begingroup$
@Steve I guess you're kinda right. Riffle-shuffling in general simply interleaves two halves, so both[1,6,2,7,3,8,4,9,5,10]
or[6,1,7,2,8,3,9,4,10,5]
are possible. In my challenge it does mean that the top card will always remain the top card, so it's indeed a bit of a con-trick.. I've never seen someone irl use only riffle-shuffles to shuffle a deck of cards however. Usually they also use other type of shuffles in between. Anyway, it's too late to change the challenge now, so for the sake of this challenge the top card will always remain the top card after a riffle-shuffle.
$endgroup$
– Kevin Cruijssen
2 days ago
|
show 4 more comments
$begingroup$
One or two test cases with an odd length and an output greater than 0 would be nice. It's easy to mess the riffle in such cases if you have to write the riffle code by yourself instead of relying on builtins.
$endgroup$
– Olivier Grégoire
Mar 11 at 14:21
$begingroup$
@OlivierGrégoire The[1,3,5,7,9,2,4,6,8]
is of length 9, but I will add a few more for lengths 7 and 11 perhaps. EDIT: Added the test cases[1,3,5,7,2,4,6] = 2
(length 7) and[1,6,11,5,10,4,9,3,8,2,7] = 6
(length 11). Hope that helps.
$endgroup$
– Kevin Cruijssen
Mar 11 at 14:27
$begingroup$
My bad: I was sure the test case you mentioned was of size 8. But thanks for the extra test cases.
$endgroup$
– Olivier Grégoire
Mar 11 at 15:37
1
$begingroup$
Question as currently formulated seems "wrong"... a single riffle shuffle should result in the first and last cards changing, unless you're pulling some kind of con trick! i.e. [6,1,7,2,8,3,9,4,10,5] after a single shuffle of 10 cards.
$endgroup$
– Steve
2 days ago
2
$begingroup$
@Steve I guess you're kinda right. Riffle-shuffling in general simply interleaves two halves, so both[1,6,2,7,3,8,4,9,5,10]
or[6,1,7,2,8,3,9,4,10,5]
are possible. In my challenge it does mean that the top card will always remain the top card, so it's indeed a bit of a con-trick.. I've never seen someone irl use only riffle-shuffles to shuffle a deck of cards however. Usually they also use other type of shuffles in between. Anyway, it's too late to change the challenge now, so for the sake of this challenge the top card will always remain the top card after a riffle-shuffle.
$endgroup$
– Kevin Cruijssen
2 days ago
$begingroup$
One or two test cases with an odd length and an output greater than 0 would be nice. It's easy to mess the riffle in such cases if you have to write the riffle code by yourself instead of relying on builtins.
$endgroup$
– Olivier Grégoire
Mar 11 at 14:21
$begingroup$
One or two test cases with an odd length and an output greater than 0 would be nice. It's easy to mess the riffle in such cases if you have to write the riffle code by yourself instead of relying on builtins.
$endgroup$
– Olivier Grégoire
Mar 11 at 14:21
$begingroup$
@OlivierGrégoire The
[1,3,5,7,9,2,4,6,8]
is of length 9, but I will add a few more for lengths 7 and 11 perhaps. EDIT: Added the test cases [1,3,5,7,2,4,6] = 2
(length 7) and [1,6,11,5,10,4,9,3,8,2,7] = 6
(length 11). Hope that helps.$endgroup$
– Kevin Cruijssen
Mar 11 at 14:27
$begingroup$
@OlivierGrégoire The
[1,3,5,7,9,2,4,6,8]
is of length 9, but I will add a few more for lengths 7 and 11 perhaps. EDIT: Added the test cases [1,3,5,7,2,4,6] = 2
(length 7) and [1,6,11,5,10,4,9,3,8,2,7] = 6
(length 11). Hope that helps.$endgroup$
– Kevin Cruijssen
Mar 11 at 14:27
$begingroup$
My bad: I was sure the test case you mentioned was of size 8. But thanks for the extra test cases.
$endgroup$
– Olivier Grégoire
Mar 11 at 15:37
$begingroup$
My bad: I was sure the test case you mentioned was of size 8. But thanks for the extra test cases.
$endgroup$
– Olivier Grégoire
Mar 11 at 15:37
1
1
$begingroup$
Question as currently formulated seems "wrong"... a single riffle shuffle should result in the first and last cards changing, unless you're pulling some kind of con trick! i.e. [6,1,7,2,8,3,9,4,10,5] after a single shuffle of 10 cards.
$endgroup$
– Steve
2 days ago
$begingroup$
Question as currently formulated seems "wrong"... a single riffle shuffle should result in the first and last cards changing, unless you're pulling some kind of con trick! i.e. [6,1,7,2,8,3,9,4,10,5] after a single shuffle of 10 cards.
$endgroup$
– Steve
2 days ago
2
2
$begingroup$
@Steve I guess you're kinda right. Riffle-shuffling in general simply interleaves two halves, so both
[1,6,2,7,3,8,4,9,5,10]
or [6,1,7,2,8,3,9,4,10,5]
are possible. In my challenge it does mean that the top card will always remain the top card, so it's indeed a bit of a con-trick.. I've never seen someone irl use only riffle-shuffles to shuffle a deck of cards however. Usually they also use other type of shuffles in between. Anyway, it's too late to change the challenge now, so for the sake of this challenge the top card will always remain the top card after a riffle-shuffle.$endgroup$
– Kevin Cruijssen
2 days ago
$begingroup$
@Steve I guess you're kinda right. Riffle-shuffling in general simply interleaves two halves, so both
[1,6,2,7,3,8,4,9,5,10]
or [6,1,7,2,8,3,9,4,10,5]
are possible. In my challenge it does mean that the top card will always remain the top card, so it's indeed a bit of a con-trick.. I've never seen someone irl use only riffle-shuffles to shuffle a deck of cards however. Usually they also use other type of shuffles in between. Anyway, it's too late to change the challenge now, so for the sake of this challenge the top card will always remain the top card after a riffle-shuffle.$endgroup$
– Kevin Cruijssen
2 days ago
|
show 4 more comments
21 Answers
21
active
oldest
votes
$begingroup$
JavaScript (ES6), 44 bytes
Shorter version suggested by @nwellnhof
Expects a deck with 1-indexed cards as input.
f=(a,x=1)=>a[x]-2&&1+f(a,x*2%(a.length-1|1))
Try it online!
Given a deck $[c_0,ldots,c_L-1]$ of length $L$, we define:
$$x_n=begincases
2^nbmod L&textif Ltext is odd\
2^nbmod (L-1)&textif Ltext is even\
endcases$$
And we look for $n$ such that $c_x_n=2$.
JavaScript (ES6), 57 52 50 bytes
Expects a deck with 0-indexed cards as input.
f=(a,x=1,k=a.length-1|1)=>a[1]-x%k&&1+f(a,x*-~k/2)
Try it online!
How?
Since JS is lacking native support for extracting array slices with a custom stepping, simulating the entire riffle-shuffle would probably be rather costly (but to be honest, I didn't even try). However, the solution can also be found by just looking at the 2nd card and the total number of cards in the deck.
Given a deck of length $L$, this code looks for $n$ such that:
$$c_2equivleft(frack+12right)^npmod k$$
where $c_2$ is the second card and $k$ is defined as:
$$k=begincases
L&textif Ltext is odd\
L-1&textif Ltext is even\
endcases$$
$endgroup$
add a comment |
$begingroup$
Python 2, 39 bytes
f=lambda x:x[1]-2and-~f(x[::2]+x[1::2])
Try it online!
-4 thanks to Jonathan Allan.
$endgroup$
$begingroup$
Save four bytes withf=lambda x:2!=x[1]and-~f(x[::2]+x[1::2])
$endgroup$
– Jonathan Allan
Mar 11 at 14:48
$begingroup$
@JonathanAllan Oh, of course! Well...!=
can be-
. ;-)
$endgroup$
– Erik the Outgolfer
Mar 11 at 14:49
$begingroup$
Ah, yeah caveat emptor :D (or justx[1]>2
I guess)
$endgroup$
– Jonathan Allan
Mar 11 at 14:50
add a comment |
$begingroup$
Jelly, 8 bytes
ŒœẎ$ƬiṢ’
Try it online!
How?
ŒœẎ$ƬiṢ’ - Link: list of integers A
Ƭ - collect up until results are no longer unique...
$ - last two links as a monad:
Œœ - odds & evens i.e. [a,b,c,d,...] -> [[a,c,...],[b,d,...]]
Ẏ - tighten -> [a,c,...,b,d,...]
Ṣ - sort A
i - first (1-indexed) index of sorted A in collected shuffles
’ - decrement
$endgroup$
add a comment |
$begingroup$
Perl 6, 34 32 bytes
-2 bytes thanks to Jo King
(.[(2 X**^$_)X%$_-1+
Try it online!
Similar to Arnauld's approach. The index of the second card after n shuffles is 2**n % k
with k defined as in Arnauld's answer.
$endgroup$
add a comment |
$begingroup$
Perl 6, 36 34 32 bytes
-2 bytes thanks to nwellnhof
$!=.[1]-2&&$!(.sort:$++%2)+1
Try it online!
Reverse riffle shuffles by sorting by the index modulo 2 until the list is sorted, then returns the length of the sequence.
It's funny, I don't usually try the recursive approach for Perl 6, but this time it ended up shorter than the original.
Explanation:
$!=.[1]-2&&$!(.sort:$++%2)+1
$!= # Assign the anonymous code block to $!
.[1]-2&& # While the list is not sorted
$!( ) # Recursively call the function on
.sort:$++%2 # It sorted by the parity of each index
+1 # And return the number of shuffles
$endgroup$
add a comment |
$begingroup$
R, 58 55 45 bytes
a=scan();while(a[2]>2)a=matrix(a,,2,F<-F+1);F
Try it online!
Simulates the sorting process. Input is 1-indexed, returns FALSE
for 0.
$endgroup$
$begingroup$
Very nice! I was working on a similar approach but using a recursive function, which didn't work out as golfy.
$endgroup$
– user2390246
2 days ago
add a comment |
$begingroup$
APL (Dyalog Unicode), 35 26 23 22 bytesSBCS
⍳⍴⍵]
Try it online!
Thanks to Adám for the help, Erik the Outgolfer for -3 and ngn for -1.
The TIO link contains two test cases.
Explanation:
⍳⍴⍵]
⍳⍴⍵] ⍝ function takes one argument: ⍵, the array
⍵≡⍳≢⍵ ⍝ if the array is sorted:
⍵≡⍳≢⍵ ⍝ array = 1..length(array)
:0 ⍝ then return 0
⋄ ⍝ otherwise
1+ ⍝ increment
∇ ⍝ the value of the recursive call with this argument:
⍵[ ] ⍝ index into the argument with these indexes:
⍳⍴⍵ ⍝ - generate a range from 1 up to the size of ⍵
2| ⍝ - %2: generate a binary mask like [1 0 1 0 1 0]
⍒ ⍝ - grade (sorts but returns indexes instead of values), so we have the indexes of all the 1s first, then the 0s.
Old solution:i⊣i+←1⋄⍵[⍒2⍣∧/2≤/⍵⍵⊣i←¯1
¹
$endgroup$
1
$begingroup$
Count the recursion depth for -3.
$endgroup$
– Erik the Outgolfer
Mar 11 at 13:26
$begingroup$
@EriktheOutgolfer Much better, thanks!
$endgroup$
– Ven
Mar 11 at 13:29
$begingroup$
∧/2≤/⍵
->⍵≡⍳≢⍵
$endgroup$
– ngn
2 days ago
$begingroup$
@ngn didn't realize the array had no holes. Thanks!
$endgroup$
– Ven
2 days ago
add a comment |
$begingroup$
05AB1E (legacy), 9 bytes
[DāQ#ι˜]N
Try it online!
Explanation
[ # ] # loop until
ā # the 1-indexed enumeration of the current list
D Q # equals a copy of the current list
ι˜ # while false, uninterleave the current list and flatten
N # push the iteration index N as output
$endgroup$
$begingroup$
I didn't even knew it was possible to output the index outside the loop in the legacy. I thought it would be 0 again at that point, just like in the new 05AB1E version. Nice answer! Shorter than my 10-byter using the unshuffle-builtinÅ≠
that inspired this challenge. :)
$endgroup$
– Kevin Cruijssen
Mar 11 at 10:31
$begingroup$
@KevinCruijssen: Interesting. I didn't know there was an unshuffle. In this instance it's the same as my version, but unshuffle maintains dimensions on 2D arrays.
$endgroup$
– Emigna
Mar 11 at 11:18
add a comment |
$begingroup$
Java (JDK), 59 bytes
a->1)]>2;)c++;return c;
Try it online!
Works reliably only for arrays with a size less than 31 or solutions with less than 31 iterations. For a more general solution, see the following solution with 63 bytes:
a->1);return c;
Try it online!
Explanation
In a riffle, the next position is the previous one times two modulo either length if it's odd or length - 1 if it's even.
So I'm iterating over all indices using this formula until I find the value 2 in the array.
Credits
- -8 bytes thanks to Kevin Cruijssen. (Previous algorithm, using array)
- -5 bytes thanks to Arnauld.
$endgroup$
$begingroup$
163 bytes by using two timesx.clone()
instead ofA.copyOf(x,l)
.
$endgroup$
– Kevin Cruijssen
Mar 11 at 12:58
2
$begingroup$
64 bytes
$endgroup$
– Arnauld
Mar 11 at 13:57
$begingroup$
@Arnauld Thanks! I had a hard time figuring how to simplify that "length if odd else length - 1"
$endgroup$
– Olivier Grégoire
Mar 11 at 13:59
$begingroup$
@Arnauld Oh! My new algorithm is actually the same as yours... And I spent half an hour figuring it out by myself...
$endgroup$
– Olivier Grégoire
Mar 11 at 14:04
$begingroup$
More precisely, it's equivalent to an improvement over my original algorithm found by @nwellnhof.
$endgroup$
– Arnauld
Mar 11 at 14:10
|
show 5 more comments
$begingroup$
APL(NARS), chars 49, bytes 98
0∧/¯1↓⍵≤1⌽⍵:⍺⋄(⍺+1)∇⍵[d],⍵[i∼d←↑¨i⊂⍨2∣i←⍳≢⍵]⍵
why use in the deepest loop, one algo that should be nlog(n), when we can use one linear n? just for few bytes more?
[⍵≡⍵[⍋⍵] O(nlog n) and the confront each element for see are in order using ∧/¯1↓⍵≤1⌽⍵ O(n)]test:
f←0∧/¯1↓⍵≤1⌽⍵:⍺⋄(⍺+1)∇⍵[d],⍵[i∼d←↑¨i⊂⍨2∣i←⍳≢⍵]⍵
f ,1
0
f 1 2 3
0
f 1,9,8,7,6,5,4,3,2,10
3
f 1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20
17
$endgroup$
$begingroup$
That’s the first time I’ve seen someone differentiate between characters and bytes 👍. It always bugs me when I see Unicode characters and they claim that it’s one byte per character. This 😠 is not one byte!
$endgroup$
– Kerndog73
Mar 11 at 21:31
$begingroup$
@Kerndog73 All is number, but in APL think characters are not numbers... (they seems element in AV array)
$endgroup$
– RosLuP
Mar 11 at 23:41
add a comment |
$begingroup$
Ruby, 42 bytes
f=->d,r=1~-d.max)]
Try it online!
How:
Search for number 2 inside the array: if it's in second position, the deck hasn't been shuffled, otherwise check the positions where successive shuffles would put it.
$endgroup$
add a comment |
$begingroup$
R, 70 72 bytes
x=scan();i=0;while(any(x>sort(x)))x=c(x[y<-seq(x)%%2>0],x[!y]);i=i+1;i
Try it online!
Now handles the zero shuffle case.
$endgroup$
1
$begingroup$
@user2390246 fair point. Adjusted accordingly
$endgroup$
– Nick Kennedy
2 days ago
add a comment |
$begingroup$
C (GCC) 64 63 bytes
-1 byte from nwellnhof
i,r;f(c,v)int*v;1);return~-r;
This is a drastically shorter answer based on Arnauld's and Olivier Grégoire's answers. I'll leave my old solution below since it solves the slightly more general problem of decks with cards that are not contiguous.
Try it online
C (GCC) 162 bytes
a[999],b[999],i,r,o;f(c,v)int*v;for(r=0;o=1;++r)!i)&o;if(o)return r;for(i+=o=c+1;i--;)v[i]=i<o/2?a[i]:b[i-o/2];
Try it online
a[999],b[999],i,r,o; //pre-declare variables
f(c,v)int*v; //argument list
for(r=0;o=1;++r)!i)&o; //if out of order set o (ordered) to false
if(o) //if ordered
return r; //return number of shuffles
//note that i==-1 at this point
for(i+=o=c+1;i--;)//set i=c and o=c+1, loop through v
v[i]=i<o/2?a[i]:b[i-o/2];//set first half of v to a, second half to b
$endgroup$
add a comment |
$begingroup$
Wolfram Language (Mathematica), 62 bytes
c=0;While[Sort[a]!=a,a=a[[1;;-1;;2]]~Join~a[[2;;-1;;2]];c++];c
Try it online!
Explanation
The input list is a
. It is unriffled and compared with the sorted list until they match.
$endgroup$
add a comment |
$begingroup$
Red, 87 79 78 bytes
func[b][c: 0 while[b/2 > 2][c: c + 1 b: append extract b 2 extract next b 2]c]
Try it online!
$endgroup$
add a comment |
$begingroup$
Perl 5 -pa
, 77 bytes
mappush@$_%2,$_0..$#F;$_=0;++$_,@s=sort$a-$b@F=@F[@0,@1]while"@F"ne"@s"
Try it online!
$endgroup$
add a comment |
$begingroup$
Pyth, 18 bytes
L?SIb0hys%L2>Bb1
y
Try it online!
-2 thanks to @Erik the Outgolfer.
The script has two line: the first one defines a function y
, the second line calls y
with the implicit Q
(evaluated stdin) argument.
L?SIb0hys%L2>Bb1
L function y(b)
? if...
SIb the Invariant b == sum(b) holds
0 return 0
h otherwise increment...
y ...the return of a recursive call with:
B the current argument "bifurcated", an array of:
b - the original argument
> 1 - same with the head popped off
L map...
% 2 ...take only every 2nd value in each array
s and concat them back together
¹
$endgroup$
add a comment |
$begingroup$
Japt, 13 11 bytes
Taking my shiny, new, very-work-in-progress interpreter for a test drive.
g1 Í©ÒßUñÏu
Try it or run all test cases
g1 Í©ÒßUñÏu :Implicit input of integer array U
g1 :Get the element at 0-based index 1
Í :Subtract from 2
© :Logical AND with
Ò : Negation of bitwise NOT of
ß : A recursive call to the programme with input
Uñ : U sorted
Ï : By 0-based indices
u : Modulo 2
$endgroup$
1
$begingroup$
This interpreter looks super cool.
$endgroup$
– recursive
Mar 11 at 23:51
add a comment |
$begingroup$
J, 28 bytes
1#@}.(/:2|i.@#)^:(2<1
$begingroup$
Very nice! I was working on a similar approach but using a recursive function, which didn't work out as golfy.
$endgroup$
– user2390246
2 days ago
$begingroup$
Very nice! I was working on a similar approach but using a recursive function, which didn't work out as golfy.
$endgroup$
– user2390246
2 days ago
$begingroup$
Very nice! I was working on a similar approach but using a recursive function, which didn't work out as golfy.
$endgroup$
– user2390246
2 days ago
add a comment .(/:2|i.@#)^:(2<1
$begingroup$
J, 28 bytes
1#@.(/:2|i.@#)^:(2<1improve this answer
$endgroup$
$begingroup$
converge-iterate, then drop one, and count - this leads to shorter code
$endgroup$
– ngn
2 days ago
$begingroup$
@ngn. So, similar to my J solution - I'll try it later, thanks!
$endgroup$
– Galen Ivanov
2 days ago
add a comment .(/:2|i.@#)^:(2<1])^:a:
Try it online!
Inspired be Ven's APL solution.
Explanation:
^: ^:a: while
(2<1]) the 1-st (zero-indexed) element is greater than 2
( ) do the following and keep the intermediate results
i.@# make a list form 0 to len-1
2. drop the first row of the result
#@ and take the length (how many rows -> steps)
K (ngn/k), 25 bytes
Thanks to ngn for the advice and for his K interpreter!
#1_~2=x@1x@<2!!#xx
Try it online!
edited yesterday
answered Mar 11 at 20:24
Galen IvanovGalen Ivanov
7,12211034
7,12211034
$begingroup$
converge-iterate, then drop one, and count - this leads to shorter code
$endgroup$
– ngn
2 days ago
$begingroup$
@ngn. So, similar to my J solution - I'll try it later, thanks!
$endgroup$
– Galen Ivanov
2 days ago
add a comment |
$begingroup$
converge-iterate, then drop one, and count - this leads to shorter code
$endgroup$
– ngn
2 days ago
$begingroup$
@ngn. So, similar to my J solution - I'll try it later, thanks!
$endgroup$
– Galen Ivanov
2 days ago
$begingroup$
converge-iterate, then drop one, and count - this leads to shorter code
$endgroup$
– ngn
2 days ago
$begingroup$
converge-iterate, then drop one, and count - this leads to shorter code
$endgroup$
– ngn
2 days ago
$begingroup$
@ngn. So, similar to my J solution - I'll try it later, thanks!
$endgroup$
– Galen Ivanov
2 days ago
$begingroup$
@ngn. So, similar to my J solution - I'll try it later, thanks!
$endgroup$
– Galen Ivanov
2 days ago
add a comment |
$begingroup$
R, 85 bytes
s=scan();u=sort(s);k=0;while(any(u[seq(s)]!=s))k=k+1;u=as.vector(t(matrix(u,,2)));k
Try it online.
Explanation
Stupid (brute force) method, much less elegant than following the card #2.
Instead of unshuffling the input s
we start with a sorted vector u
that we progressively shuffle until it is identical with s
. This gives warnings (but shuffle counts are still correct) for odd lengths of input due to folding an odd-length vector into a 2-column matrix; in that case, in R, missing data point is filled by recycling of the first element of input.
The loop will never terminate if we provide a vector that cannot be unshuffled.
Addendum: you save one byte if unshuffling instead. Unlike the answer above, there is no need to transpose with t()
, however, ordering is byrow=TRUE
which is why T
appears in matrix()
.
R, 84 bytes
s=scan();u=sort(s);k=0;while(any(s[seq(u)]!=u))k=k+1;s=as.vector(matrix(s,,2,T));k
Try it online!
New contributor
$endgroup$
$begingroup$
I took the liberty of fixing your title and adding a TIO-link for the test cases (based on the other R answer), and also verified your answer works as intended, so +1 from me and welcome to PPCG! :)
$endgroup$
– Kevin Cruijssen
yesterday
add a comment |
$begingroup$
R, 85 bytes
s=scan();u=sort(s);k=0;while(any(u[seq(s)]!=s))k=k+1;u=as.vector(t(matrix(u,,2)));k
Try it online.
Explanation
Stupid (brute force) method, much less elegant than following the card #2.
Instead of unshuffling the input s
we start with a sorted vector u
that we progressively shuffle until it is identical with s
. This gives warnings (but shuffle counts are still correct) for odd lengths of input due to folding an odd-length vector into a 2-column matrix; in that case, in R, missing data point is filled by recycling of the first element of input.
The loop will never terminate if we provide a vector that cannot be unshuffled.
Addendum: you save one byte if unshuffling instead. Unlike the answer above, there is no need to transpose with t()
, however, ordering is byrow=TRUE
which is why T
appears in matrix()
.
R, 84 bytes
s=scan();u=sort(s);k=0;while(any(s[seq(u)]!=u))k=k+1;s=as.vector(matrix(s,,2,T));k
Try it online!
New contributor
$endgroup$
$begingroup$
I took the liberty of fixing your title and adding a TIO-link for the test cases (based on the other R answer), and also verified your answer works as intended, so +1 from me and welcome to PPCG! :)
$endgroup$
– Kevin Cruijssen
yesterday
add a comment |
$begingroup$
R, 85 bytes
s=scan();u=sort(s);k=0;while(any(u[seq(s)]!=s))k=k+1;u=as.vector(t(matrix(u,,2)));k
Try it online.
Explanation
Stupid (brute force) method, much less elegant than following the card #2.
Instead of unshuffling the input s
we start with a sorted vector u
that we progressively shuffle until it is identical with s
. This gives warnings (but shuffle counts are still correct) for odd lengths of input due to folding an odd-length vector into a 2-column matrix; in that case, in R, missing data point is filled by recycling of the first element of input.
The loop will never terminate if we provide a vector that cannot be unshuffled.
Addendum: you save one byte if unshuffling instead. Unlike the answer above, there is no need to transpose with t()
, however, ordering is byrow=TRUE
which is why T
appears in matrix()
.
R, 84 bytes
s=scan();u=sort(s);k=0;while(any(s[seq(u)]!=u))k=k+1;s=as.vector(matrix(s,,2,T));k
Try it online!
New contributor
$endgroup$
R, 85 bytes
s=scan();u=sort(s);k=0;while(any(u[seq(s)]!=s))k=k+1;u=as.vector(t(matrix(u,,2)));k
Try it online.
Explanation
Stupid (brute force) method, much less elegant than following the card #2.
Instead of unshuffling the input s
we start with a sorted vector u
that we progressively shuffle until it is identical with s
. This gives warnings (but shuffle counts are still correct) for odd lengths of input due to folding an odd-length vector into a 2-column matrix; in that case, in R, missing data point is filled by recycling of the first element of input.
The loop will never terminate if we provide a vector that cannot be unshuffled.
Addendum: you save one byte if unshuffling instead. Unlike the answer above, there is no need to transpose with t()
, however, ordering is byrow=TRUE
which is why T
appears in matrix()
.
R, 84 bytes
s=scan();u=sort(s);k=0;while(any(s[seq(u)]!=u))k=k+1;s=as.vector(matrix(s,,2,T));k
Try it online!
New contributor
edited yesterday
Stephen
7,49323397
7,49323397
New contributor
answered yesterday
VolareVolare
112
112
New contributor
New contributor
$begingroup$
I took the liberty of fixing your title and adding a TIO-link for the test cases (based on the other R answer), and also verified your answer works as intended, so +1 from me and welcome to PPCG! :)
$endgroup$
– Kevin Cruijssen
yesterday
add a comment |
$begingroup$
I took the liberty of fixing your title and adding a TIO-link for the test cases (based on the other R answer), and also verified your answer works as intended, so +1 from me and welcome to PPCG! :)
$endgroup$
– Kevin Cruijssen
yesterday
$begingroup$
I took the liberty of fixing your title and adding a TIO-link for the test cases (based on the other R answer), and also verified your answer works as intended, so +1 from me and welcome to PPCG! :)
$endgroup$
– Kevin Cruijssen
yesterday
$begingroup$
I took the liberty of fixing your title and adding a TIO-link for the test cases (based on the other R answer), and also verified your answer works as intended, so +1 from me and welcome to PPCG! :)
$endgroup$
– Kevin Cruijssen
yesterday
add a comment |
$begingroup$
Python 3, 40 bytes
f=lambda x:x[1]-2and 1+f(x[::2]+x[1::2]) # 1-based
f=lambda x:x[1]-1and 1+f(x[::2]+x[1::2]) # 0-based
Try it online!
I need to refresh the page more frequently: missed Erik the Outgolfer's edit doing a similar trick =)
$endgroup$
add a comment |
$begingroup$
Python 3, 40 bytes
f=lambda x:x[1]-2and 1+f(x[::2]+x[1::2]) # 1-based
f=lambda x:x[1]-1and 1+f(x[::2]+x[1::2]) # 0-based
Try it online!
I need to refresh the page more frequently: missed Erik the Outgolfer's edit doing a similar trick =)
$endgroup$
add a comment |
$begingroup$
Python 3, 40 bytes
f=lambda x:x[1]-2and 1+f(x[::2]+x[1::2]) # 1-based
f=lambda x:x[1]-1and 1+f(x[::2]+x[1::2]) # 0-based
Try it online!
I need to refresh the page more frequently: missed Erik the Outgolfer's edit doing a similar trick =)
$endgroup$
Python 3, 40 bytes
f=lambda x:x[1]-2and 1+f(x[::2]+x[1::2]) # 1-based
f=lambda x:x[1]-1and 1+f(x[::2]+x[1::2]) # 0-based
Try it online!
I need to refresh the page more frequently: missed Erik the Outgolfer's edit doing a similar trick =)
edited Mar 11 at 19:32
answered Mar 11 at 19:22
AlexAlex
3263
3263
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%2f181299%2fcould-you-please-stop-shuffling-the-deck-and-play-already%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$
One or two test cases with an odd length and an output greater than 0 would be nice. It's easy to mess the riffle in such cases if you have to write the riffle code by yourself instead of relying on builtins.
$endgroup$
– Olivier Grégoire
Mar 11 at 14:21
$begingroup$
@OlivierGrégoire The
[1,3,5,7,9,2,4,6,8]
is of length 9, but I will add a few more for lengths 7 and 11 perhaps. EDIT: Added the test cases[1,3,5,7,2,4,6] = 2
(length 7) and[1,6,11,5,10,4,9,3,8,2,7] = 6
(length 11). Hope that helps.$endgroup$
– Kevin Cruijssen
Mar 11 at 14:27
$begingroup$
My bad: I was sure the test case you mentioned was of size 8. But thanks for the extra test cases.
$endgroup$
– Olivier Grégoire
Mar 11 at 15:37
1
$begingroup$
Question as currently formulated seems "wrong"... a single riffle shuffle should result in the first and last cards changing, unless you're pulling some kind of con trick! i.e. [6,1,7,2,8,3,9,4,10,5] after a single shuffle of 10 cards.
$endgroup$
– Steve
2 days ago
2
$begingroup$
@Steve I guess you're kinda right. Riffle-shuffling in general simply interleaves two halves, so both
[1,6,2,7,3,8,4,9,5,10]
or[6,1,7,2,8,3,9,4,10,5]
are possible. In my challenge it does mean that the top card will always remain the top card, so it's indeed a bit of a con-trick.. I've never seen someone irl use only riffle-shuffles to shuffle a deck of cards however. Usually they also use other type of shuffles in between. Anyway, it's too late to change the challenge now, so for the sake of this challenge the top card will always remain the top card after a riffle-shuffle.$endgroup$
– Kevin Cruijssen
2 days ago