#! /usr/bin/env python3 # def perfect_shuffle ( deck ): #*****************************************************************************80 # ## perfect_shuffle() performs a perfect shuffle on a deck of cards. # # Licensing: # # This code is distributed under the MIT license. # # Modified: # # 16 February 2025 # # Author: # # John Burkardt # # Input: # # integer deck[52]: the indices of the cards in a deck. # import numpy as np deck_size = len ( deck ) deck_size_half = deck_size // 2 deck_shuffled = np.zeros ( deck_size, dtype = int ) deck_shuffled[0:deck_size:2] = deck[0:deck_size_half] deck_shuffled[1:deck_size:2] = deck[deck_size_half:] return deck_shuffled def perfect_shuffle_test ( ): #*****************************************************************************80 # ## perfect_shuffle_test() tests perfect_shuffle(). # # Licensing: # # This code is distributed under the MIT license. # # Modified: # # 16 February 2025 # # Author: # # John Burkardt # import numpy as np print ( '' ) print ( 'perfect_shuffle_test():' ) print ( ' Test perfect_shuffle(), which does a perfect shuffle' ) print ( ' of a deck of cards.' ) deck_size = 52 deck = np.arange ( deck_size, dtype = int ) print ( '' ) print ( ' Starting deck:' ) print ( deck ) # # Now do a perfect shuffle. # deck = perfect_shuffle ( deck ) print ( '' ) print ( ' Deck after 1 perfect shuffle:' ) print ( deck ) # # Now do 7 more perfect shuffles. # for i in range ( 0, 7 ): deck = perfect_shuffle ( deck ) print ( '' ) print ( ' Deck after 7 more perfect shuffles:' ) print ( deck ) return if ( __name__ == "__main__" ): perfect_shuffle_test ( )