summaryrefslogtreecommitdiff
path: root/aux/set/Set.java
diff options
context:
space:
mode:
Diffstat (limited to 'aux/set/Set.java')
-rw-r--r--aux/set/Set.java69
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)