sfondo
Ispirato da Sono un palindromo. Tu sei? , dove si presenta il fatto scioccante che " ()()non è un palindromo, ma ())(", mi sono chiesto cosa sia invece ()()e la risposta è semplicemente: è una stringa con un asse di simmetria verticale!
L'obiettivo
Scrivi un programma o una funzione che accetta come input una stringa S (o l'equivalente appropriato nella tua lingua), verifica la simmetria lungo l'asse verticale e restituisce un valore di verità o falsa di conseguenza. È possibile utilizzare qualsiasi mezzo ragionevole per accettare l'input e fornire l'output.
Simmetria riflessiva
La simmetria riflettente attorno ad un asse verticale (o simmetria sinistra-destra) significa che se si posiziona uno specchio verticalmente nel centro esatto della stringa, l'immagine riflessa della prima metà della stringa è identica alla seconda metà della stringa.
Ad esempio, le seguenti stringhe sono simmetriche riflettenti attorno ad un asse verticale:
()()
()()()
[A + A]
WOW ! WOW
OH-AH_wx'xw_HA-HO
(<<[[[T*T]]]>>)
(:)
)-(
())(()
qpqp
mentre i seguenti non sono:
())(
((B))
11
+-*+-
WOW ! wow
(;)
qppq
Regole del concorso
• Il programma o la funzione riceverà solo caratteri ASCII stampabili. Puoi includere o meno la stringa vuota, (che è simmetrica, ovviamente!) Come input legale, che è meglio per te.
• I caratteri ASCII che possono essere considerati simmetrici rispetto agli assi verticali sono i seguenti (notare lo spazio iniziale e la differenza tra lettere maiuscole e minuscole):
!"'+*-.:=AHIMOTUVWXY^_ovwx|
I caratteri ASCII che possono essere considerati "specchiati" e i loro caratteri corrispondenti sono:
()<>[]{}qpbd/\
Si noti che, poiché sono sottoposti a mirroring, è possibile avere sia ()così come )(, /\e \/, ecc.
Tutti gli altri caratteri stampabili ASCII devono essere considerati asimmetrici e senza un carattere corrispondente speculare.
• Questa è una sfida di code-golf : più breve è il tuo programma, misurato in byte, migliore è, in qualsiasi linguaggio di programmazione.
• Complimenti alle persone che produrranno un programma simmetrico!
Nota : questa domanda non è un duplicato di "Convenient Palindrome" , che richiede di controllare le stringhe palindromiche in cui vengono capovolte le parentesi. Questa domanda è diversa per due motivi:
1) è una restrizione dell'altra domanda per quanto riguarda i caratteri non parentesi, poiché solo i caratteri simmetrici possono apparire in ordine inverso.
2) Dal momento che si basa sul concetto di simmetria e non su un concetto di "comodo palindromo", i caratteri specchiati possono apparire in entrambi gli ordini, cioè []e ][, e questo rende il programma per risolverlo diverso dai programmi che risolvono l'altro problema .
8considerato "simmetrico"?