自己寫的一個洗撲克牌的java程式
昨天去一朋友所在的公司 唱吧—你的手機KTV (小小做一下宣傳:目前app store排名很靠前的一款軟體)面試了一把,結果XX
其中一個洗撲克牌的程式,昨天在草稿紙上寫的,面試官說描述不清晰,今天抽空在電腦上實現了一下,為這次面試畫上個句號。
package com.bankht.test.xipai;
import java.util.Random;
import org.junit.Test;
/**
* @author: 特種兵—AK47
* @建立時間:2012-10-24 上午09:44:39
*
* @類說明 :洗牌演算法
*/
public class XipaiTest {
private String[] singleCards = new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
private String[] allCards = new String[54];
private String temp = null;// 定義臨時變數,用以交換陣列中兩個值的位置
@Test
public void testXipai() {
String[] cards = initCard();
for (int s = 0; s < 1000; s++) {
/*
* 從[0,53]之間隨機選取兩個數字cardNum1,cardNum2,
* 交換對應的陣列值位置(cards[cardNum1]<——>cards [cardNum2])
* 該步驟迴圈1000次
*/
int cardNum1 = new Random().nextInt(54);
int cardNum2 = new Random().nextInt(54);
temp = cards[cardNum1];
cards[cardNum1] = cards[cardNum2];
cards[cardNum2] = temp;
}
testCardMessage(cards);// 測試撲克牌當前排序狀態
}
/**
* 初始化撲克牌
*
* @return 撲克牌陣列
*/
private String[] initCard() {
for (int i = 0; i < 13; i++) {
String[] initCard = addMessage2Card(singleCards[i]);
for (int j = 0; j < 4; j++) {
allCards[i * 4 + j] = initCard[j];
}
}
allCards[52] = "小王";
allCards[53] = "大王";
return allCards;
}
/**
* 針對2,3,4...Q,K,A 都有公共資訊【紅桃、方片、梅花、黑桃】,在初始化時進行新增
*
* @param card
* @return
*/
private String[] addMessage2Card(String card) {
return new String[] { "紅桃" + card, "方片" + card, "梅花" + card, "黑桃" + card };
}
/**
* 測試撲克牌當前排序狀態
*
* @param allCards
*/
private void testCardMessage(String[] allCards) {
for (int m = 0; m < allCards.length; m++) {
System.out.print(allCards[m] + ",");
if ((m + 1) % 4 == 0) {
System.out.println();
}
}
}
}
執行一下:
方片K,黑桃8,梅花2,紅桃2,
梅花5,梅花8,紅桃K,黑桃9,
紅桃4,方片9,梅花J,方片8,
梅花Q,梅花4,黑桃Q,紅桃10,
黑桃7,方片5,紅桃3,大王,
紅桃6,黑桃J,方片2,方片A,
黑桃2,黑桃A,梅花A,方片3,
紅桃7,黑桃10,方片6,梅花10,
方片Q,小王,梅花3,紅桃8,
黑桃6,黑桃K,黑桃3,紅桃J,
紅桃A,黑桃5,紅桃5,梅花6,
方片J,方片4,紅桃Q,黑桃4,
紅桃9,梅花7,方片7,梅花K,
方片10,梅花9,
其實只是個把兩個隨機數對應撲克牌位置去相互交換的思想,至於將一副撲克牌還原整齊就用到常用的排序(選擇排序、希爾、冒泡等)了
最後:與這家公司已經失之交臂了,不過還是真心的祝願這款軟體能夠保持目前的迅猛態勢,快速發展。不管怎樣,萬分感謝曉凱的推薦,謝謝田然總監的建議。
相關文章
- 使用Java語言寫的一個簡單的撲克牌發牌程式碼Java
- java程式:簡易撲克牌遊戲Java遊戲
- 用Java實現撲克牌排序Java排序
- Java學習--撲克牌比大小的小遊戲Java遊戲
- Java 簡單實現撲克牌抽象類Java抽象
- 編碼也快樂!撲克牌排序JAVA排序Java
- Java第三季—簡易撲克牌遊戲Java遊戲
- [每日一題] 第十二題:撲克牌中的順子每日一題
- Java入門第三季撲克牌小遊戲Java遊戲
- 簡易撲克牌遊戲JAVA原始碼_新手上路遊戲Java原始碼
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 用SQL實現撲克牌排序SQL排序
- 用C實現撲克牌排序排序
- 撲克牌排序:基於基數排序的方法排序
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- java入門最後一章 簡易撲克牌比較大小Java
- 用C#實現撲克牌排序C#排序
- 【YOLOv5】實現撲克牌的點數識別YOLO
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 編碼也快樂活動:撲克牌排序排序
- 用cpp0.5實現撲克牌排序排序
- 撲克牌排序-Scala之畫蛇添足版排序
- JAVA入門第三季——最後練習題撲克牌Java
- 純CSS實現撲克牌效果,太牛了吧CSS
- 編碼也快樂:撲克牌排序 - Python排序Python
- 編碼也快樂活動:撲克牌排序(JavaScript)排序JavaScript
- 撲克牌排序(JS版) 編碼也快樂!排序JS
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝Java排序
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記
- Java入門第三季7-1簡易撲克牌作業Java
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- 會打撲克的機器人?連續2個月與2400萬人打撲克機器人
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- 手寫一個自己的PromisePromise
- 寫一個《扎金花》程式自己玩。
- 自己寫一個java.lang.reflect.Proxy代理的實現Java
- 一個很漂亮的拓撲圖程式