Intro
Nella maggior parte dei tipi di carattere di tutti i caratteri alfabetici maiuscoli oltre BDOhanno linee singole di circa toccano alcuni dei quattro angoli del rettangolo di delimitazione del personaggio: ACEFGHIJKLMNPQRSTUVWXYZ.
Ad esempio, le due gambe di un A"tocco" gli angoli in basso a sinistra e in basso a destra del personaggio. Allo stesso modo, Ctocca i suoi angoli in alto e in basso a destra (è un po 'curvo ma è abbastanza vicino). Ltocca solo gli angoli in alto a sinistra e in basso a destra con linee singole. L'angolo in basso a sinistra di Lè un vertice, non la fine di una singola riga.
Ecco una tabella di quali personaggi toccano quali angoli in base al carattere Stack Exchange I (e, si spera, tu) vedi. 1è per in alto a sinistra, 2è per in alto a destra, in 3basso a sinistra, in 4basso a destra.
A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4
Impostare
Fai finta che queste linee toccanti dell'angolo si estendano nella direzione dell'angolo che toccano in modo che le disposizioni di questi personaggi su una griglia possano essere "connesse".
Ad esempio, tutti i personaggi in
A
C X
sono collegati perché la parte inferiore sinistra Ae la parte superiore destra della Cconnessione e la parte inferiore destra Ae la parte superiore sinistra della Xconnessione.
Tuttavia,
CAX
non ha connessioni perché le connessioni si verificano solo in diagonale da un carattere all'altro .
Sfida
Scrivi il programma più breve possibile (in byte) che genera tutti i caratteri ACEFGHIJKLMNPQRSTUVWXYZin un grande albero completamente connesso, secondo le regole sopra. Ogni personaggio deve apparire esattamente una volta. Usa gli spazi per lo spazio vuoto.
Esempio
Tutto in questo albero di 23 lettere può essere raggiunto da qualsiasi altra cosa tramite le connessioni diagonali sopra definite:
Q
A J R
C U S Y
I M N
E H X
F L T
G Z K P
V W
Appunti
- È possibile codificare la soluzione.
- L'output deve contenere solo
ACEFGHIJKLMNPQRSTUVWXYZspazi e nuove righe.BDOnon verrà utilizzato. - Gli spazi iniziali / finali vanno bene purché tutte le connessioni siano posizionate correttamente.
- La griglia di output non deve essere più grande di 30 per 30 caratteri (inclusi righe e spazi).
- Vengono prese in considerazione solo le connessioni d'angolo. La parte inferiore di
Ynon si collega a nulla. È necessario utilizzare le connessioni angolari dalla tabella sopra. - Non tutti gli angoli collegabili devono connettersi a qualcosa. Gli angoli collegabili e non collegabili possono delimitare l'un l'altro.
- Uscita su stdout. Non ci sono input.
- Includere un grafico di connettività realizzato con barre come ha fatto Peter Taylor è un tocco utile ma non necessario.
Aggiornamento:
githubhagocyte ha effettuato un controllo di validità dell'albero alfabetico su Github .