Last active
May 10, 2018 23:46
-
-
Save fliptopbox/f0ec7e5122ed9f42ebcb to your computer and use it in GitHub Desktop.
kilroy was here
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
,,, | |
(o o) | |
-._,--------------._,----ooO--(_)--Ooo--._,---- | |
Kilroy was here! | |
*/ | |
const CR = "∗"; // newline deliminator (upper ASCII to avoid collisions) | |
const re = new RegExp(CR, "g"); | |
function inflateASCII (x) { | |
// given an abreviated string | |
// return the unabridged RAW ascii | |
return x | |
.replace(/([0-9]+)([^0-9]{1})/gm, (j,i,m) => Array(Number(i)).fill(m).join("")) | |
.replace(re, "\n"); | |
}; | |
function deflateASCII(x) { | |
// given a RAW ascii string, abbreviate the repetitions | |
// return a compressed string | |
return x | |
.replace(/[0-9]{1}/g, (a,b) => "OIZBASbYBP".split('')[Math.abs(a)]) | |
.replace(/\n/g, CR) | |
.match(/(.)(\1*)/g) | |
.map(char => { | |
return char.length === 1 ? char : char.length + char.slice(0,1);} | |
) | |
.join(""); | |
} | |
const eg0 = `30 3,14 ∗29 (o o)13 ∗-._,14-._,4-2oO2-(_)2-O2o2-._,4-∗24 Kilroy was here!` | |
const eg1 = `∗ /2$3 /2$ /2$ /2$77 /2$37 /2$∗| 2$2 /2$/|2_/| 2$76 | 2$36 | 2$∗| 2$ /2$/2 /2$| 2$2 /6$3 /6$2 /2$3 /2$7 /2$2 /2$2 /2$2 /6$3 /7$6 | 7$3 /6$3 /6$3 /6$ | 2$∗| 5$/2 | 2$| 2$ /2$2_2 2$ /2$2_2 2$| 2$2 | 2$6 | 2$ | 2$ | 2$ |4_2 2$ /2$5_/6 | 2$2_2 2$ /2$2_2 2$ /2$2_2 2$ /2$2_2 2$| 2$∗| 2$2 2$2 | 2$| 2$| 2$2 2_/| 2$3 2$| 2$2 | 2$6 | 2$ | 2$ | 2$2 /7$|2 6$7 | 2$3 2$| 8$| 2$2 2_/| 8$|2_/∗| 2$2 2$ | 2$| 2$| 2$6 | 2$2 | 2$| 2$2 | 2$6 | 2$ | 2$ | 2$ /2$2_2 2$ 4_2 2$6 | 2$2 | 2$| 2$5_/| 2$6 | 2$5_/4 ∗| 2$3 2$| 2$| 2$| 2$6 |2 6$/|2 7$6 |2 5$/4$/|2 7$ /7$/6 | 2$2 | 2$|2 7$| 2$6 |2 7$ /2$∗|2_/2 2_/|2_/|2_/|2_/7 6_/2 4_2 2$7 5_/3_/2 7_/|7_/7 |2_/2 |2_/ 7_/|2_/7 7_/|2_/∗39 /2$2 | 2$90 ∗38 |2 6$/90 ∗39 6_/91 ∗`; | |
const eg2 = `11 .:4IHI2HI3H2I2:I:.∗9 .4IHI6HIH4IM2HI:,∗7 :4IHI6H2M2HI2H2I2H3I:.∗5 .:IHI13HIHI2HI3HIH:I:,∗4 ,.:HI21HIHI2H2I:.∗3 ,.:I10H4M7H2I3HIH3I,∗2 .:2I8H5M4H3M2HM3H3IH4I:∗2 .2I3H7M2H3M3H3M2HMH2I:3H2I:I.∗2 :HI3HMH12MHM4H2I:2H2MH2I:2I∗ :4HMH15MH2IHI2H2M4H2I2:I:∗:2I5HMH10MH2MHIH4M3HI:"2:2IH2I:∗:I5HMH12M2HI:2I2:I:"' .3 '"I2H.∗2:4HMH10MHM2HI:2I2:.'2 .7 'VMA.∗I5HMHN8MHM2HI:2I:. . .10 "2MH.∗5HMH10MHMHI:I2:.' .2 . .6 .,3M:.∗4HMH11MHMHI:2I:. 2.2 .4 2.LI:"I2MI.∗HMH14MHMHI:2I.'.8 :HT;.2, VHI:∗5HMH9MHM3HI:HMH2I:,.3 ':,MHP"HPIH2I.∗I4HMH9MHM3H2I2:IT:.I:.2 'H2MH ,:" V2I:∗:7HMH5MHM4H2I3MPVHI2:. .P"TIT"'2 IH:I∗2HI6HMH4MHM5H:V3M:.HI:H:. :. . . .2I:I.∗:5HMH5MHM4H2IH2M2HI:.:HI:. . 2. .3 :3I;∗I4HMH7M5HI:IT:TI:2.:HI:2. 2.:. .2 :IH2I∗ I2HMH11M2HI:I2:.:. 2.:2I2:2. :I2.2 :H2IH.∗ '3HMH5MHM4H:2I:2. 3.:2I:2I./'2:.2 ' I2HIH;∗2 2HMH7MHM4H:I:I2:4.2:VIHI;, ' . . I2HIHA∗2 M2H9MHM3H:2I3:3.2:2I3:.;3,:3 A2HI2H;∗2 ;2HMH8MHM2H-:2I2:2.3:I2:2"2,:"2'2 .3HI2HI.∗2 '3HMH8MHM2HA:2I:.:H.2:-"'2"' ,'. .AM2HI3H;∗3 :2HMH10MHMHA:2I2:.4:-;2,2: 2. :AMHI:I2HI∗3 '2HMH10MHM2HA:3I3:2I:2I2:. . .A2MHI:I3H.∗4 :3HMH9MHM2HA:3IH2I:.3:. . .A3MHI:I3H:.∗4 '2HMH12MHM3HI:":V3I2:3.:A4M2HI:I3HI∗5 ;IHMH13MHM2H2I:. '2" 'A7MHI:2I3H:I.∗5 :IMH14MHM3H2I:.2 .:IH6M3HIHI3HI2:.∗5 ;3HMH14MHM3HI:2.I2HMH2M5HI3HM2H;I:".'∗5 ;5HMH5MN7MHM3HI2:.4H2M5HIHI5HI:'∗5 :8HMH9M3HM3HI:I2HMH2M5HMHI4HIHI;∗5 ;8H2MH5MHM2H2MHIHMI:2I3HM4HMHMHIHI4HI:.∗5 I10HMH5MHM2H2M2H2M2I:I2H2MHM4H2MHMHM4H;∗5 ;2H:":I4HMH5MHMHIHMH2I2MHI:IMH3MI:5H2M4HI:I.∗4 ;HV" . .:2I3H7M3H2MH2IHM2HI:3HMHI:I2HI2HI2HMHI:2I;.∗3 ;IV"3 . .2'":V6MHM3H2MHI:4HI:3HIHI:I5HI3HIH2I;,∗3 .2I"3 2. .2 ':V3HMH5MHM2HI:H2MHI:I3HI2:I3HI:HI3HI:I:.∗2 .2I . . .2 . .2 ':4HMH3MH3MHIHI3MHI:3HMI:I3HIHI:4H2I:I.∗ .;V' . 2. .2 .4 'IH3M2HM3H3MHIHI4HI:I3HI:I5HI5H2IH2I:.∗.:I" 2. . .4 .3 :IH3M3HM2HI3HI:2HI3HIHI3HAI6HI:3HIH2I:.∗'2.:2 .2 .7 .2 :I3MHM2HIMH2I2HI:I2HI:I2HI4HIHI4HIHI4HIHI:.∗.: 2. . . .6 2.:IH3MHMHMHM4HMHI2HI:.IV2I3HI8HI:HI2HIH2I:.∗.: .3 . .8 . :IH3MHMIHIH:2I3HI2H:.I:2I3HI8HIHI:I3HI:;.∗2: .:. .2 .3 .3 2.:I2H3MHMIHIH:2I3HM2H2:2.:4HI:6HI:I:3IH2I;∗:. 3. . .2 .5 2.2:3H2MHM2H2I:H2I2H2M2H:2.:3HM2HI3HI2: . :IH2I:I∗':4.3 . .6 . 2.:I3H4MHMHI:HIH3MHA3.VH2M3HMI:'2 .' :IH2:"∗ :. 2.2 4.4 .4 2.I4H4M2H2I:I:IH2MHA. .VHM3HI:' 2'4 2':,∗ 2:3.2 . 4. .3 . 2.2:I3H4MIH2I2:I:IH2M2HMHIHIHI2'3 .2 .5 ,∗ 2:4. . 5.2 2.2 3.2:3I3H2MIHI2:I3H3I3H2IHI".2 2.3 .6 ,∗ 2:.:10. 2. . 4.3:2H2I7H2IH3MHI:' 'VI2:2.2 . .8 ,∗ 2:.:13. 2. . 3.AHIH5I3HI2:2"'6 'V2I:2. 2.4 .∗ 2:.:.:10. 2. .2 3.3H6I3HI2:. .7 'V2I2:. . .7 ,∗ '3:.:.:5. 2. . . . 2.:M2HIH5I:I2:. .9 'V2I3:. 2.6 .∗2 5:.:2.:4. . . . 3.A4HIH4I3:. .11 'V2I3:. . .3 :.∗2 7:.:5. 2. . 4.M5HIH3I2:.:2. .10 'V2I2:.2 .3 2:∗2 9:.:4. 2. 4.:M4HIH2I:I4:3.2 .9 'VI2:. .3 2:I)∗2 '10:.:3. 2. 3.:M4HIH4I4:2.2 .11 'VI:.4 3.:V∗3 .11:.:4. . .A2M2HIH3I:I4:3.2 .2 .8 I2:.3 3.:-"∗3 :.2:I8:.:. .2 2.3M2HIH4I:I3:3. .2 .8 .2:.2 ,2.-"∗3 :2.:2I:I5:.:2. . 2.3M2HIH7I:I2:4. .2 .4 2.2:2"'∗2 .2:.:3I:I6:.:2. 2.4MIVHIH5I:I4:4. .3 5.:,∗.:.2:2.:3I:I5:.:3. .2MHMAIV2HIH5I:I4:2. .2 2.2:2.:,∗. .3:.2:3I:I4:.:3. .V2MHMAIV3HIH4I:I4:2.2 2.:3.3:∗. 3:I.3:3I:I3:.2:2. .:2M2HMAIV2HIH5I:I4:4.3:.4:∗ .2:2IH.3:3I:I4:.:2. .2MHMHMAIV3HIH6I:I3:.7:I)∗.2:2I2H.2I3:2I:I4:.:3.3MHMHMAIV5HIH2I:I3:2.6:HV∗2:3IHIH.3I2:I:I4:.:. .M2HM3HIA2IV4HIH3I:3.4:.:-"∗:2IHI2HA.VIH2I:I7:3.6HIHI2:":V3H2I:I3:3.:-'∗2IHI4HI.2HIH2I:I5:3.3HIH2I:' .2 .'"V5I2:-'∗IHI5H-:2HIH4I:I2:.:2.HIHI2:. 2.2 3.:"∗HI4HI3H:3HIH4I:I2:.:H2I:'. .3 2.:"∗6HM3HI6HIH3I2:.IHI:.2 .4 2.:-.,∗7HM2HI7HIH2I:2.2I:'2 .4 .:"4 2'"-.∗7HM2HI6HIH2I2:2.I;'. .3 2.:"10 '"-.∗7HMHI8HIHI2:,.I;' . .3 .;"10 "- . ",∗2MHM6H-I6HIH2I2:.2:;.3 :.:;4. .13 '"-.∗3MHM6HI6HIH2I2:2.:.,2 .N.:I2:4. .15 '"-.∗4MHM5HI6HIH3I:2.:.;. :.:AI3:5. .2 .13 .'-.∗5MHM3HI9HIH2I:2.:.;:.:A3I4:7. .15 .':,∗4MHM4HI10HIH:I:.:.,2:AHIH3I:I8:6. .4 .2 3.2:,∗3MHM5HIHV9H3I2:.:.:A2HIHIH5I:I7:.:7. 2. 3.2:.∗MHM3HIH4I:7HIH2I:I:. :A11HIH2IH7I:I2:.:5. 2.2:.∗4HIH4I:I:8HIH2I2: .I20H2IH3I:I12:.∗2HIH5I:I2:V7HIH2I2:. :M22HIH2IH11IV∗2HIH4I:I4:M7H3I2:2. 20MHM6H2IH3IH3IV'∗3HIH2I:I2:I2:M6HIH3I2: .2HI5HI8HI2HI3HI4HI2HIHI2HV'∗4HIH2I:I4:7HIH2I:I:. M3HI7HI6HI7HI8HV'∗2M3HIH3I:I2:8HIH3I: .:13MHM17HV:'∗2I:IHM2HI4:AI9H3I2:. 21MHM7HV:'∗3I:IHMHIA3MI9HIH2I4.17M2-3"2'∗5I:I:2IH5M11H2I3:13"2'∗5I:I:2I:.T,2 'V8HIHI3:∗3IH3I:I3:.:,2 :10HIH2I∗6I:I6:.,2 V10HIHI∗2IH2I:I4:.:3., '3MHM5HIHI.∗4I:I5:.:4.:.V3MHM5HIH.∗6I:I6:.:2.:.5MHM5H:∗IH6I:2I4:.:.:.V5MHM4HA.∗3IH3IH3I:I4:.:2.V5MHM4HA∗5IH7I:I3:.:2.V4MH2M4H.∗2IH6IH5I:I3:2.I7MHM2HI∗H5IH9I:I:.:2.V5MHM2HI:.∗HIH4IH5IHIHI:I2:2.I4MHMHIHI:.∗2HIH6IH4IHIH3I:.:5MHM2HI2:∗3HI6H6I4HIHI:5MHM2H2I:∗4HIH3IH4IHI7HI2.3HIH2IHI:.∗6HIH9IHI2H2.I4HIHI:3I:,∗HM5HIH9IHIHM2H2IH2IHI:2I3:,∗2M8HIH7IHMIH2I2H3IHI:I2:2.,∗MHMHM9HIH2IH.;I:3I2H2I2HI5:.,∗5MHM8HIHIH;I:IHIH2I:HI:H2I2:.2:.∗8MHM7HIH;I:IHMHI.:H2IHI:2I:IHA∗H9MHM6HVI2:IMHI3HMH:IH2:I:I2H.∗3H10MHM2H;I:2HIM4HM2HI2HI.:AMHI:∗4H3M4H5M;I:2I2H2IHA3IHI:HI:HA:IHI∗HI4H3M3H3M:2I:IM2H2IMIH3IHI2HIH2MH.I` | |
console.log(inflateASCII(eg0)); | |
console.log(inflateASCII(eg1)); | |
console.log(inflateASCII(eg2)); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment