Écrivez du code qui agit comme un programme cat. C'est-à-dire, pour entrer une chaîne et la sortir telle quelle. Mais la réversion normale de votre code doit produire la réversion normale de la chaîne d'entrée. Et la réversion visuelle de votre code doit produire la réversion visuelle de la chaîne d'entrée.
La réversion normale est la séquence de caractères inversée d'une chaîne. La réversion visuelle est la réversion normale avec les caractères ()[]{}<>
remplacés )(][}{><
respectivement.
Vous pouvez utiliser n'importe quelle page de code contenant les caractères ()[]{}<>
et publiée avant ce défi pour définir les caractères. Vous devez utiliser la même page de code pour tout votre code. Votre code d'origine doit être valide dans cette page de code, et l'application de l'un de vos codes inversés à celui-ci devrait se produire.
C'est le code-golf , le code le plus court en octets gagne.
Exemple
Pour la chaîne AB(XY)
, ses inversions normales et visuelles sont )YX(BA
et (YX)BA
respectivement.
Si votre code (dans une langue hypothétique) l'est AB(XY)
, alors le code )YX(BA
et (YX)BA
devrait produire respectivement les inversions normales et visuelles de la chaîne d'entrée. Et AB(XY)
devrait agir comme un programme de chat.
la source
Réponses:
05AB1E , 16 octets
Utilise le fait que 05AB1E a une constante prédéfinie
"()<>[]{}"
et n'est pas affectée à la réversion visuelle.Code:
Explication:
Essayez-le en ligne!
Renversé:
Explication:
Essayez-le en ligne!
Visuellement inversé:
Explication:
Essayez-le en ligne!
Utilise l' encodage CP-1252 .
la source
CJam, 21 octets
Testez-le ici.
Réversion normale:
Testez-le ici.
Réversion visuelle:
Testez-le ici.
Explication
Tout d'abord, le code normal:
C'est simple:
q
lit toutes les entrées,e#
commente le reste du programme et l'entrée est imprimée implicitement à la fin.Maintenant, la réversion normale:
Et enfin, la réversion visuelle:
la source
Haskell, 124 octets
Vers l'avant:
Marche arrière normale:
Inverse visuel:
Chaque version définit une fonction
f
qui prend et retourne une chaîne. En mode avantf
est la fonction d'identitéid
, le reste du code est un commentaire. En mode normal , la marche arrière garde1<2
enf
est -True
, doncreverse
est appliquée. En mode d'inversion visuelle, le<
est commuté sur>
et le protecteur l'estFalse
. Le deuxième garde est juste l'inverse etTrue
en mode visuel, donc en plusq
est appliqué ce qui commute "() <> {} []".En plus
<
et>
dans les gardes, mon code n'utilise aucun des crochets, donc ils ne peuvent pas être foirés.la source
Utilitaires Linux communs Bash +, 51
Réversion normale:
Réversion visuelle:
L'astuce principale ici est que la chaîne
()[]{}<>
est codée 691E97CA5D607DB5 (base 15). Ladc
commande résultante donnera ce même résultat après l'un ou l'autre type de réversion. Cependant, le'()[]{}<>'
littéral de chaîne est sensible au type d'inversion.tac
est nécessaire pour inverser l'ordre des lignes d'entrée etrev
est requis pour inverser les caractères de chaque ligne. Toute entrée ASCII doit être acceptable.la source
MATL,
26242216 octetsVers l'avant
Essayez-le en ligne!
Explication:
Réversion normale:
Essayez-le en ligne!
Explication:
Réversion visuelle:
Essayez-le en ligne!
Explication:
la source
()[]{}<>
remplacés)(][}{><
respectivement.GolfScript,
3228 octetsEssayez-le en ligne!
Réversion normale:
Essayez-le en ligne!
Réversion visuelle:
Essayez-le en ligne!
Le fait qu'un système inégalé
}
termine le programme dans GolfScript, a rendu cela assez simple. Cependant, je suis presque sûr que mon code pour permuter les crochets n'est pas encore optimal.la source
Python 2.7, 208 octets
Vers l'avant
Réversion normale
https://eval.in/574639
Réversion visuelle
https://eval.in/574638
Toutes les directions sont lues de stdin jusqu'à EOF.
Rien de super intelligent ici. Commentaires de fin pour exécuter uniquement le code en avant par rapport au code en arrière, puis une
exec
instruction dans un bloc try pour intercepter les erreurs de syntaxe pour les deux inversions différentes.la source