自己寫的一個洗撲克牌的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遊戲
- 每日一練(33):撲克牌中的順子
- Java 簡單實現撲克牌抽象類Java抽象
- Java第三季—簡易撲克牌遊戲Java遊戲
- [每日一題] 第十二題:撲克牌中的順子每日一題
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- JZ-045-撲克牌順子
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 劍指Offer 撲克牌順子
- java入門最後一章 簡易撲克牌比較大小Java
- Java入門第三季撲克牌小遊戲Java遊戲
- 簡易撲克牌遊戲JAVA原始碼_新手上路遊戲Java原始碼
- 【YOLOv5】實現撲克牌的點數識別YOLO
- JAVA入門第三季——最後練習題撲克牌Java
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝Java排序
- 手寫一個自己的PromisePromise
- Java入門第三季7-1簡易撲克牌作業Java
- bzoj1816: [Cqoi2010]撲克牌(二分)
- python實現撲克遊戲 - 抽鬼牌 和 21點Python遊戲
- 如何開發屬於自己的第一個Java程式?Java
- 如何開發屬於自己的第一個Java程式Java
- 自己寫的簡單的一個部落格
- 分享一個自己寫的C# SqlHelperC#SQL
- 自己寫一個vue的loading外掛Vue
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- 自己寫一個ProviderIDE
- 自己實現一個java的arraylistJava
- 自己寫的一個 java 解壓 rar zip 帶密碼 檔案Java密碼
- 用Java編寫一個最簡單的桌面程式Java
- 15_編寫第一個自己的Linux的命令Linux
- 分享自己寫的一個 Python 的 JSON 轉 Model 庫PythonJSON
- 論如何自己寫一個Python的模板語言Python
- 自己寫一個mvc框架吧(一)MVC框架
- Python,寫一個簡單的屬於自己的『BaseEnum』類Python