Skip to content

Instantly share code, notes, and snippets.

@fliptopbox
Last active May 10, 2018 23:46
Show Gist options
  • Save fliptopbox/f0ec7e5122ed9f42ebcb to your computer and use it in GitHub Desktop.
Save fliptopbox/f0ec7e5122ed9f42ebcb to your computer and use it in GitHub Desktop.
kilroy was here
/*
,,,
(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