diff options
Diffstat (limited to 'aux/set/Set.java')
-rw-r--r-- | aux/set/Set.java | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/aux/set/Set.java b/aux/set/Set.java index d087955..be1cdca 100644 --- a/aux/set/Set.java +++ b/aux/set/Set.java @@ -23,10 +23,38 @@ public class Set { for (Card card:cards) add(card); } + public Set(String str) + { + int typeid=0; + for (int i=str.length()-1;i>=0;--i) + { + if (!Character.isDigit(str.charAt(i))) + switch (Character.toUpperCase(str.charAt(i))) + { + case 'M': + typeid=0; + break; + case 'P': + typeid=1; + break; + case 'S': + typeid=2; + break; + case 'Z': + typeid=3; + break; + } + else + { + int posid=str.charAt(i)-48; + add(new Card(Card.idLut[typeid][posid])); + } + } + } public void sort() { - cards.sort((Card x,Card y) -> x.getExId()-y.getExId()); + cards.sort((Card x,Card y) -> x.getId()-y.getId()); } public void add(Card in) { @@ -67,6 +95,45 @@ public class Set { return cards.size(); } + static char typeId2Char(int typeid) + { + switch (typeid) + { + case 0: + return 'm'; + case 1: + return 'p'; + case 2: + return 's'; + case 3: + return 'z'; + } + return ' '; + } + + @Override + public String toString() { + int typeid=-1; + String str=""; + sort(); + for (Card card:cards) { + if (typeid!=Math.min(3, card.getTypeId())) + { + if (typeid>=0) + str=str.concat(Character.toString(typeId2Char(typeid))); + } + typeid=Math.min(3, card.getTypeId()); + int i=0; + for (int j=0;j<10;++j) + if (Card.idLut[typeid][j]==card.getId()) + i=j; + str=str.concat(Integer.toString(i)); + } + if (typeid>=0) + str=str.concat(Character.toString(typeId2Char(typeid))); + return str; + } + public void print() { for (Card card:cards) |