FC18: realigned ratio to max lego size and equal naming

This commit is contained in:
Willem Cazander 2025-09-05 21:03:50 +02:00
parent 6e403ac1c9
commit 81e1647c27
8 changed files with 69 additions and 73 deletions

View file

@ -56,7 +56,7 @@ public class FCDocPageWriterNCR implements MaisDocPageWriter, FCDocSegmentWriter
public void writePageContent(MaisDocWriteEvent<MaisDocPage> e) throws IOException {
MaisDocContentWriter writer = e.getWriter();
try (ContentCloseable content = writer.docPageContent()) {
try (ContentCloseable table = writer.docTable(FourCornerDotCake.FC_RATIONAL4608_BANK.nameSpec().replaceAll("BANK", "baklava"), null, MaisDocContentCss.overviewSummary)) {
try (ContentCloseable table = writer.docTable(FourCornerDotCake.FC_RATIONAL2304_BANK.nameSpec().replaceAll("BANK", "baklava"), null, MaisDocContentCss.overviewSummary)) {
writeTableBoxHeaderNumeric(writer, 28);
writePIN(writer);
}

View file

@ -430,18 +430,18 @@ public enum FourCornerDotCake {
// =========== Allow big math with new counting rods fraction types
FC_RATIONAL4608_SEL0(0x03B7F8, 384, "Number choco pigs 4608 bit rational fraction select"),
FC_RATIONAL4608_BANK(0x03B978, 4096, "Number choco pigs 4608 bit rational fraction bank"),
FC_DECIMAL2304_SEL0(0x03C978, 192, "Number choco pig 2304 bit decimal point select"),
FC_DECIMAL2304_BANK(0x03CA38, 4096, "Number choco pig 2304 bit decimal point bank"),
FC_FLOAT2304_SEL0(0x03DA38, 192, "Number choco pig 2304 bit floating point select"),
FC_FLOAT2304_BANK(0x03DAF8, 4096, "Number choco pig 2304 bit floating point bank"),
FC_CHOPED2304_SEL0(0x03EAF8, 192, "Number choco pig 2304 bit choped point select"),
FC_CHOPED2304_BANK(0x03EBB8, 4096, "Number choco pig 2304 bit choped point bank"),
FC_RATIONAL2304_SEL0(0x03B7F8, 192, "Number choco pig 2304 bit rational fraction select"),
FC_RATIONAL2304_BANK(0x03B8B8, 4096, "Number choco pig 2304 bit rational fraction bank"),
FC_DECIMAL2304_SEL0(0x03C8B8, 192, "Number choco pig 2304 bit decimal point select"),
FC_DECIMAL2304_BANK(0x03C978, 4096, "Number choco pig 2304 bit decimal point bank"),
FC_FLOAT2304_SEL0(0x03D978, 192, "Number choco pig 2304 bit floating point select"),
FC_FLOAT2304_BANK(0x03DA38, 4096, "Number choco pig 2304 bit floating point bank"),
FC_CHOPED2304_SEL0(0x03EA38, 192, "Number choco pig 2304 bit choped point select"),
FC_CHOPED2304_BANK(0x03EAF8, 4096, "Number choco pig 2304 bit choped point bank"),
// =========== Allow adult escape sequences
__RESERVED_ESC(0x03FBB8, 0x03FFE5 - 0x03FBB8),
__RESERVED_ESC(0x03FAF8, 0x03FFE5 - 0x03FAF8),
FC_DEC2701_PX0(0x03FFE5, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"),
;
private static final FourCornerDotCake[] VALUES = values();

View file

@ -39,7 +39,7 @@ public interface FourCornerZion7Candlelier extends FourCornerZion7Bereshit {
/// Embed one or more number grams of the given supported base degree type.
void strobeNumberGrams(FCFlameNumberGram gram, List<Integer> values);
/// Embed choco married pig rational number. (4+2300+4+2300)
/// Embed choco married pig rational number. (4+1148+4+1148)
void strobeNumberChocoPigRational(FCFlameNumberTaste tasteMale, FCFlameNumberTaste tasteFemale, BigInteger numerator, BigInteger denominator);
/// Embed choco pig decimal number. (4+1+283+2016)

View file

@ -385,15 +385,13 @@ public class FourCornerZionStenoGrapher {
Objects.requireNonNull(tasteFemale);
Objects.requireNonNull(numerator);
requireBigPositive(numerator);
requireBigMax(numerator, BIG_BITS_2300);
requireBigMax(numerator, BIG_BITS_1148);
Objects.requireNonNull(denominator);
requireBigPositive(denominator);
requireBigMax(denominator, BIG_BITS_2300);
requireBigMax(denominator, BIG_BITS_1148);
requireBigNoneZero(denominator);
outAddBankCake12(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart(), FourCornerDotCake.FC_RATIONAL4608_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, numerator, v -> {
return (v & 0xFF) + (tasteMale.ordinal() << 8);
});
outAddBankCake12(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart(), FourCornerDotCake.FC_RATIONAL4608_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, denominator, v -> {
BigInteger pig = numerator.shiftLeft(1152).add(denominator).add(BigInteger.valueOf(tasteFemale.ordinal()).shiftLeft(1148));
outAddBankCake12(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart(), FourCornerDotCake.FC_RATIONAL2304_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
return (v & 0xFF) + (tasteFemale.ordinal() << 8);
});
}

View file

@ -108,10 +108,10 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
if (FourCornerDotCake.FC_SANDWORM_15.equals(cakeSlice)) {
continue; // parse nether body manually
}
if (FourCornerDotCake.FC_RATIONAL4608_SEL0.equals(cakeSlice)) {
if (FourCornerDotCake.FC_RATIONAL2304_SEL0.equals(cakeSlice)) {
continue; // parse block manually
}
if (FourCornerDotCake.FC_RATIONAL4608_BANK.equals(cakeSlice)) {
if (FourCornerDotCake.FC_RATIONAL2304_BANK.equals(cakeSlice)) {
continue; // parse block manually
}
if (FourCornerDotCake.FC_DECIMAL2304_SEL0.equals(cakeSlice)) {
@ -162,10 +162,10 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
CAKE_SLICE_EATERS.add(new StenoScannerWordCakeSlice(cakeSlice));
}
CAKE_SLICE_EATERS.add(new StenoScannerSandWorm());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoRational());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoDecimal());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoFloat());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoChoped());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoPigRational());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoPigDecimal());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoPigFloat());
CAKE_SLICE_EATERS.add(new StenoScannerNumberChocoPigChoped());
ArrayList.class.cast(CAKE_SLICE_EATERS).trimToSize();
}
@ -538,26 +538,26 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
}
}
static final class StenoScannerNumberChocoRational extends StenoScannerNumberBank {
static final class StenoScannerNumberChocoPigRational extends StenoScannerNumberBank {
public StenoScannerNumberChocoRational() {
super(FourCornerDotCake.FC_RATIONAL4608_SEL0, FourCornerDotCake.FC_RATIONAL4608_BANK, NCR_BANK12_SIZE * 2, FCFlameNumberSparklerSmoke.CHOCO_RATIONAL);
public StenoScannerNumberChocoPigRational() {
super(FourCornerDotCake.FC_RATIONAL2304_SEL0, FourCornerDotCake.FC_RATIONAL2304_BANK, NCR_BANK12_SIZE, FCFlameNumberSparklerSmoke.CHOCO_RATIONAL);
}
@Override
public void processBankZero(FourCornerZionStenoLexer lexer) {
FCFlameNumberTaste tasteMale = lexer.numberBankEatTasteBits8Plus(NCR_BANK_IDX_TOPPAGE_4608);
FCFlameNumberTaste tasteFemale = lexer.numberBankEatTasteBits8Plus(NCR_BANK_IDX_TOPPAGE_2304);
BigInteger marriedPigs = lexer.numberBankReadBig12(numberBankTop);
BigInteger numerator = marriedPigs.shiftRight(2304);
BigInteger denominator = marriedPigs.and(BIG_BITS_2304);
FCFlameNumberTaste tasteMale = lexer.numberBankEatTasteBits8Plus(NCR_BANK_IDX_TOPPAGE_2304);
FCFlameNumberTaste tasteFemale = lexer.numberBankEatTasteBits8Plus(NCR_BANK_IDX_TOPPAGE_1152);
BigInteger pig = lexer.numberBankReadBig12(numberBankTop);
BigInteger numerator = pig.shiftRight(1152);
BigInteger denominator = pig.and(BIG_BITS_1152);
lexer.handler.strobeNumberChocoPigRational(tasteMale, tasteFemale, numerator, denominator);
}
}
static final class StenoScannerNumberChocoDecimal extends StenoScannerNumberBank {
static final class StenoScannerNumberChocoPigDecimal extends StenoScannerNumberBank {
public StenoScannerNumberChocoDecimal() {
public StenoScannerNumberChocoPigDecimal() {
super(FourCornerDotCake.FC_DECIMAL2304_SEL0, FourCornerDotCake.FC_DECIMAL2304_BANK, NCR_BANK12_SIZE, FCFlameNumberSparklerSmoke.CHOCO_DECIMAL);
}
@ -572,9 +572,9 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
}
}
static final class StenoScannerNumberChocoFloat extends StenoScannerNumberBank {
static final class StenoScannerNumberChocoPigFloat extends StenoScannerNumberBank {
public StenoScannerNumberChocoFloat() {
public StenoScannerNumberChocoPigFloat() {
super(FourCornerDotCake.FC_FLOAT2304_SEL0, FourCornerDotCake.FC_FLOAT2304_BANK, NCR_BANK12_SIZE, FCFlameNumberSparklerSmoke.CHOCO_FLOAT);
}
@ -589,9 +589,9 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
}
}
static final class StenoScannerNumberChocoChoped extends StenoScannerNumberBank {
static final class StenoScannerNumberChocoPigChoped extends StenoScannerNumberBank {
public StenoScannerNumberChocoChoped() {
public StenoScannerNumberChocoPigChoped() {
super(FourCornerDotCake.FC_CHOPED2304_SEL0, FourCornerDotCake.FC_CHOPED2304_BANK, NCR_BANK12_SIZE, FCFlameNumberSparklerSmoke.CHOCO_FIXED);
}

View file

@ -55,13 +55,11 @@ public interface FourCornerZionStenoPetroglyphs {
static final int NCR_BANK12_BITS = 12;
static final int NCR_BANK12_SIZE = 192;
static final int NCR_BANK_IDX_TOPPAGE_288 = 288 / NCR_BANK12_BITS - NCR_ONE;
static final int NCR_BANK_IDX_TOPPAGE_1152 = 1152 / NCR_BANK12_BITS - NCR_ONE;
static final int NCR_BANK_IDX_TOPPAGE_2304 = 2304 / NCR_BANK12_BITS - NCR_ONE;
static final int NCR_BANK_IDX_TOPPAGE_4608 = 4608 / NCR_BANK12_BITS - NCR_ONE;
/// max used for 256*9bit and 384*12bit
static final int NCR_BANK_SIZE = NCR_BANK12_SIZE + NCR_BANK12_SIZE;
/// max used for 256*9bit and 192*12bit
static final int NCR_BANK_SIZE = 256;
static private String valueOfBitMaskString(int zirri, int zorro) {
StringBuilder buf = new StringBuilder();

View file

@ -46,15 +46,15 @@ public class FourCornerZionStenoLexerSmokeTest {
lexer.withSmokeSignals(smokeReader);
List<Integer> cdc = new ArrayList<>();
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart() + 1);
cdc.add(192 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart() + 1);
Assertions.assertEquals(0, smokeReader.pipeSmokeClouds);
lexer.read(cdc);
Assertions.assertEquals(1, smokeReader.pipeSmokeClouds);
Assertions.assertEquals("burnNumberMissingSparkler:CHOCO_RATIONAL", smokeReader.pipeError);
cdc.addAll(FCDotDEC2701DashPX0.ESC_STOP.baklavaPointSequence());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart() + 123);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 123);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart() + 123);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 123);
cdc.addAll(FCDotDEC2701DashPX0.ESC_STOP.baklavaPointSequence());
smokeReader.reset();
@ -62,8 +62,8 @@ public class FourCornerZionStenoLexerSmokeTest {
Assertions.assertEquals(2, smokeReader.pipeSmokeClouds);
cdc.addAll(FCDotDEC2701DashPX0.ESC_STOP.cakePointSequence());
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart() + 11);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart());
cdc.add(192 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart() + 11);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart());
smokeReader.reset();
lexer.read(cdc);
String res = "[0:1:burnNumberMissingSparkler:CHOCO_RATIONAL][0:8:burnNumberMissingSparkler:CHOCO_RATIONAL][0:16:burnNumberMissingSparkler:CHOCO_RATIONAL]";

View file

@ -73,7 +73,7 @@ public class StenoNumberChocoRationalTest {
public void testBankRationalValuesMax() throws Exception {
List<Integer> outX18 = new ArrayList<>();
FourCornerZion7Candlelier writerX18 = FourCornerZionStenoGrapher.writerX18(outX18);
BigInteger maxValue = FourCornerZionStenoPetroglyphs.BIG_BITS_2300;
BigInteger maxValue = FourCornerZionStenoPetroglyphs.BIG_BITS_1148;
writerX18.strobeNumberChocoPigRational(FCFlameNumberTaste.NUMBER_POSITIVE, FCFlameNumberTaste.NUMBER_POSITIVE, maxValue, maxValue);
Assertions.assertThrows(IllegalArgumentException.class, () -> {
writerX18.strobeNumberChocoPigRational(FCFlameNumberTaste.NUMBER_POSITIVE, FCFlameNumberTaste.NUMBER_POSITIVE, maxValue, maxValue.add(BigInteger.ONE));
@ -89,31 +89,31 @@ public class StenoNumberChocoRationalTest {
cdc.add(FCDotCDC1604DashP6.NX24_X.ordinal()); // = X
cdc.add(FCDotCDC1604DashP6.NY09_EQUALS.ordinal());
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 1);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 11);
cdc.add(96 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 1);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 11);
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 1);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 1);
cdc.add(96 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 1);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 1);
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 14);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 15);
cdc.add(96 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 14);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 15);
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 123);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart() + 1);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 1); // 4096
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 1); // +1 = 4097
cdc.add(96 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 123);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart() + 1);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 1); // 4096
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 1); // +1 = 4097
cdc.add(192 + FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 4);
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStart() + 1);
cdc.add(96 + FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 4);
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStart() + 1);
cdc.add(FCDotCDC1604DashP6.NY14_SEMICOLON.ordinal());
Assertions.assertEquals("X=¹/₁₁¹/₁¹⁴/₁₅¹²³/₄₀₉₇⁴/₁;", FourCornerUnicodeDisplay.text().renderFromInt18(cdc));
@ -122,12 +122,12 @@ public class StenoNumberChocoRationalTest {
@Test
public void testNCRLargest() throws Exception {
List<Integer> cdc = new ArrayList<>();
cdc.add(FourCornerDotCake.FC_RATIONAL4608_SEL0.getStop());
for (int i = FourCornerDotCake.FC_RATIONAL4608_SEL0.getStop(); i >= FourCornerDotCake.FC_RATIONAL4608_SEL0.getStart(); i--) {
cdc.add(FourCornerDotCake.FC_RATIONAL4608_BANK.getStop());
cdc.add(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStop());
for (int i = FourCornerDotCake.FC_RATIONAL2304_SEL0.getStop(); i >= FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart(); i--) {
cdc.add(FourCornerDotCake.FC_RATIONAL2304_BANK.getStop());
}
String resSuper = "²³³⁸⁷⁸³⁵³¹⁸⁰⁷⁵⁸³³⁹⁵²²⁹⁹⁹⁹⁸⁵⁸⁴⁶¹⁴⁵¹⁵³⁷⁰¹⁶²⁰⁵⁵¹⁴⁷⁰⁴⁷³⁴⁹¹⁸³⁴²⁰³⁶⁵²⁷³²¹⁷³⁵¹⁵⁹⁰⁴⁹⁴⁶²⁶⁰³⁴¹⁷⁴⁵²⁷⁸¹³³⁹⁹⁵⁵⁶³³⁹⁸⁵⁴³⁸³³⁰⁰²⁷³⁷³⁰⁵⁷⁵⁵²⁶⁵⁶⁶⁷⁵⁴⁰²⁹⁰⁷²⁷⁷⁶⁶⁸⁰⁷⁴⁹³²¹²⁸⁷⁶⁹⁰⁹⁸⁷⁵⁵⁹⁴⁶⁵⁹⁹⁹⁰⁵²⁵¹⁴⁹⁵¹¹⁶⁶⁸⁵⁸⁴³¹⁴⁵⁴¹⁰⁸⁰⁵²⁹²³²⁹²⁰⁵⁰⁷³³⁹²⁸⁰³⁶⁶⁶⁰⁸⁵⁴³²⁸⁴¹⁰⁰⁷²⁹³²³⁷⁰⁷⁷⁴⁴⁸⁴⁷⁵²⁹²⁴⁴⁰²⁸⁷⁰⁴³⁷⁵²²²⁸²⁸⁰⁷⁵⁰⁴⁸⁰⁵³⁴⁴¹⁸⁷³⁰⁶⁶⁸⁴¹⁴³¹⁸⁸⁶⁷⁷⁰⁹⁹⁶⁸⁰⁸⁷⁴⁰⁸²⁷²¹¹⁶⁰³⁴⁷⁵⁰³⁸³⁷⁸¹⁷⁴⁹⁷⁶⁷¹²⁶⁸¹⁵¹⁰⁶²²²²⁶¹⁰⁵⁰⁴²⁹³³⁷⁰¹⁰⁸¹⁶³⁹⁴²⁰⁷⁹⁶⁴⁵⁶⁶²⁵⁸³²⁰⁵³⁴⁸⁰⁷⁹²⁸⁴⁰¹⁷⁰²⁰¹⁹⁷⁸⁷⁴⁶⁸⁶³⁸⁷⁵⁶⁵³⁹³⁰⁵³⁶¹³⁰⁶⁹²¹¹⁴⁵³⁴⁵⁵³⁵⁰⁸²¹³⁷⁷³⁶⁷⁷⁵⁴³⁹⁹⁰⁸⁵⁵⁴⁰²⁸⁴⁵⁹⁵²⁶⁹⁰⁹⁶⁶⁴²²⁹⁷⁹⁹⁹⁶⁶¹¹²⁸⁵²¹⁴⁴⁷²¹²⁴¹⁷⁶²⁵⁸⁴²⁰³⁴¹⁶⁹⁰⁷⁰⁹⁶¹⁵⁰¹⁶⁸⁷⁵⁹⁵⁰⁰⁷⁸⁹³⁴⁷⁴⁰⁴⁸⁹⁵³⁶⁸⁶⁶⁶⁶⁵⁰⁶³⁷³⁰⁰⁹⁸¹⁸⁸⁵²³⁵¹⁷⁴⁸¹⁴⁶⁷¹⁹⁵⁸³¹⁰⁹⁴⁸⁴⁶³⁷⁹⁵⁹⁷³⁶⁹⁸⁵⁹⁶⁶⁹³⁴⁶⁹⁰⁵⁴³³⁵⁹⁰⁹²⁶⁴²⁷⁹⁰³²²⁷⁰¹⁷⁵³⁴⁴⁰¹¹⁸¹⁹³⁴¹⁴¹⁴¹⁰²⁴⁹⁴⁸¹²⁰³⁴⁴⁶¹⁵⁵⁰¹¹⁷⁴¹⁰²³⁸⁹⁷⁹¹⁶³⁵⁰²²⁶³⁷³⁸⁷³⁸⁵²⁷⁰⁰⁷⁵⁸⁰²⁸⁵⁰⁵³¹⁷³⁷";
String resSuber = "₂₃₃₈₇₈₃₅₃₁₈₀₇₅₈₃₃₉₅₂₂₉₉₉₉₈₅₈₄₆₁₄₅₁₅₃₇₀₁₆₂₀₅₅₁₄₇₀₄₇₃₄₉₁₈₃₄₂₀₃₆₅₂₇₃₂₁₇₃₅₁₅₉₀₄₉₄₆₂₆₀₃₄₁₇₄₅₂₇₈₁₃₃₉₉₅₅₆₃₃₉₈₅₄₃₈₃₃₀₀₂₇₃₇₃₀₅₇₅₅₂₆₅₆₆₇₅₄₀₂₉₀₇₂₇₇₆₆₈₀₇₄₉₃₂₁₂₈₇₆₉₀₉₈₇₅₅₉₄₆₅₉₉₉₀₅₂₅₁₄₉₅₁₁₆₆₈₅₈₄₃₁₄₅₄₁₀₈₀₅₂₉₂₃₂₉₂₀₅₀₇₃₃₉₂₈₀₃₆₆₆₀₈₅₄₃₂₈₄₁₀₀₇₂₉₃₂₃₇₀₇₇₄₄₈₄₇₅₂₉₂₄₄₀₂₈₇₀₄₃₇₅₂₂₂₈₂₈₀₇₅₀₄₈₀₅₃₄₄₁₈₇₃₀₆₆₈₄₁₄₃₁₈₈₆₇₇₀₉₉₆₈₀₈₇₄₀₈₂₇₂₁₁₆₀₃₄₇₅₀₃₈₃₇₈₁₇₄₉₇₆₇₁₂₆₈₁₅₁₀₆₂₂₂₂₆₁₀₅₀₄₂₉₃₃₇₀₁₀₈₁₆₃₉₄₂₀₇₉₆₄₅₆₆₂₅₈₃₂₀₅₃₄₈₀₇₉₂₈₄₀₁₇₀₂₀₁₉₇₈₇₄₆₈₆₃₈₇₅₆₅₃₉₃₀₅₃₆₁₃₀₆₉₂₁₁₄₅₃₄₅₅₃₅₀₈₂₁₃₇₇₃₆₇₇₅₄₃₉₉₀₈₅₅₄₀₂₈₄₅₉₅₂₆₉₀₉₆₆₄₂₂₉₇₉₉₉₆₆₁₁₂₈₅₂₁₄₄₇₂₁₂₄₁₇₆₂₅₈₄₂₀₃₄₁₆₉₀₇₀₉₆₁₅₀₁₆₈₇₅₉₅₀₀₇₈₉₃₄₇₄₀₄₈₉₅₃₆₈₆₆₆₆₅₀₆₃₇₃₀₀₉₈₁₈₈₅₂₃₅₁₇₄₈₁₄₆₇₁₉₅₈₃₁₀₉₄₈₄₆₃₇₉₅₉₇₃₆₉₈₅₉₆₆₉₃₄₆₉₀₅₄₃₃₅₉₀₉₂₆₄₂₇₉₀₃₂₂₇₀₁₇₅₃₄₄₀₁₁₈₁₉₃₄₁₄₁₄₁₀₂₄₉₄₈₁₂₀₃₄₄₆₁₅₅₀₁₁₇₄₁₀₂₃₈₉₇₉₁₆₃₅₀₂₂₆₃₇₃₈₇₃₈₅₂₇₀₀₇₅₈₀₂₈₅₀₅₃₁₇₃₇";
String resSuper = "³⁸²³²⁷⁰⁴⁶⁸³⁰²⁹⁴¹⁸⁴²⁰⁰²⁰²⁴⁶⁰⁷⁴⁵⁰³⁵⁷⁹²⁵⁵⁷⁰⁹⁸⁸³⁵⁸⁹⁶⁵⁰⁴⁹⁹⁴⁰⁶³⁷²¹²³⁴⁸¹⁸²⁴⁸¹¹¹²²⁵⁵⁷⁴⁷³⁹⁵¹¹¹⁶⁷⁸⁹⁹⁶¹³⁴⁸⁷³²³⁷⁰¹⁹⁷⁴⁰²⁸¹⁶⁷⁹⁵⁹⁴³¹⁵⁴⁰⁹⁰²⁸⁶⁸⁸⁰²²¹⁸⁹⁷⁵⁹⁴¹⁵⁶⁴⁵⁸⁵¹⁰⁵⁵⁶³⁸¹⁶⁴¹⁰⁵³⁷⁹⁰²⁹⁵⁶⁰⁷¹⁷⁵³⁸⁸⁷⁸³¹⁹³⁶¹⁴⁴⁹⁸¹³⁴⁹⁷¹⁴⁹⁹⁷⁵⁷⁵³³⁰⁰⁷⁵⁸⁸⁶⁴²⁴⁵¹³⁰⁵⁰⁷³⁶¹¹²⁹⁶⁷⁷¹⁰⁶¹⁶¹⁸¹⁵⁵⁰⁸²⁵⁹⁷⁶⁸⁷⁵¹⁴²⁷⁸⁰⁶²⁴⁰¹²³¹¹⁷¹⁷²⁷⁴¹⁹⁷⁶⁵⁵⁰¹⁶²⁷¹⁹⁷²⁸²⁴⁹⁸⁸²⁰⁶⁵³⁵⁶⁷⁸⁵⁶²⁰⁴⁵²³⁴¹⁴⁰⁹¹³⁹⁵⁷³⁰⁵²¹⁵⁸⁹⁵⁴⁰⁴²³⁸²⁴⁰⁰⁵⁸⁸⁵⁶⁵⁴⁴⁶⁶⁵";
String resSuber = "₃₈₂₃₂₇₀₄₆₈₃₀₂₉₄₁₈₄₂₀₀₂₀₂₄₆₀₇₄₅₀₃₅₇₉₂₅₅₇₀₉₈₈₃₅₈₉₆₅₀₄₉₉₄₀₆₃₇₂₁₂₃₄₈₁₈₂₄₈₁₁₁₂₂₅₅₇₄₇₃₉₅₁₁₁₆₇₈₉₉₆₁₃₄₈₇₃₂₃₇₀₁₉₇₄₀₂₈₁₆₇₉₅₉₄₃₁₅₄₀₉₀₂₈₆₈₈₀₂₂₁₈₉₇₅₉₄₁₅₆₄₅₈₅₁₀₅₅₆₃₈₁₆₄₁₀₅₃₇₉₀₂₉₅₆₀₇₁₇₅₃₈₈₇₈₃₁₉₃₆₁₄₄₉₈₁₃₄₉₇₁₄₉₉₇₅₇₅₃₃₀₀₇₅₈₈₆₄₂₄₅₁₃₀₅₀₇₃₆₁₁₂₉₆₇₇₁₀₆₁₆₁₈₁₅₅₀₈₂₅₉₇₆₈₇₅₁₄₂₇₈₀₆₂₄₀₁₂₃₁₁₇₁₇₂₇₄₁₉₇₆₅₅₀₁₆₂₇₁₉₇₂₈₂₄₉₈₈₂₀₆₅₃₅₆₇₈₅₆₂₀₄₅₂₃₄₁₄₀₉₁₃₉₅₇₃₀₅₂₁₅₈₉₅₄₀₄₂₃₈₂₄₀₀₅₈₈₅₆₅₄₄₆₆₅";
Assertions.assertEquals(resSuper + "/" + resSuber, FourCornerUnicodeDisplay.text().renderFromInt18(cdc));
}
}