Reto:
Entrada:
Dos parámetros enteros a
y b
(donde a<b
y la diferencia es al menos 2)
Salida:
Imprima o devuelva este texto, donde a
y b
se completan:
(a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1
[a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1
(a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b
[a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b
Reglas de desafío:
- I / O es flexible. Puede imprimirse en STDOUT, devolverse como una cadena / matriz de caracteres, etc. Puede ingresarse como dos enteros, decimales, cadenas (no estoy seguro de por qué, ya que necesita calcular el
a+1
yb-1
, pero ser mi invitado ...), etc. - Se permite cualquier cantidad de nuevas líneas iniciales y / o finales, y se permite cualquier cantidad de espacios finales y / o iniciales para cada línea.
- Los espacios en los signos iguales (incluidos aquellos para alinearlos en la misma columna) son obligatorios, no se permiten espacios entre los otros caracteres.
a+1
yb-1
se reemplazan con los valores correctos después de estos cálculos.- No está permitido usar en
≤
lugar de<=
. - No está permitido usar en
&
lugar de&&
. - Puede emitir los números con
.0
(siempre que sea coherente y no más de un cero decimal). - Puede suponer que
a
es al menos 2 menor queb
(para(a,b)
ser correcto). - Las líneas deben salir en el orden que se muestra.
Ejemplo:
Entrada: a=-5, b=10
Salida:
(-5,10) = ]-5,10[ = {-5<x<10} = {-5<x&&x<10} = -4..9
[-5,10) = [-5,10[ = {-5<=x<10} = {-5<=x&&x<10} = -5..9
(-5,10] = ]-5,10] = {-5<x<=10} = {-5<x&&x<=10} = -4..10
[-5,10] = [-5,10] = {-5<=x<=10} = {-5<=x&&x<=10} = -5..10
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
PD: Para aquellos que habían visto este desafío en el recinto de seguridad , cuando todavía era un Kolmogorov-complejidad reto con a
y b
no modificable, he cambiado a un desafío de entrada para evitar aburrido respuestas codificadas de forma rígida y codificados como usualmente vemos con KC desafíos.
a=5, b=6
salida fija(5,6) = ... = 6...5
?a
yb
siempre estará al menos 2 separados. Editaré el desafío.Respuestas:
Stax , 74 bytes
Ejecutar y depurarlo
Esto utiliza las plantillas de cadena de stax en gran medida. Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
JavaScript (ES6),
184182181180 bytesToma entrada en la sintaxis de curry
(a)(b)
. Devuelve una matriz de 4 cadenas.Pruébalo en línea!
¿Cómo?
Para cada fila k con 1 ≤ k ≤ 4 , comenzamos con la siguiente plantilla:
y reemplace cada dígito decimal n en la posición i de acuerdo con la siguiente tabla:
fuente
Python 2 ,
225203195 bytesPruébalo en línea!
fuente
Python 2 , 187 bytes
Pruébalo en línea!
fuente
Java (JDK 10) , 251 bytes
Pruébalo en línea!
Créditos
fuente
.replace
.Perl 5 , 181 bytes
Pensé que esto habría funcionado mucho más corto ...
Pruébalo en línea!
Explicación
Originalmente, esto estaba usando una
printf
cadena de formato, pero solo tenías
yd
era más corto cuando se combinaba cons///
.Primero, la cadena de formato está integrada en
$_
y cuadruplicó, a continuación, todos loss
s son reemplazados con el soporte, lo que corresponde<
,<=
o espacios, en función del índice de sustitución. Esperaba guardar algunos bytes más con la duplicación de los últimos 5 caracteres de cada bloque, pero esto solo terminó ahorrando 2 bytes. La cadena resultante se divide en elementos de espacios<=
o caracteres individuales.Finalmente, todos los
d
s se reemplazan con el número deseado que se ajusta según el índice del reemplazo actual a través de una tecla hash.fuente
JavaScript,
190189 bytesPruébalo en línea
fuente
m4 , 194
Parece un trabajo para un procesador macro. No estoy seguro si m4 cumple con nuestros estándares para un lenguaje de programación. Tiene capacidad de bucle y evaluación aritmética, por lo que supongo que está cerca de la marca.
Este es mi primer vistazo no trivial a m4, por lo que sospecho que hay más oportunidades de golf que he perdido.
Las entradas se pasan utilizando
-D
definiciones de macro en la línea de comando. No estoy seguro de si es necesario agregar algo al puntaje para estos, por lo que puedo decir, esta es la única forma de pasar parámetros de manera significativa:Pruébalo en línea .
¡Gracias @Dennis por agregar m4 a TIO tan rápido!
fuente
-D
argumentos, está completamente bien. En mi descripción del desafío, dije que I / O es completamente flexible, por lo que si toma la entrada como STDIN, parámetros de función, argumentos de la línea de comandos del programa, indicadores de compilación, lectura de un archivo o cualquier otro método de entrada que pueda pensar es completamente Depende de usted.Python 2 ,
277199193189 bytesPruébalo en línea!
fuente
2*('{%d<%s<%s%d} %s= '%(a,e*x+'%sx',e[y:],b,i/2*' '))%('','x&&')
->2*('{%d<%s%%sx<%s%d} %s= '%(a,e*x,e[y:],b,i/2*' '))%('','x&&')
salva dos :)Excel, 399 bytes
Nada particularmente interesante aquí.
fuente
C (gcc) , 224
237bytesPruébalo en línea!
Mover el "<[=]" en la cadena de formato me permitió eliminar la matriz por completo. Además, pasar
printf()
a lafor
bucle salvó un punto y coma.Respuesta original
Pruébalo en línea!
Aquí no hay nada particularmente notable: utilicé los trucos habituales para reducir el tamaño de la función (elevar
int
autos al encabezado de la función, usar el estilo K&R, indexar en constantes de cadena). Almacenar el {"<=", "<"} en un La matriz demostró ser más eficiente en tamaño que insertar un especificador de formato para este desafío, ya que se usó más de una vez.fuente
Javascript,
273258232 bytes¡Gracias Kevin Cruijssen por salvarme 15 bytes!
Pruébalo en línea
Gracias por TFeld por darme esa idea, ahorrando alrededor de 60 bytes de mi respuesta original.
Sin golf:
Javascript (respuesta original), 340 bytes
fuente
{a<=x&&\nx<=b}
no debería estar allí, y te estás perdiendo la primera(a,b) =
. En cuanto a algunos juegos de golf: en lugar de alerta, solo puede devolver el resultado.(m)=>
puede serm=>
.(e,f)=>
puede sere=>f=>
. Y se puede utilizarg
directamente en lugar de crear ellet g=
:m=>{return{a:e,b:f,c:e+1,d:f-1}[m]}
. Pruébelo en línea 258 bytes . Y probablemente se pueda jugar más al golf, no soy muy hábil en JS ..(m)->
am->
;(e,f)->
ae->f->
yvar g=new int[]{...}return g[m]
areturn new int[]{...}[m]
. ;) Además, he estado activo en este SO por poco más de dos años, así que he visto que las respuestas de JS también usan este tipo de cosas antes.Retina , 216 bytes
Pruébalo en línea! Explicación:
Acumula la mayor parte del resultado.
Si la variable está involucrada en una desigualdad flexible, entonces el valor es inclusivo, por lo que podemos eliminar el marcador de posición.
Convierta el valor a unario y agregue 2.
Elimine el marcador de posición para una desigualdad inferior estricta o una desigualdad superior estricta negativa. Todavía tiene 2 agregados, pero 1 se restará más tarde, dando el resultado deseado.
Reste 2 de las otras desigualdades estrictas distintas de cero, restaurando el valor original, del cual se restará 1 más adelante.
Cambiar una estricta desigualdad superior de
0
a-1
.Resta 1 de las desigualdades estrictas restantes y convierte a decimal.
Arregle otro caso de borde.
fuente
Python 3, 180 bytes:
explicación
Básicamente construye una cadena f que se evalúa en una comprensión de la lista. La
%
interpolación de cadenas de estilo antiguo se usa para retrasar la evaluación de las expresiones hasta que se evalúe la cadena f.La primera parte de la cadena, 'f "', se convertirá en el prefijo de la cadena f.
La segunda parte de la cadena construye la cadena de formato para las dos primeras expresiones de intervalo.
%r
se utiliza para evitar la necesidad de poner comillas en el formato, es decir,"{%r[j]}"
es lo mismo que"{'%s'[j]}"
. Cuando se evalúa la cadena f, se selecciona el corchete correcto.La tercera parte de la cadena construye las siguientes dos expresiones de intervalo.
La última parte formatea la parte "a..b" de la cadena f.
La cuerda f ensamblada se ve así:
f"{'(['[j]}{a},{b}{')]'[i]} = .... = {a+j}..{b-i}"
Cuando se evalúa la cadena f, todas las expresiones entre llaves
{}
se reemplazan por su valor. Entonces,{a}
se reemplaza por el valor dea
, y{'(['[j]}
se reemplaza por(
si j es 0 o[
si j es 1.fuente
SOGL V0.12 , 110 bytes
Pruébalo aquí!
fuente
Python 3, 248 bytes
Pruébalo en línea!
fuente