* Qu'est-ce qu'un transmogrificateur?
Dans le langage de programmation C , il existe des formations appelées digraphes et trigraphes qui sont des séquences de deux et trois caractères évaluées en caractères moins courants. Par exemple, vous pouvez utiliser ??-
si votre clavier n'en a pas ~
.
Étant donné le texte, remplacez toutes les instances des digraphes et trigraphes suivants (côté gauche) par le caractère golfé correct, le plus court (côté droit).
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
Contribution
L'entrée est du texte ASCII. Retour à la ligne autorisé. N'a pas besoin d'être un code C valide.
Production
La sortie est le même texte, avec toutes les instances des digraphes et trigraphes ci-dessus remplacées par la version raccourcie, évaluée de gauche à droite. Retour à la ligne autorisé. N'a pas besoin d'être un code C valide.
Cas de test
=>
sépare l'entrée et la sortie.
if (true ??!??! false) { => if (true || false) {
??-arr.indexOf(n) => ~arr.indexOf(n)
function f(??) { console.log('test??'); } => function f(] { console.log('test^); }
/* comment :> :) *??/ => /* comment ] :) *\
%:What am I doing??!!??` => `#What am I doing|!??
??(??)??(??) <:-- not a palindrome => [][] [-- not a palindrome
?????????? => ??????????
int f(int??(??) a) ??< return a??(0??)??'a??(1??) + "??/n"; ??> => int f(int[] a) { return a[0]^a[1] + "\n"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"
est un autre cas de test pertinent: en C, cela signifie"#%:"
où%:
n'est pas spécial, mais je pense que votre sortie attendue est"##"
.Réponses:
Rétine , 65 octets
Essayez-le en ligne!
T
est un peu gênant à utiliser mais me fait encore économiser 14 octets.la source
\?\?[^:%]
?\?\?[^:%?]
plutôt)??a
ena
.%>
au lieu de>%
.C,
206205 octets(-1 grâce au plafond)
Les nouvelles lignes sont juste là pour plus de lisibilité.
Modifie
s
sur place. Testé avec GCC et clang sur Fedora Workstation, x86, en mode 32 bits et 64 bits.C n'est pas exactement le meilleur langage pour jouer au golf ici.
la source
C is not exactly the best language for golfing here.
sans blague. Ça a l'air bien :) En y repensant, j'aurais dû forcer toutes les questions à ajouter +1 ou +2 octets s'ils utilisaient l'un des caractères qu'un digraphe ou un trigraphe fait xDJavaScript (ES6), 106 octets
Comment?
C'est assez simple.
Notons cependant que:
Lorsque i est inférieur à 9 , l'expression
'<:<%%'[i-9] + ':>%>:'[i-9]
évalue àundefined + undefined
qui est égalNaN
(fausse comme prévu).Lorsque i est supérieur ou égal à 9 , l'expression
'??' + "=/'()!<>-"[i]
évalue à"??" + undefined
laquelle est contraint la chaîne"??undefined"
(véridique lorsque nous attendons un résultat falsifié).C'est pourquoi nous devons traiter le test dans cet ordre.
Cas de test
Afficher l'extrait de code
la source
Ruby , 104 + 1 = 105 octets
Utilise l'
-p
indicateur pour +1 octet.Essayez-le en ligne!
la source
Javascript (ES6),
131123 octetsla source
PHP, 112 octets
Essayez-le en ligne!
PHP, 115 octets
Essayez-le en ligne!
PHP, 124 octets
Solution Regex
Essayez-le en ligne!
la source
JavaScript (ES6), 113 octets
Pas le plus court, mais je voulais essayer une approche différente.
la source