En el lenguaje de programación C , hay formaciones llamadas dígrafos y trigrafos que son secuencias de dos y tres caracteres que se evalúan como caracteres menos comunes. Por ejemplo, puede usar ??-
si su teclado no tiene ~
.
Dado el texto, reemplace todas las instancias de los siguientes dígrafos y trigráficos (lado izquierdo) con el carácter correcto, más corto y golfizado (lado derecho).
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
Entrada
La entrada es texto ASCII. Nueva línea final permitida. No necesita ser un código C válido.
Salida
La salida es el mismo texto, con todas las instancias de los dígrafos y trigrafos anteriores reemplazados por la versión abreviada, evaluada de izquierda a derecha. Nueva línea final permitida. No necesita ser un código C válido.
Casos de prueba
=>
separa entrada y salida.
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"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"
Es otro caso de prueba relevante: en C, esto significa"#%:"
que%:
no es especial, pero creo que su salida esperada es"##"
.Respuestas:
Retina , 65 bytes
Pruébalo en línea!
T
es un poco incómodo de usar pero todavía me ahorra 14 bytes.fuente
\?\?[^:%]
?\?\?[^:%?]
más bien)??a
ena
.%>
lugar de>%
.C,
206205 bytes(-1 gracias a ceilingcat)
Las nuevas líneas están aquí para facilitar la lectura.
Modifica
s
en su lugar. Probado con GCC y clang en Fedora Workstation, x86, en modo de 32 bits y 64 bits.C no es exactamente el mejor lenguaje para jugar golf aquí.
fuente
C is not exactly the best language for golfing here.
en serio. Parece bueno :) Pensando en retrospectiva, debería haber obligado a todas las preguntas a agregar +1 o +2 bytes si usaran uno de los caracteres que hace un dígrafo o trigrafo xDJavaScript (ES6), 106 bytes
¿Cómo?
Esto es bastante sencillo.
Sin embargo, debemos tener en cuenta que:
Cuando i es menor que 9 , la expresión
'<:<%%'[i-9] + ':>%>:'[i-9]
evalúaundefined + undefined
cuál es igualNaN
(falso como se esperaba).Cuando i es mayor o igual que 9 , la expresión
'??' + "=/'()!<>-"[i]
evalúa"??" + undefined
cuál es coaccionado a la cadena"??undefined"
(verdadero cuando esperamos un resultado falso).Es por eso que debemos procesar la prueba en este orden.
Casos de prueba
Mostrar fragmento de código
fuente
Ruby , 104 + 1 = 105 bytes
Utiliza la
-p
bandera para +1 byte.Pruébalo en línea!
fuente
Javascript (ES6),
131123 bytesfuente
PHP, 112 bytes
Pruébalo en línea!
PHP, 115 bytes
Pruébalo en línea!
PHP, 124 bytes
Solución Regex
Pruébalo en línea!
fuente
JavaScript (ES6), 113 bytes
No es el más corto, pero quería probar un enfoque diferente.
fuente