m`^ *
$&├──
{4}
|
T+`|├` └`(?<=(.)*).(?!.+¶(?>(?<-1>.)*)[|├└])
^
.¶
Provalo online!
Suppongo che potrei tecnicamente contare questo come un byte per carattere scambiando alcuni caratteri, leggendo l'origine come ISO 8859-1 e quindi trovando una codifica a byte singolo per l'output che contiene ├e └, ma non posso preoccuparmi di lavorare i dettagli adesso. (Per la cronaca, sarebbero 72 byte.)
Spiegazione
Fase 1: sostituzione
m`^ *
$&├──
Iniziamo abbinando il rientro su ciascuna riga e inserendo ├──.
Fase 2: sostituzione
{4}
|
Quindi, abbiniamo ogni gruppo di 4 spazi e sostituiamo il primo con a |. Ora tutto ciò che deve essere risolto è |andare in fondo all'output e ├dovrebbe essere └. Entrambi questi casi possono essere riconosciuti guardando il personaggio direttamente sotto quello che potenzialmente vogliamo cambiare.
Fase 3: traslitterazione
T+`|├` └`(?<=(.)*).(?!.+¶(?>(?<-1>.)*)[|├└])
I (?<=(.)*)conteggi quanti caratteri precedono la partita sulla linea di corrente per misurare la posizione orizzontale è di. Poi i cassonetti guardano avanti alla riga successiva con .+¶, partite come molti personaggi come abbiamo imprigionati nel gruppo 1con (?>(?<-1>.)*)(per avanzare alla stessa posizione orizzontale) e poi controlla se il carattere successivo (cioè quello al di sotto della partita reale) è uno dei |├└. In tal caso, la partita ha esito negativo e in tutti gli altri casi ha esito positivo e lo stage sostituisce gli spazi per |e └per ├.
Questo non risolverà tutti i personaggi in una singola corsa, quindi applichiamo questo stage ripetutamente con l' +opzione fino a quando l'output non smette di cambiare.
Fase 4: sostituzione
^
.¶
Tutto ciò che rimane è la prima riga, quindi abbiniamo semplicemente l'inizio della stringa e anteponiamo ae .un avanzamento riga.