Added the china key

This commit is contained in:
Willem Cazander 2022-01-30 14:50:21 +01:00
parent 1cfa01e989
commit 21cd90d2f8
18 changed files with 282 additions and 111 deletions

View file

@ -7,7 +7,13 @@ package love.distributedrebirth.demo4d.base2t;
*/ */
public interface BasePartIdentifier { public interface BasePartIdentifier {
int ordinal();
String getIdentifierTone(); String getIdentifierTone();
String getIdentifierLetter(); String getIdentifierLetter();
String getChinaKey();
String getChinaValue();
} }

View file

@ -7,26 +7,32 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 2.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T02PartBinary implements BasePartIdentifier { public enum T02PartBinary implements BasePartIdentifier {
PART_1("˧","0"), PART_1("˧","0", "", "low"),
PART_2("","1"), PART_2("","1", "", "high"),
; ;
public static int LENGTH = 2; public static int LENGTH = 2;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private static final Map<String, T02PartBinary> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T02PartBinary> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T02PartBinary> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private T02PartBinary(String identifierTone, String identifierLetter) { private T02PartBinary(String identifierTone, String identifierLetter, String chinaKey, String chinaValue) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
} }
@Override @Override
@ -39,6 +45,16 @@ public enum T02PartBinary implements BasePartIdentifier {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
public static void forEach(Consumer<T02PartBinary> consumer) { public static void forEach(Consumer<T02PartBinary> consumer) {
for (T02PartBinary value:values()) { for (T02PartBinary value:values()) {
consumer.accept(value); consumer.accept(value);
@ -48,4 +64,8 @@ public enum T02PartBinary implements BasePartIdentifier {
public static T02PartBinary valueOfTone(String identifierTone) { public static T02PartBinary valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T02PartBinary valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,27 +7,33 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 3.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T03PartTrit implements BasePartIdentifier { public enum T03PartTrit implements BasePartIdentifier {
PART_1("˦","0"), PART_1("˦","0","","1"),
PART_2("˧","1"), PART_2("˧","1","","2"),
PART_3("˨","2"), PART_3("˨","2","","3"),
; ;
public static int LENGTH = 3; public static int LENGTH = 3;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private static final Map<String, T03PartTrit> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T03PartTrit> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T03PartTrit> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private T03PartTrit(String identifierTone, String identifierLetter) { private T03PartTrit(String identifierTone, String identifierLetter, String chinaKey, String chinaValue) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
} }
@Override @Override
@ -40,6 +46,16 @@ public enum T03PartTrit implements BasePartIdentifier {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
public static void forEach(Consumer<T03PartTrit> consumer) { public static void forEach(Consumer<T03PartTrit> consumer) {
for (T03PartTrit value:values()) { for (T03PartTrit value:values()) {
consumer.accept(value); consumer.accept(value);
@ -49,4 +65,8 @@ public enum T03PartTrit implements BasePartIdentifier {
public static T03PartTrit valueOfTone(String identifierTone) { public static T03PartTrit valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T03PartTrit valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,31 +7,37 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 4.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T04PartQuad implements BasePartIdentifierAlt { public enum T04PartQuad implements BasePartIdentifierAlt {
PART_1("˥","0","N"), PART_1("˥","0","","north","N"),
PART_2("˦","1","E"), PART_2("","1","","east","E"),
PART_3("˨","2","W"), PART_3("","2","西","west","W"),
PART_4("˩","3","S"), PART_4("˩","3","","south","S"),
; ;
public static int LENGTH = 4; public static int LENGTH = 4;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private final String identifierAlt; private final String identifierAlt;
private static final Map<String, T04PartQuad> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T04PartQuad> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T04PartQuad> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo( private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"Cardinal direction","https://simple.wikipedia.org/wiki/Cardinal_direction"); "Cardinal direction","https://simple.wikipedia.org/wiki/Cardinal_direction");
private T04PartQuad(String identifierTone, String identifierLetter, String identifierAlt) { private T04PartQuad(String identifierTone, String identifierLetter, String chinaKey, String chinaValue, String identifierAlt) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
this.identifierAlt = identifierAlt; this.identifierAlt = identifierAlt;
} }
@ -45,6 +51,16 @@ public enum T04PartQuad implements BasePartIdentifierAlt {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
@Override @Override
public String getIdentifierAlt() { public String getIdentifierAlt() {
return identifierAlt; return identifierAlt;
@ -68,4 +84,8 @@ public enum T04PartQuad implements BasePartIdentifierAlt {
public static T04PartQuad valueOfTone(String identifierTone) { public static T04PartQuad valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T04PartQuad valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,33 +7,32 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 5 called Wuxing.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
*
*/ */
public enum T05PartPental implements BasePartIdentifierAlt { public enum T05PartPental implements BasePartIdentifier {
PART_1("˥","0","\u706b"), PART_1("˥","0","","fire"),
PART_2("˦","1","\u571f"), PART_2("˦","1","","water"),
PART_3("˧","2","\u91d1"), PART_3("˧","2","","wood"),
PART_4("˨","3","\u6c34"), PART_4("˨","3","","gold"),
PART_5("˩","4","\u6728"), PART_5("˩","4","","earth"),
; ;
public static int LENGTH = 5; public static int LENGTH = 5;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String identifierAlt; // FIXME: escaped to keep normal line height in IDE private final String chinaKey;
private final String chinaValue;
private static final Map<String, T05PartPental> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T05PartPental> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"Wuxing","https://en.wikipedia.org/wiki/Wuxing_(Chinese_philosophy)");
private T05PartPental(String identifierTone, String identifierLetter, String identifierAlt) { private T05PartPental(String identifierTone, String identifierLetter, String chinaKey, String chinaValue) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.identifierAlt = identifierAlt; this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
} }
@Override @Override
@ -47,13 +46,13 @@ public enum T05PartPental implements BasePartIdentifierAlt {
} }
@Override @Override
public String getIdentifierAlt() { public String getChinaKey() {
return identifierAlt; return chinaKey;
} }
@Override @Override
public BasePartIdentifierAltInfo getIdentifierAltInfo() { public String getChinaValue() {
return ALT_INFO; return chinaValue;
} }
public static void forEach(Consumer<T05PartPental> consumer) { public static void forEach(Consumer<T05PartPental> consumer) {

View file

@ -7,33 +7,41 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* TThe distribution by 6.
* NOTE: The sexi karlson-speaker is china design 3=6 and 6=9 and in quad space, zero is the result.
* *
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T06PartSeximal implements BasePartIdentifierAlt { public enum T06PartSeximal implements BasePartIdentifierAlt {
PART_1("˧˥","0","A"), PART_1("˧˥","0","","4","A"),
PART_2("˧˩","1","D"), PART_2("˧˩","1","","5","D"),
PART_3("˨˦","2","F"), PART_3("˨˦","2","","6","F"),
PART_4("˦˨","3","G"), PART_4("˦˨","3","","7","G"),
PART_5("˩˧","4","V"), PART_5("˩˧","4","","8","V"),
PART_6("˥˧","5","X"), PART_6("˥˧","5","","9","X"),
; ;
public static int LENGTH = 6; public static int LENGTH = 6;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private final String identifierAlt; private final String identifierAlt;
private static final Map<String, T06PartSeximal> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T06PartSeximal> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T06PartSeximal> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo( private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"ADFGVX cipher","https://en.wikipedia.org/wiki/ADFGVX_cipher"); "ADFGVX cipher","https://en.wikipedia.org/wiki/ADFGVX_cipher");
private T06PartSeximal(String identifierTone, String identifierLetter, String identifierAlt) { private T06PartSeximal(String identifierTone, String identifierLetter, String chinaKey, String chinaValue, String identifierAlt) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
this.identifierAlt = identifierAlt; this.identifierAlt = identifierAlt;
} }
@ -47,6 +55,16 @@ public enum T06PartSeximal implements BasePartIdentifierAlt {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
@Override @Override
public String getIdentifierAlt() { public String getIdentifierAlt() {
return identifierAlt; return identifierAlt;
@ -74,4 +92,8 @@ public enum T06PartSeximal implements BasePartIdentifierAlt {
public static T06PartSeximal valueOfTone(String identifierTone) { public static T06PartSeximal valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T06PartSeximal valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,20 +7,20 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 8.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T08PartOctal implements BasePartIdentifierAlt { public enum T08PartOctal implements BasePartIdentifierAlt {
PART_1("˧˥˩","0","˥˩˧", 0), PART_1("˧˥˩","0","","heart","˥˩˧", 0),
PART_2("˧˩˥","1","˩˥˧", 3), PART_2("˧˩˥","1","","head","˩˥˧", 3),
PART_3("˧˥˦","2","˥˦˧", 6), PART_3("˧˥˦","2","","eye","˥˦˧", 6),
PART_4("˧˩˨","3","˩˨˧", 9), PART_4("˧˩˨","3","","mouth","˩˨˧", 9),
PART_5("˧˦˦","4","˦˦˧", 12), PART_5("˧˦˦","4","","arm","˦˦˧", 12),
PART_6("˧˨˨","5","˨˨˧", 15), PART_6("˧˨˨","5","","hand","˨˨˧", 15),
PART_7("˧˥˥","6","˥˥˧", 18), PART_7("˧˥˥","6","","leg","˥˥˧", 18),
PART_8("˧˩˩","7","˩˩˧", 21), PART_8("˧˩˩","7","","feet","˩˩˧", 21),
; ;
public static int LENGTH = 8; public static int LENGTH = 8;
@ -28,17 +28,23 @@ public enum T08PartOctal implements BasePartIdentifierAlt {
private static final byte BITMASK = 0x07; private static final byte BITMASK = 0x07;
private final String identifierTone; // absolute private final String identifierTone; // absolute
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private final String identifierAlt; // relative private final String identifierAlt; // relative
private final int shiftBits; private final int shiftBits;
private static final Map<String, T08PartOctal> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T08PartOctal> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T08PartOctal> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo( private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"Tone Letters","https://en.wikipedia.org/wiki/Tone_letter"); "Tone Letters","https://en.wikipedia.org/wiki/Tone_letter");
private T08PartOctal(String identifierTone, String identifierLetter, String identifierAlt, int shiftBits) { private T08PartOctal(String identifierTone, String identifierLetter, String chinaKey, String chinaValue, String identifierAlt, int shiftBits) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
this.identifierAlt = identifierAlt; this.identifierAlt = identifierAlt;
this.shiftBits = shiftBits; this.shiftBits = shiftBits;
} }
@ -53,6 +59,16 @@ public enum T08PartOctal implements BasePartIdentifierAlt {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
@Override @Override
public String getIdentifierAlt() { public String getIdentifierAlt() {
return identifierAlt; return identifierAlt;
@ -88,4 +104,8 @@ public enum T08PartOctal implements BasePartIdentifierAlt {
public static T08PartOctal valueOfTone(String identifierTone) { public static T08PartOctal valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T08PartOctal valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,40 +7,46 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 12.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T12PartUncial implements BasePartIdentifierAlt { public enum T12PartUncial implements BasePartIdentifierAlt {
// TODO: fixup tone letters for 12 parts // TODO: fixup tone letters for 12 parts
PART_1 ("˥","0","0"), PART_1 ("˥","0","","sun","0"),
PART_2 ("˥","1","1"), PART_2 ("˥","1","","moon","1"),
PART_3 ("˥","2","2"), PART_3 ("˥","2","","star","2"),
PART_4 ("˥","3","3"), PART_4 ("˥","3","","mountain","3"),
PART_5 ("˥","4","4"), PART_5 ("˥","4","","dragon","4"),
PART_6 ("˥","5","5"), PART_6 ("˥","5","","phoenix","5"),
PART_7 ("˥","6","6"), PART_7 ("˥","6","","cup","6"),
PART_8 ("˥","7","7"), PART_8 ("˥","7","","pondweed","7"),
PART_9 ("˥","8","8"), PART_9 ("˥","8","","furnace","8"),
PART_10("˥","9","9"), PART_10("˥","9","","seed","9"),
PART_11("˥","A","\u218a"), // TURNED DIGIT TWO PART_11("˥","A","","axe","\u218a"), // TURNED DIGIT TWO
PART_12("˥","B","\u218b"), // TURNED DIGIT THREE PART_12("˥","B","","nozero","\u218b"), // TURNED DIGIT THREE
; ;
public static int LENGTH = 12; public static int LENGTH = 12;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private final String identifierAlt; private final String identifierAlt;
private static final Map<String, T12PartUncial> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T12PartUncial> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T12PartUncial> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo( private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"Transdecimal symbols","https://en.wikipedia.org/wiki/Duodecimal#Transdecimal_symbols"); "Transdecimal symbols","https://en.wikipedia.org/wiki/Duodecimal#Transdecimal_symbols");
private T12PartUncial(String identifierTone, String identifierLetter, String identifierAlt) { private T12PartUncial(String identifierTone, String identifierLetter, String chinaKey, String chinaValue, String identifierAlt) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
this.identifierAlt = identifierAlt; this.identifierAlt = identifierAlt;
} }
@ -54,6 +60,16 @@ public enum T12PartUncial implements BasePartIdentifierAlt {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
@Override @Override
public String getIdentifierAlt() { public String getIdentifierAlt() {
return identifierAlt; return identifierAlt;
@ -73,4 +89,8 @@ public enum T12PartUncial implements BasePartIdentifierAlt {
public static T12PartUncial valueOfTone(String identifierTone) { public static T12PartUncial valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T12PartUncial valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,43 +7,49 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 16.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T16PartHex implements BasePartIdentifierAlt { public enum T16PartHex implements BasePartIdentifierAlt {
PART_1 ("˧˥˩","0","1"), PART_1 ("˧˥˩","0","","hydrogen","1"),
PART_2 ("˧˩˥","1","2"), PART_2 ("˧˩˥","1","","helium","2"),
PART_3 ("˧˥˦","2","3"), PART_3 ("˧˥˦","2","","lithium","3"),
PART_4 ("˧˩˨","3","A"), PART_4 ("˧˩˨","3","","beryllium","A"),
PART_5 ("˧˦˦","4","4"), PART_5 ("˧˦˦","4","","boron","4"),
PART_6 ("˧˨˨","5","5"), PART_6 ("˧˨˨","5","","carbon","5"),
PART_7 ("˧˥˥","6","6"), PART_7 ("˧˥˥","6","","nitrogen","6"),
PART_8 ("˧˩˩","7","B"), PART_8 ("˧˩˩","7","","oxygen","B"),
PART_9 ("˥˩˧","8","7"), PART_9 ("˥˩˧","8","","fluorine","7"),
PART_10("˩˥˧","9","8"), PART_10("˩˥˧","9","","neon","8"),
PART_11("˥˦˧","A","9"), PART_11("˥˦˧","A","","sodium","9"),
PART_12("˩˨˧","B","C"), PART_12("˩˨˧","B","","magnesium","C"),
PART_13("˦˦˧","C","*"), PART_13("˦˦˧","C","","aluminium","*"),
PART_14("˨˨˧","D","0"), PART_14("˨˨˧","D","","silicon","0"),
PART_15("˥˥˧","E","#"), PART_15("˥˥˧","E","","phosphorus","#"),
PART_16("˩˩˧","F","D"), PART_16("˩˩˧","F","","sulfur","D"),
; ;
public static int LENGTH = 16; public static int LENGTH = 16;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private final String identifierAlt; private final String identifierAlt;
private static final Map<String, T16PartHex> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T16PartHex> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T16PartHex> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo( private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"Dual-tone multi-frequency signaling","https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling"); "Dual-tone multi-frequency signaling","https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling");
private T16PartHex(String identifierTone, String identifierLetter, String identifierAlt) { private T16PartHex(String identifierTone, String identifierLetter, String chinaKey, String chinaValue, String identifierAlt) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
this.identifierAlt = identifierAlt; this.identifierAlt = identifierAlt;
} }
@ -57,6 +63,16 @@ public enum T16PartHex implements BasePartIdentifierAlt {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
@Override @Override
public String getIdentifierAlt() { public String getIdentifierAlt() {
return identifierAlt; return identifierAlt;
@ -80,4 +96,8 @@ public enum T16PartHex implements BasePartIdentifierAlt {
public static T16PartHex valueOfTone(String identifierTone) { public static T16PartHex valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T16PartHex valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -7,48 +7,53 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* * The distribution by 20.
* @author willemtsade ©Δ 仙上主天 * @author willemtsade ©Δ 仙上主天
* *
*/ */
public enum T20PartScore implements BasePartIdentifierAlt { public enum T20PartScore implements BasePartIdentifierAlt {
// TODO: fixup tone letters for 20 parts PART_1 ("˥","0","","yotta","2"),
PART_1 ("˥","0","2"), PART_2 ("˦","1","","zetta","3"),
PART_2 ("˦","1","3"), PART_3 ("˧","2","","exa","4"),
PART_3 ("˧","2","4"), PART_4 ("˨","3","","peta","5"),
PART_4 ("˨","3","5"), PART_5 ("˩","4","","tera","6"),
PART_5 ("˩","4","6"), PART_6 ("","5","","giga","7"),
PART_6 ("˥","5","7"), PART_7 ("","6","","mega","8"),
PART_7 ("˥","6","8"), PART_8 ("","7","","kilo","9"),
PART_8 ("˥","7","9"), PART_9 ("","8","","hecto","C"),
PART_9 ("˥","8","C"), PART_10("","9","","deca","F"),
PART_10("˥","9","F"), PART_11("","A","","deci","G"),
PART_11("˥","A","G"), PART_12("","B","","centi","H"),
PART_12("˥","B","H"), PART_13("","C","","milli","J"),
PART_13("˥","C","J"), PART_14("","D","","micro","M"),
PART_14("˥","D","M"), PART_15("","E","","nano","P"),
PART_15("˥","E","P"), PART_16("","F","","pico","Q"),
PART_16("˥","F","Q"), PART_17("","G","","femto","R"),
PART_17("˥","G","R"), PART_18("","H","","atto","V"),
PART_18("˥","H","V"), PART_19("","I","","zepto","W"),
PART_19("˥","I","W"), PART_20("","J","","yocto","X"),
PART_20("˥","J","X"),
; ;
public static int LENGTH = 20; public static int LENGTH = 20;
private final String identifierTone; private final String identifierTone;
private final String identifierLetter; private final String identifierLetter;
private final String chinaKey;
private final String chinaValue;
private final String identifierAlt; private final String identifierAlt;
private static final Map<String, T20PartScore> TONE_MAP = Collections.unmodifiableMap( private static final Map<String, T20PartScore> TONE_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v))); Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getIdentifierTone(), v -> v)));
private static final Map<String, T20PartScore> CHINA_MAP = Collections.unmodifiableMap(
Arrays.asList(values()).stream().collect(Collectors.toMap(v -> v.getChinaKey(), v -> v)));
private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo( private static final BasePartIdentifierAltInfo ALT_INFO = new BasePartIdentifierAltInfo(
"Open Location Code","https://en.wikipedia.org/wiki/Open_Location_Code"); "Open Location Code","https://en.wikipedia.org/wiki/Open_Location_Code");
private T20PartScore(String identifierTone, String identifierLetter, String identifierAlt) { private T20PartScore(String identifierTone, String identifierLetter, String chinaKey, String chinaValue, String identifierAlt) {
this.identifierTone = identifierTone; this.identifierTone = identifierTone;
this.identifierLetter = identifierLetter; this.identifierLetter = identifierLetter;
this.chinaKey = chinaKey;
this.chinaValue = chinaValue;
this.identifierAlt = identifierAlt; this.identifierAlt = identifierAlt;
} }
@ -62,6 +67,16 @@ public enum T20PartScore implements BasePartIdentifierAlt {
return identifierLetter; return identifierLetter;
} }
@Override
public String getChinaKey() {
return chinaKey;
}
@Override
public String getChinaValue() {
return chinaValue;
}
@Override @Override
public String getIdentifierAlt() { public String getIdentifierAlt() {
return identifierAlt; return identifierAlt;
@ -81,4 +96,8 @@ public enum T20PartScore implements BasePartIdentifierAlt {
public static T20PartScore valueOfTone(String identifierTone) { public static T20PartScore valueOfTone(String identifierTone) {
return TONE_MAP.get(identifierTone); return TONE_MAP.get(identifierTone);
} }
public static T20PartScore valueOfChina(String chinaKey) {
return CHINA_MAP.get(chinaKey);
}
} }

View file

@ -0,0 +1,5 @@
package love.distributedrebirth.demo4d.base2t;
public enum T60Sexagesimal {
// TODO impl too
}

View file

@ -18,7 +18,7 @@ public final class V006Tixte implements BaseNumber<V006Tixte> {
this(new V003Timble(values), new V003Timble(values)); this(new V003Timble(values), new V003Timble(values));
} }
public V006Tixte(V003Timble valueHigh, V003Timble valueLow) { private V006Tixte(V003Timble valueHigh, V003Timble valueLow) {
setValue(T02PartBinary.PART_1, valueHigh); setValue(T02PartBinary.PART_1, valueHigh);
setValue(T02PartBinary.PART_2, valueLow); setValue(T02PartBinary.PART_2, valueLow);
} }

View file

@ -22,7 +22,7 @@ public final class V009Tyte implements BaseNumberTyte<V009Tyte> {
this(new V003Timble(valueHigh), new V003Timble(valueMedium), new V003Timble(valueLow)); this(new V003Timble(valueHigh), new V003Timble(valueMedium), new V003Timble(valueLow));
} }
public V009Tyte(V003Timble valueHigh, V003Timble valueMedium, V003Timble valueLow) { private V009Tyte(V003Timble valueHigh, V003Timble valueMedium, V003Timble valueLow) {
setValue(T03PartTrit.PART_1, valueHigh); setValue(T03PartTrit.PART_1, valueHigh);
setValue(T03PartTrit.PART_2, valueMedium); setValue(T03PartTrit.PART_2, valueMedium);
setValue(T03PartTrit.PART_3, valueLow); setValue(T03PartTrit.PART_3, valueLow);

View file

@ -22,7 +22,7 @@ public final class V018Tord implements BaseNumberTyte<V018Tord> {
this(values.next(), values.next()); this(values.next(), values.next());
} }
public V018Tord(V009Tyte valueHigh, V009Tyte valueLow) { private V018Tord(V009Tyte valueHigh, V009Tyte valueLow) {
setValue(T02PartBinary.PART_1, valueHigh); setValue(T02PartBinary.PART_1, valueHigh);
setValue(T02PartBinary.PART_2, valueLow); setValue(T02PartBinary.PART_2, valueLow);
} }

View file

@ -22,7 +22,7 @@ public final class V027Temvig implements BaseNumberTyte<V027Temvig> {
this(values.next(), values.next(), values.next()); this(values.next(), values.next(), values.next());
} }
public V027Temvig(V009Tyte valueHigh, V009Tyte valueMedium, V009Tyte valueLow) { private V027Temvig(V009Tyte valueHigh, V009Tyte valueMedium, V009Tyte valueLow) {
setValue(T03PartTrit.PART_1, valueHigh); setValue(T03PartTrit.PART_1, valueHigh);
setValue(T03PartTrit.PART_2, valueMedium); setValue(T03PartTrit.PART_2, valueMedium);
setValue(T03PartTrit.PART_3, valueLow); setValue(T03PartTrit.PART_3, valueLow);

View file

@ -22,7 +22,7 @@ public final class V036Teger implements BaseNumberTyte<V036Teger> {
this(new V018Tord(values), new V018Tord(values)); this(new V018Tord(values), new V018Tord(values));
} }
public V036Teger(V018Tord valueHigh, V018Tord valueLow) { private V036Teger(V018Tord valueHigh, V018Tord valueLow) {
setValue(T02PartBinary.PART_1, valueHigh); setValue(T02PartBinary.PART_1, valueHigh);
setValue(T02PartBinary.PART_2, valueLow); setValue(T02PartBinary.PART_2, valueLow);
} }

View file

@ -22,7 +22,7 @@ public final class V072Tong implements BaseNumberTyte<V072Tong> {
this(new V036Teger(values), new V036Teger(values)); this(new V036Teger(values), new V036Teger(values));
} }
public V072Tong(V036Teger valueHigh, V036Teger valueLow) { private V072Tong(V036Teger valueHigh, V036Teger valueLow) {
setValue(T02PartBinary.PART_1, valueHigh); setValue(T02PartBinary.PART_1, valueHigh);
setValue(T02PartBinary.PART_2, valueLow); setValue(T02PartBinary.PART_2, valueLow);
} }

View file

@ -22,7 +22,7 @@ public final class V144Tocta implements BaseNumberTyte<V144Tocta> {
this(new V072Tong(values), new V072Tong(values)); this(new V072Tong(values), new V072Tong(values));
} }
public V144Tocta(V072Tong valueHigh, V072Tong valueLow) { private V144Tocta(V072Tong valueHigh, V072Tong valueLow) {
setValue(T02PartBinary.PART_1, valueHigh); setValue(T02PartBinary.PART_1, valueHigh);
setValue(T02PartBinary.PART_2, valueLow); setValue(T02PartBinary.PART_2, valueLow);
} }