Bueno, a todos les encantan los políglotas . Se le darán dos enteros, en cualquier forma estándar de entrada (sin codificación). Su tarea es escribir un políglota que encuentre el valor mínimo en un idioma y el valor máximo entre los dos números en el otro idioma, y realice las siguientes operaciones:
- El código que encuentra el valor máximo también debe calcular su suma.
- El programa que encuentra el valor mínimo también debe calcular el resultado de su resta (
max - min
) - Esta es la "parte difícil" : Si los dos números son iguales, tanto en los programas no deben de salida / retorno nada (ambos a
STDOUT
ySTDERR
o cualquier otroreturn
método) - Consulte la sección Especificaciones de salida para obtener más detalles sobre el formato.
Entrada
Como se indicó anteriormente, dos enteros se toman como entrada en cualquier método estándar , común a ambos idiomas.
Especificaciones de salida
- Para el programa que encuentra el
max
, el formato debe ser:max_value, addition result
- Para el programa que encuentra el
min
, el formato debe sermin_value, subtraction result (max - min)
- Los resultados se pueden imprimir, con cualquier delimitador clara (
,
\n
,,
o cualquier otra cosa que desee), devuelto por la función como una cadena que contiene los dos valores esperados con un delimitador o como una lista de números (por ejemplo:[max_value,sum]
)
Ejemplos:
Input || Max Language Output || Min Language Output
100, 40 || 100, 140 || 40, 60
63, 67 || 67, 130 || 63, 4
-45, -5 || -5, -50 || -45, 40
21, 21 || ||
-1, 1 || 1, 0 || -1, 2
Puntuación:
Este es el código de golf , por lo tanto, intente escribir el código más corto para obtener los resultados deseados, mientras toma nota de que las lagunas estándar están estrictamente prohibidas. Debe usar dos idiomas diferentes, no otras versiones del mismo idioma (por ejemplo: Python 2
- los Python 3
pares no son válidos)
code-golf
math
arithmetic
polyglot
Sr. Xcoder
fuente
fuente
Respuestas:
05AB1E / Jelly ,
2120 bytes-1 byte después de pedir ayuda, ¡gracias Emigna! (
`
voluntadpush(uwrapped(pop()))
)Bytes sin procesar (el volcado a la derecha muestra lo que muestra mi máquina Windows):
Ambos toman la entrada de STDIN y la salida a STDOUT como una representación de la lista
[x, y]
.El idioma máximo es 05AB1E:
Donde
.
representan los bytes no imprimibles en su página de códigos ( cp1252 ), y probablemente aquí en lo que sea que esté usando (0x18 = CANy 0x04 = EOT).Prueba la versión 05AB1E
El idioma mínimo es Jelly:
Prueba la versión Jelly .
¿Cómo?
05AB1E:
Jalea:
fuente
C y C ++ (gcc),
117107bytes-10 bytes gracias a @Steadybox!
Explicación: En C,
auto c=.5
declara una variable entera con la clase de almacenamiento automático (que es la predeterminada), que luego se inicializa a 0, mientras que en C ++ 11 declara un doble, que se inicializa a 0.5. Entonces el valor de la variable será verdadero en C ++ y falso en C.C - max language: ¡ Pruébelo en línea!
C ++ - lenguaje mínimo: ¡ Pruébelo en línea!
fuente
auto c=.5
y luego usarla enc
lugar desizeof'a'-1
. En C,auto c=.5
declara una variable entera con la clase de almacenamiento automático (que es la predeterminada), que luego se inicializa a 0, mientras que en C ++ 11 declara un doble, que se inicializa a 0.5. Entonces el valor de la variable será verdadero en C ++ y falso en C.Python 3 / Jelly , 42 bytes
Usando la página de códigos de Jelly para codificar el archivo.
Bytes sin procesar:
Ambos definen una función diádica sin nombre.
Python (el lenguaje máximo) ve:
Pruebas como Python .
Jelly (el lenguaje min) ve:
Pruebas como gelatina .
¿Cómo?
Jelly interpreta 0x0a como
½
el átomo de raíz cuadrada, mientras que Python lo interpreta como una nueva línea. En Jelly 0x7f se interpreta como una separación entre enlaces (funciones) y está representado por una nueva línea o un pilcrow en su página de códigos. Para Jelly, el último enlace es la función principal: aquí no llama al enlace anterior (que el intérprete aún necesita analizar correctamente). En Python 0x23,#
indica que todo lo que esté después y antes de 0x0a, una nueva línea, es un comentario.El código de Python que se ejecuta:
El código Jelly que se ejecuta:
fuente
\x7f
y\x04
para los no imprimibles en Python).Ruby / Python 3, 102 bytes
Ruby devuelve máximo / suma, Python devuelve mínimo / diferencia. La entrada es un objeto de matriz leído desde STDIN.
Pruébelo en línea: Ruby
Pruébelo en línea: Python
La peculiaridad principal utilizada aquí es el uso de la verdad
0
en Ruby, que es falsa en Python. La otra cosa que vale la pena mencionar es que lasort
función de Python modifica la lista en el lugar y devuelveNone
, mientras que Ruby no lo hace y devuelve la matriz ordenada, de ahí la necesidad de usarb or a
para obtener el mínimo / máximo.Se requiere Python 3 porque Python 2 se queja si intenta llamar
print
después de laor
declaración en la última línea.fuente
Java / AWK ,
219217212196 bytesPruébalo en línea!
Java genera el máximo y la suma, AWK genera el mínimo y la diferencia. No hay salida para ninguno si las entradas son idénticas.
Este es mi primer políglota y primer TIO :)
fuente
JavaScript (ES6) / QBasic,
172171 bytesBasado en esta solución mía de una pregunta políglota similar .
¡Esta solución también usa el enfoque de comentarios!
JavaScript es el lenguaje min. Toma una matriz que contiene números como entrada. Emite dos números separados por
,
(el primer número es el valor más pequeño de la matriz de entrada y el segundo número es la diferencia de los valores más grande y más pequeño de la matriz de entrada) poralert()
ing. No hacealert()
nada si los números son iguales. Puedes llamar a la función comof([100,40])
.QBasic es el lenguaje máximo. Repetidamente pide información, dos veces. Imprime el número más grande de los números de entrada, así como la suma de los números más grandes y más pequeños de la entrada. No hace
PRINT
nada si los números son iguales.¿Como funciona?
En QBasic (un lenguaje de familia BASIC estructurada; no requiere números de línea),
'
marca el comienzo de un comentario que va hasta el final de la línea. Mientras que en JavaScript, marca el inicio de una cadena. Entonces, toda la primera línea está marcada como un comentario en QBasic pero en JavaScript, la línea se ejecuta (y esta línea contiene la parte de JavaScript que calcula el número más pequeño y la diferencia de los números más grandes y más pequeños, así como un/*
al final que comienza un comentario para ocultar el resto del código QBasic del intérprete de JavaScript).El código de la segunda línea a la última línea contiene el código QBasic para calcular el número mayor y la suma del número mayor y menor (el código se explica por sí mismo).
La última línea contiene
'*/
.'
hace que el intérprete de QBasic interprete el siguiente código como un comentario, mientras que en JavaScript no tiene ningún efecto ya que es parte de un comentario (que se inició al final de la primera línea). El siguiente código (*/
) hace que JavaScript finalice el comentario que se inició en la primera línea, pero no se ejecuta en QBasic porque QBasic cree que es parte de un comentario.Casos de prueba
JavaScript (lenguaje mínimo):
QBasic (max-language):
Ve a este sitio web . Copie y pegue el siguiente código en su editor de texto:
La razón por la cual se requieren números de línea es que el sitio web que mencioné solo admite idiomas BASIC no estructurados. Y ese sitio web es el único intérprete BASIC en línea decente que pude encontrar. Sin embargo, ejecutar el código presente en la parte superior de la publicación (el código sin números de línea) debería funcionar bien en cualquier buen intérprete de QBasic que admita BASIC estructurado y
'
como iniciador de comentarios (aunque pocos no, la mayoría sí)fuente