Amazon Interview Question
Software Engineer / DevelopersClass Card{
public:
const static int CLUBS=1;
const static int SPADE=2;
const static int HEART=3;
const static int DIAMOND=4;
Card(int suite,int number)
{
(*this).suite=suite;
(*this).number=number;
}
private:
int suite;
int number;
}
#define LOOP(start,end) for(i=start;i<=end;i++)
#define ASSIGN(n,i,start) mydeck[i]=Card(n,i-start)
Class Deck{
public :
Card[52] mydeck;
Deck()
{
int i=0;
LOOP(0,12)
ASSIGN(Card.CLUBS,i,0);
LOOP(13,25)
ASSIGN(Card.SPADES,i,13);
LOOP(26,38)
ASSIGN(Card.HEARTS,i,26);
LOOP(39,51)
ASSIGN(Card.DIAMOND,i,39);
}
void shuffle(){
int i=0,j=0;
LOOP(0,51){
j=random(i,51);
swap(j,i);}
}
void swap(int i,int j){
Card tmp=mydeck[i];
mydeck[i]=mydeck[j];
mydeck[j]=tmp;
}
}
import java.util.*;
- codechampion July 10, 2007class Deal {
public static void main(String[] args) {
int numHands = Integer.parseInt(args[0]);
int cardsPerHand = Integer.parseInt(args[1]);
// Make a normal 52-card deck.
String[] suit = new String[]
{"spades", "hearts", "diamonds", "clubs"};
String[] rank = new String[]
{"ace","2","3","4","5","6","7","8",
"9","10","jack","queen","king"};
List<String> deck = new ArrayList<String>();
for (int i = 0; i < suit.length; i++)
for (int j = 0; j < rank.length; j++)
deck.add(rank[j] + " of " + suit[i]);
Collections.shuffle(deck);
for (int i=0; i < numHands; i++)
System.out.println(dealHand(deck, cardsPerHand));
}
}