注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
楼主很久没来地里发过贴了, 分享个亚麻内部换组面经吧
这烙印问了足足40分钟LP 只给我20分钟来答题 巨坑爹 这种组不去也好。。。
欢迎大家来帮我 debother number
//....
my code:
- class Card{
- int number;
- String color;
-
- public Card(int number, String color){
- this.number = number;
- this.color = color;
- }
- }
- class Player{
-
- // number map and freq
- HashMap<Integer, Integer> countNum = new HashMap<>();
- HashMap<String, Integer> countColor = new HashMap<>();
-
- Card[] cards;
- Character name;
- public Player(char name, Card[] cards) {
- this.cards=cards;
- this.name=name;
- }
-
- public void updateCounts() {
- for(Card card: cards) {
- if(!countNum.containsKey(card.number)) {
- countNum.put(card.number, 1);
- } else {
- countNum.put(card.number, countNum.get(card.number)+1);
- }
-
-
- if(!countColor.containsKey(card.color)) {
- countColor.put(card.color, 1);
- } else {
- countColor.put(card.color, countColor.get(card.color)+1);
- }
- }
- }
- }
- public class BoardGame {
-
- // 1 winner / 1+ winners ?
- List<Character> winners=new ArrayList<>();
- int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- String[] colors = { "R", "G", "B"};
- Random rand = new Random();
- Player[] players;
-
-
- public BoardGame(int num_player){
- players = new Player[num_player];
- int i=0;
- // initiate player and hands
- while(i<num_player){
- char playerName= (char)i;
- Card[] hands = generateCards();
-
- players[i] = new Player(playerName, hands);
- players[i].updateCounts();
-
- i++;
- }
- }
-
- public List<Character> StartGame(){
- while(winners.size()==0){
- // play the game by distribute card and check winner
- play();
- winners = CheckWinners();
- }
-
- return winners;
- }
-
- // generate hand of three cards
- public Card[] generateCards(){
- Card[] hand = new Card[3];
- int i=0;
- while(i<3){
- Card newCard = new Card(nums[rand.nextInt(nums.length)], colors[rand.nextInt(colors.length)]);
- hand[i]=newCard;
- i++;
- }
-
- return hand;
- }
-
-
- public void play() {
- // generate cards for each player and check win
- for(Player p: players) {
- p.cards = generateCards();
- p.updateCounts();
- }
-
- }
-
- public List<Character> CheckWinners() {
- // more than one winner or one winner ?
- List<Character> winners = new ArrayList<>();
- for(Player p: players) {
-
- for(Integer number: p.countNum.keySet()) {
- if(p.countNum.size()==2 || p.countNum.get(number)==p.cards.length) {
- winners.add(p.name);
- }
-
- }
-
- for(String color: p.countColor.keySet()) {
- if(p.countColor.get(color)==p.cards.length) {
- winners.add(p.name);
- }
- }
- }
- return winners;
- }
-
-
- public static void main(String[] args) {
- BoardGame instance = new BoardGame(3);
-
- List<Character> winners = instance.StartGame();
-
- }
-
- }
复制代码
|