Write better code: Day 2 - Single Riffle Shuffle

Updated on Jan 31, 2019 ・1 min read

This was the previous question I solved today.

Day 2: Question 2

Write a method to tell us if a full deck of cards shuffled_deck is a single riffle of two other halves half1 and half2.

We'll represent a stack of cards as an array of integers in the range 1..52 (since there are 52 distinct cards in a deck).


Question from InterviewCake

If you want to follow along, feel free to post your answers in the comment.
My answers are in the comments.


Logic was to get the shuffled deck and check if the last card in shuffled deck belongs to the top of half 1 of half 2.

-do while loop until shuffled deck is empty.
-pick a card from the shuffled deck - check if it's the top card of half 1 or half2.
-if it matches top of half1 - pop it from half1, pop from deck.
-else if is top of half2, repeat.
-if the card does not match the top of either halves, it's not a single shuffle.


I think I could improve this. I am not sure yet what the complexity of using pop is.
If its always O[1] then this logic is good. But anyhow since the max deck of cards is always 52, change in performance wont make much difference even with better code than this.

Classic DEV Post from Oct 18 '18

dev.to Show us your octocat alter ego

Show us your octocat alter ego

Arjun Rajkumar
I’m a software developer primarily building web apps using Ruby on Rails. Working on a personal project + freelancing. I'm looking for additional freelance work so hit me up if you need help!

dev.to is where software developers stay in the loop and avoid career stagnation.

Sign up (for free)