¡Ya que se acerca Halloween, pensé que podría comenzar un pequeño desafío divertido de golf de código!
El desafío es bastante simple. Tienes que escribir un programa que da salida a cualquiera trick
o treat
.
"¿El giro?" Tu puedes preguntar. Bueno, déjame explicarte:
Su programa tiene que hacer lo siguiente:
- Ser compilable / ejecutable en dos idiomas diferentes. Las diferentes versiones del mismo idioma no cuentan.
- Cuando ejecutas el programa en un idioma, debería salir
trick
y el otro debería salirtreat
. El caso es irrelevante y se permite rellenar la cadena con caracteres de espacio en blanco (ver ejemplos). - Este es el código de golf , por lo que gana la solución con la menor cantidad de bytes.
Algunas explicaciones:
Salidas válidas (Solo para las palabras que no son para ejecutar el código en los dos idiomas. También agregue comillas para señalar el comienzo o el final de la salida. ¡No las incluya en su solución!):
"trick"
"Treat"
" TReAt"
"
tRICk "
Salidas inválidas :
"tri ck"
"tr
eat"
"trck"
¡Estoy interesado en ver qué se te ocurre! ¡Feliz golf!
Me gustaría señalar que este es mi primer desafío, así que si tiene sugerencias sobre esta pregunta, déjelas en forma de comentario.
Tablas de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Respuestas:
2sable / pl , 8 bytes
Ambos programas han sido probados localmente con el mismo archivo de 8 bytes, por lo que este es un políglota adecuado.
2sable: truco
Este es el programa en la página de códigos 1252 .
Pruébalo en línea!
pl: tratar
Este es el programa en la página de códigos 437 .
Pruébalo en línea!
Cómo funciona
2sable: truco
pl: tratar
fuente
Python / Windows Batch, 25 bytes
Python interpreta todo después del # como un comentario, mientras que el || es un OR en lote, que dice que como el comando anterior falló, ejecute este.
También me gusta el uso de un quirófano, ya que casi dice "truco o trato" :)
fuente
2>nul
.Espacio en blanco / estrellado, 135 bytes
¡Aquí hay un cielo nocturno despejado en Halloween!
Tenga en cuenta que el espacio en blanco en las líneas vacías puede no conservarse si copia del código anterior
Salidas de espacios en blanco "TRUCO". Pruébalo en línea!
Salidas estrelladas "TRATAR". Pruébalo en línea!
Explicación
Estrellado
Starry ignora todas las pestañas y líneas nuevas, por lo que el código que lee es el siguiente
Por cierto, empujar valores es muy costoso en comparación con las operaciones de apilamiento y aritmética en Starry. El código comienza presionando y duplicando 4 y realiza varias operaciones en él y con 2 y 1 presionados más adelante produce todos los valores ASCII requeridos.
Código anotado
Espacio en blanco
Como su nombre indica, Whitespace solo analiza los tres caracteres de espacio en blanco: espacio, tabulación y nueva línea. A diferencia de la estrellada, el espacio en blanco simplemente empuja los valores ASCII de
T
,R
,I
,C
, yK
y las impresiones de ellos.Código anotado
El entretejido de empujes e impresiones se eligió únicamente por razones estéticas, ya que no afecta el recuento de bytes.
fuente
Archivo Linux ELF x86 / DOS .COM, 73 bytes
Fuente NASM:
Esto utiliza el hecho de que el encabezado ELF comienza con 7F 45, que, interpretado como código x86, es un salto.
Las partes relevantes para DOS .COM:
fuente
evil / ZOMBIE , 109 bytes
Otra respuesta espeluznante!
El
ZOMBIE
código define unvampire
nombrexf
cuya única tareaf
se activa en la instancia y saldrá unatrick
vez antes de ser desactivado porstumble
. La otrasay
llamada es código muerto (¡qué apropiado!) ParaZOMBIE
, pero contiene la mayor parte delevil
código.Para
evil
, elxf
nombre es una llamada para saltar al siguientej
, que precede alzuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeaw
gemido de zombie que crea y producetreat
. El siguiente código se ejecuta (letras minúsculas) o se ignora, pero como now
hay salida, no se debe generar.fuente
Python / Perl, 28 bytes
Explicación
Como
[]
es un ArrayRef en Perl, es verdad, pero es una matriz vacía en Python, por lo tanto, es falso.fuente
print({}and"trick"or"treat")
en Python / Lua.{}
es un HashRef!print ([]and"trick"or"treat")
print({}and"trick"or"treat")
!PHP / JavaScript,
3230 bytesSe muestra
trick
en PHP ytreat
en JS.La
NaN
constante desconocida se convierte implícitamente en una cadena por PHP, lo que la hace verdadera. Es falso en JS.Método alternativo, 38 bytes.
El operador ternario es derecho-asociativo en JS:
Y asociativo a la izquierda en PHP:
fuente
HTML / HTML + JavaScript, 53 bytes
treat
es el contenido de texto del documento en HTML.Si JS está habilitado, reemplazará el contenido HTML con
trick
.fuente
document.write()
en su lugar. -8 bytesdocument.write
no reemplazaría la salida HTML, sino que la agregaría.C / Java 7,
165155128123122120103 bytes// \ hace que la siguiente línea también sea un comentario en C, pero es un comentario regular de una línea en Java, por lo que puede hacer que C ignore el código destinado a Java y agregando / * en la segunda línea puede hacer un comentario para Java que sea analizado como código por C.
Editar: lo mejoré un poco al reorganizar las líneas y los comentarios.
Edit2: Reorganicé un poco más y lo acorté aún más.
Edit3: agregué correcciones sugeridas por BrainStone para eliminar 5 bytes, gracias :)
Edit4: una nueva línea resultó ser innecesaria, así que la eliminé.
Edit5: cambié printf a pone.
Edit6: agregué una corrección sugerida por Ray Hamel.
fuente
#include<stdio.h>
por#include<cstdio>
. No mucho, pero un byte es un byte. Y, además, eliminarint
enfrente demain
will safe 4 bytes.int
está implícito en C y C ++String[]s
.Jolf + Chaîne, 12 bytes
Como Chaîne no puede aceptar un archivo para cargar con una codificación, supongo que UTF-8. (Si pudiera asumir ISO-8859-7, serían 11 bytes, pero sería injusto).
En Chaîne,
«
comienza un comentario, y el resto se imprime textualmente. En Jolf,«
comienza una cuerda. Afortunadamente,trick
no hace nada dañino (10; range(input, parseInt(input))
básicamente), ytreat
está impreso.Prueba Jolf aquí!
Prueba Chaîne aquí!
Ambos funcionan en mi navegador (firefox, última versión), pero no se puede decir lo mismo de otros navegadores.
fuente
tr
.tr
pueda reutilizarse en cualquier campo de golf: es una pequeña información que requeriría al menos un operador para codificar en idiomas de golf, luego un condicional específico de idioma. Probablemente se igualaría a la misma longitud o más. Sin embargo, esa es solo mi conjetura;)#hell / Agony , 43 bytes
Tanto en
><>
todas partes, ¿qué es esto, un desafío de April Fools? Aquí hay una respuesta con lenguajes apropiadamente temáticos.#hell
es un subconjunto delLUA
cual afortunadamente aceptaio.write
llamadas de salida. UsamosLUA
los--
comentarios para que solo ejecute este fragmento.Agony
es unBrainfuck
derivado, que tiene la particularidad de tener su código y memoria de trabajo en la misma cinta. La primera línea solo imprime 5 caracteres (10 celdas) desde el final del segmento de código, donde codifiquétreat
comoAgony
comandos.LUA
La apertura de comentarios--
modifica el valor de una celda que no se utiliza.fuente
Cubix / Hexagony , 31 bytes
Engañarlo! ¡Trátelo en línea!
Temática de Halloween ? Tenga en cuenta los hechos horribles sobre estos idiomas y el código:
=v=
sonrisa en ti que actúa en el código sin operacionesProfundicemos en el misterio del protocolo oculto de comunicación de 31 bytes de dimensiones y terror ...
truco
Cuando el código se pliega o se despliega ... Es decir
cubified
, el diseño se ve así:Y la parte principal es esta parte en el medio:
Empuja
k,c,i,r,t
en la pila y saleo
y;
aparece dentro de un bucle delimitado por reflectores y?
que lo guía según el valor en la parte superior de la pila ...tratar
De repente, el código se transforma de un cubo a un hexágono. (Imagina eso)
Y la parte principal es esta parte:
Ejecuta lo
t;
que imprimet
y golpea el espejo y gira su dirección hacia el NO a partir de la esquina SE y golpea otro espejo. Esto se ejecutar;
y se ajustae;_a
y lo]
lleva al Puntero de instrucción 1 que comienza en la esquina NE apuntando SE y golpea,/
que se refleja horizontalmente en;
ese momentot
.Luego se envuelve a
=
,;
y@
termina el desorden.Entonces ... ¿qué está
_
haciendo allí?¿Por qué está dentro de
t
e
a
(las primeras 3 letras en el código)?Aquí llega el final de la historia.
No hace nada .
¿Suena como el final de una historia de terror?fuente
SQL / Javascript, 54 bytes
El mismo enfoque que con mi respuesta QB / JS : la primera línea tiene la instrucción SQL, la segunda línea tiene un 'comentario' para SQL y un NOP para JS. Luego, definimos la
select
declaración de SQL como una función JS válida.fuente
/Brainf..k/, 143 + 3 = 146 bytes
Esta respuesta requiere que el
-A
indicador se muestre en ASCII para Brain-Flak y, por suerte, a Brainfuck no le importa ese indicador, por lo que no afecta el resultado en Brainfuck.Pruébalo en línea!
Pruébalo en línea!
Como funciona esto
La única superposición entre la sintaxis de Brain-Flak y Brainfuck son los personajes
<>[]
. Para Brain Flak, esto significa principalmente que el programa debe garantizar un número par de conmutadores de pila<>
. Y para Brainfuck esto significa que debemos evitar los bucles infinitos causados por el uso de la[]
mónada.El código Brain-Flak es el siguiente:
Aparte del
[<<...>>]
bit en el medio y<[<>]<>[<>]<>>
al final, este código es bastante normal para el curso en lo que respecta a los programas Brain-Flak. Lo negativo alrededor del cero ([<...>]
) está ahí para crear un bucle para Brainfuck. El interior<...>
se usa para mover el Brainfuck a una celda vacía antes de que encuentre lo[][][][]
que de otra forma se repetiría infinitamente.El código Brainfuck es el siguiente:
Aparte de los bits antes mencionados, este también es un programa bastante estándar, por lo que le ahorraré los detalles.
fuente
/brainf..k/
, por lo que debe usar el mismo formato de encabezado que todos los demás.For brain-flak this mostly means the program has to ensure an even number of stack switches
¿Estás seguro de eso? No debería importar ya que<>
es un NOP en brainfuck> <> / Pesca , 38 bytes
En aras de hacer un
><>
/Fishing
polyglot.Es mi primer
Fishing
código después de haber jugado durante mucho tiempo con><>
.Mi primera impresión: como en la naturaleza, ¡el pescador tiene menos capacidades físicas que su oración, pero lo compensa con su herramienta!
Aquí el código es extremadamente simple:
><>
solo ejecutará la primera línea, donde_
hay un espejo vertical y no tiene ningún efecto ya que el pez comienza a nadar horizontalmente. Simplemente empujatrick
la pila y luego la imprime antes de detenerse.Para
Fishing
, las_
instrucciones para bajar. El pescador seguirá el mazo que es la segunda línea mientras atrapa a los personajes de la tercera línea. Estos presionarántreat
la cinta y luego la imprimirán, deteniéndose cuando llegue al final de la plataforma.Si se permite la eliminación de errores, puede bajar a 35 bytes con el siguiente código que arrojará un error cuando se ejecute
><>
una vez quetrick
se imprima fuera de la pila:También debe consultar las respuestas de mis idiomas temáticos, #hell / Agony and evil / ZOMBIE !
fuente
05AB1E / En realidad , 10 bytes
Explicación
05AB1E
Pruébalo en línea
Realmente
Pruébalo en línea
fuente
trick
, pero ¿cómo es’®Â
tratar? ..Haskell / ML estándar , 56 bytes
Vista de Haskell
Los puntos y comas permiten múltiples declaraciones en una línea y actúan como saltos de línea, por lo que obtenemos
Un programa de Haskell se ejecuta llamando a la
main
función, por lo queputStr"trick"
se ejecuta en la última fila que solo se imprimetrick
.Las primeras dos filas se interpretan como declaraciones de función que siguen el patrón
<functionName> <argumentName1> ... <argumentNameN> = <functionBody>
. Así, en la primera fila de una función llamadafun
se declara que toma dos argumentos con nombreputStr
yx
y el cuerpo de la funciónprint"treat"
. Esta es una función de Haskell válida con tipofun :: t -> t1 -> IO ()
, lo que significa que toma un argumento de un tipo arbitrariot
y un segundo de algún tipot1
y luego devuelve una acción IO. Los tipost
yt1
no importan ya que los argumentos no se usan en el cuerpo de la función. El tipo de acción IO resulta deprint"treat"
, que se imprime"treat"
en StdOut (observe el en"
que, por esoputStr
en lugar deprint
se usa enmain
). Sin embargo, como es solo una declaración de función, en realidad no se imprime nada comofun
no se llamamain
.Lo mismo sucede en la segunda línea
val main=();
,val
se declara una función que toma un argumento arbitrario llamadomain
y devuelve la unidad , la tupla vacía()
. Su tipo esval :: t -> ()
(tanto el valor como el tipo de unidad se denotan con()
).Pruébalo en Ideone.
Vista ML estándar
ML estándar es un lenguaje principalmente funcional con una sintaxis relacionada, pero no es lo mismo que Haskell. En particular, las declaraciones de función tienen como prefijo la palabra clave
fun
si toman algún argumento, y la palabra claveval
si no lo hacen. También es posible tener una expresión en el nivel superior (es decir, no dentro de ninguna declaración) que se ejecuta cuando se ejecuta el programa. (En Haskell, escribir1+2
fuera de una declaración arroja unnaked expression at top level
error). Finalmente, el símbolo para probar la igualdad está en=
lugar de==
en Haskell. (Hay muchas más diferencias, pero esas son las únicas que importan para este programa).Entonces, SML ve dos declaraciones
seguido de una expresión
que luego se evalúa. Para determinar si
main
es igualputStr"trick"
, ambos lados deben ser evaluados y ambos deben tener el mismo tipo, ya que SML (así como Haskell) está estáticamente tipado. Primero echemos un vistazo al lado derecho:putStr
no es una función de biblioteca en SML, pero declaramos una función nombradaputStr
en la líneafun putStr x=print"treat";
: toma un argumentox
(esta es la cadena"trick"
en nuestro caso) e inmediatamente la olvida nuevamente, ya que no ocurre en el cuerpo de la función. Luegoprint"treat"
se ejecuta el cuerpo que imprimetreat
(sin encerrar"
, el SMLprint
es diferente del de Haskellprint
).print
tiene el tipostring -> unit
, tambiénputStr
el tipoa -> unit
y, por lo tanto,putStr"trick"
solo tiene el tipounit
. Para estar bien escrito,main
debe tener typeunit
. El valor de la unidad está en SML igual que en Haskell()
, por lo que declaramosval main=();
y todo está bien escrito.Pruébalo en codingground.
Nota: La salida en la consola es
porque en SML \ NJ el valor y tipo de cada declaración se muestra después de cada declaración. Así primero los tipos de
putStr
ymain
se muestran, a continuación, las expresiones consigue evaluado causandotreat
a ser impreso, entonces el valor de la expresión (true
como ambos lados de=
son()
) está unido a la variable de resultado implícitoit
que después se visualiza también.fuente
fun ... ... =
era azúcar sintáctica paraval rec ... = fn ... =>
. Pero, de nuevo, han pasado décadas desde que usé ML.fun
azúcar sintáctico para la función anónima está vinculadoval
(rec
solo es necesario si la función es recursiva) y, por lo tanto, la formulación "debe tener el prefijo" está mal elegida, editaré la respuesta. En general, el usofun
es la mejor práctica, especialmente en el golf de código, ya que es mucho más corto.Ruby / C
6462 625148 bytesLo que ve Ruby:
El
tap
método toma un bloque y lo ejecuta una vez. Es un identificador corto para el que podemos crear una#define
macro en C. También nos permite poner un bloque entre llaves en el código compartido, aunque Ruby no permite{}
s en la mayoría de los contextos.Los únicos valores falsos en Ruby son
false
ynil
. En particular, 0 es verdadero. Por lo tanto, Ruby imprimirá "truco".Lo que ve C (después del preprocesador):
0 es falso en C, entonces C imprimirá "tratar".
2 bytes guardados gracias a daniero.
fuente
puts
lugar deprintf
guardar dos bytesprintf
en C, que he olvidado que también tiene unaputs
función.tap
? ¿Y por qué no te deshiciste de los espacios?p ? "trick":"treat"
=>p?"trick":"treat"
tap
En realidad tiene dos propósitos. Es un identificador corto para#define
enganchar, pero también me permite poner las llaves directamente en el código Ruby.{}
bloques en Ruby no funcionan como lo hacen en lenguajes C y similares, perotap
lo hace tomar un bloque, y ejecuta una vez.p
.?<character>
es un carácter literal, por lo que se necesita un espacio después de?
.QBasic / JavaScript,
5144 bytesEn QBasic, imprime la segunda línea y no ejecuta la primera línea porque se cree que es un comentario (gracias '). En JS, llama a la función PRINT, que se define en la primera línea, justo después de JS NOP
'';
.fuente
ShapeScript / Foo , 13 bytes
Pruébalo en línea! truco | tratar
Cómo funciona
ShapeScript se analiza carácter por carácter. Cuando se golpea EOF sin encontrar una cita de cierre, nunca se coloca nada en la pila.
'trick'
empuja la cadena dentro de las comillas, que se imprime en STDOUT implícitamente.Foo no tiene ningún comando asignado a los personajes
'trick'
, por lo que esa parte se ignora en silencio. Sin embargo, imprime cualquier cosa entre comillas dobles inmediatamente en STDOUT, incluso si falta la comilla de cierre.fuente
Ruby / Perl, 21 bytes
Perl
Calcula
"trick" % 1
cuál es0 % 1
el||
envíotreat
aprint
, ya que Perl acepta palabras vacías.Rubí
Formatea la cadena
"trick"
con el argumento1
, lo que resulta en"trick"
que es verdadero, por lo||
que no se procesa.fuente
MAT / CJAM , 17 bytes
En MATL esto da salida
TRICK
. En Cjam que da salidaTREAT
.Explicación
MATL
CJam
fuente
Jalea / pl , 12 bytes
Este es el programa que se muestra usando la página de códigos de Jelly .
Pruébalo en línea!
Este es el programa que se muestra usando la página de códigos 437 .
Pruébalo en línea!
Ambos programas han sido probados localmente con el mismo archivo de 12 bytes, por lo que este es un políglota adecuado.
Cómo funciona
En Jelly, cada línea define un enlace (función); la última línea define el enlace principal , que se ejecuta automáticamente cuando se ejecuta el programa. A menos que el código anterior al último
7f
byte (el salto de línea en la página de códigos de Jelly) contenga un error del analizador (que anularía la ejecución inmediatamente), simplemente se ignoran. La última línea,“¡ṾI»
simplemente se indexa en el diccionario de Jelly para buscar el truco de palabras , que se imprime implícitamente al final del programa.No sé mucho sobre pl, pero parece que el intérprete solo busca una línea de código e ignora todo lo que viene después. Como en Perl, las palabras vacías se tratan como cadenas, por lo que
treat
imprime exactamente eso.fuente
Objetivo-C / C, 50 bytes
Objective-C consiguió golosinas y golosinas , pero C no y truco de impresiones .
Cómo funciona
No sé mucho sobre Objective-C , pero hace lo que razonablemente esperaríamos en esta situación. La redefinición de
puts
no afecta la salida ya que nunca llamamos a la función, emain
imprime treat y un salto de línea a STDOUT.Puede esperar que C haga lo mismo, pero al menos gcc 4.8, gcc 5.3 y clang 3.7 no lo hacen.
Como no necesitamos el printf real (que toma una cadena de formato y argumentos adicionales) y la cadena que se va a imprimir termina con un salto de línea, podemos usar put en su lugar. put es ligeramente más rápido que printf (que tiene que analizar sus argumentos antes de imprimir), por lo que, a menos que redefinamos también la función printf , el compilador optimiza y reemplaza la llamada a printf con una llamada a put . ¡Poco sabe el compilador que llamar con argumento imprimirá truco en su lugar!
puts
"treat"
No incluir stdio.h es crucial aquí, ya que definir put requeriría usar el mismo tipo que tiene en el archivo de encabezado (
puts(const char*)
).Finalmente, es digno de mención que la llamada a printf en put pasa una cadena sin un salto de línea final. De lo contrario, el compilador también "optimizaría" esa llamada, lo que provocaría una falla de segmentación.
fuente
Lote / sh, 30 bytes
Explicación. Batch ve la primera línea como una etiqueta, que ignora, y ejecuta la segunda línea, que imprime Trick. El @ suprime el eco predeterminado de Batch del comando a stdout. (Las etiquetas nunca tienen eco). Mientras tanto, sh ve lo siguiente:
La primera línea no hace nada (es un alias de
true
), la segunda línea imprime Treat y la tercera línea sale del script, por lo que nunca se alcanza el truco @echo.fuente
sed / Hexagony 32 bytes
sed
Pruébalo en línea!
La primera línea imprime
trick
si hay una cadena vacía al final de la entrada. (sed no hace nada si no hay entrada, pero en este caso se permite una línea en blanco en stdin)Ejemplo de ejecución:
Hexagonia
Pruébalo en línea!
El primero
/
redirige el puntero de instrucciones hacia arriba y hacia la izquierda, por lo que envuelve la parte inferior izquierda, omitiendo el texto utilizado para sed. Reutiliza el r del código sed y ejecuta algunos otros sin ningún efecto. El hexágono expandido se ve así:Salida:
fuente
A
, aunque podría hacerlo menos feo cambiando todas las letras a mayúscula): hexagony.tryitonline.net/…C # / Java
Esto probablemente no califica, ya que no se ejecuta por sí solo, pero el desafío me ha recordado una peculiaridad sobre cómo C # y Java manejan la comparación de cadenas de manera diferente con la que puede divertirse para ofuscar el código.
La siguiente función es válida en C # y Java, pero devolverá un valor diferente ...
fuente
Brain-Flak / Brain-Flueue, 265253
219 165 139 115 113101 bytesIncluye +1 para
-A
Gracias a Wheat Wizard por ir y venir, jugar unos pocos bytes del código de los demás, conmigo.
Brain-Flak: ¡ Pruébalo en línea!
Brain-Flueue: ¡ Pruébelo en línea!
Explicación:
La primera sección enumera los valores que Brain-Flak ve.
Cuando cambia a Brain-Flueue, comienzo a enumerar los valores como Brain-Flueue los ve.
fuente
PowerShell / Foo, 14 bytes
El
'trick'
en PowerShell crea una cadena y la deja en la tubería. El#
comienza un comentario, por lo que el programa se completa y los implícitosWrite-Output
impresionestrick
.En Foo, (¡Pruébelo en línea!) ,
'trick'
Se ignora, lo que#
hace que el programa se suspenda por0
segundos (ya que no hay nada en el puntero de la matriz), luego"treat
comienza una cadena. Desde que se alcanza EOF, hay un implícito"
para cerrar la cadena, y eso se imprime en stdout.fuente
#
es la función de copia, y solo toma argumentos de izquierda complejos no negativos, no cadenas. El símbolo de comentario esNB.
#
PHP / Perl, 28 bytes
defined&x
da algo verdadero en PHP (no tengo idea de por qué, pero lo hace).
En Perl, comprueba si la función
x
está definida, que no lo está.->
trick
en PHP,treat
en Perl.fuente
CLS
?`
es el verdadero valor de & x o d & x definido, no me preguntes qué d obtienes