Es extraño que no haya visto esto, ya que Excel parece ser un lenguaje válido para el golf de código (a pesar de que su "compilador" no es gratuito).
Excel es algo así como un comodín en el golf, es bueno para los desafíos de golf de complejidad media y, a veces, también para los desafíos más simples. La mayoría de las veces, Excel es bueno en los desafíos con la manipulación de cadenas y la manipulación mixta de números de cadena.
¿Qué consejos generales tienes para jugar al golf en Excel? Estoy buscando ideas que se puedan aplicar a los problemas de código de golf en general que sean al menos algo específicos para Excel (NO VBA). Por favor, un consejo por respuesta.
Respuestas:
Taquigrafía de referencia:
Si se requiere que su programa tome múltiples entradas, es posible que pueda recogerlas todas a la vez. para leer varias celdas como una matriz, se podría hacer como en el ejemplo:
Ejemplo:
=len(A1)+Len(B1)+LEN(C1)
podría ser
=SUM(LEN(A1:C1))
=SUM(LEN(A1:C1 A2:C2 A3:C3))
podría ser
=SUM(LEN(A1:C3))
=SUM(LEN(A1:A1024))
podría ser
=SUM(LEN(A:A))
=SUM(LEN(A:A B:B C:C))
podría ser
=SUM(LEN(A:C))
fuente
Taquigrafía concatenada:
La
CONCATENATE
función se puede reemplazar con el&
símbolo el 100% del tiempo, siempre que el primer argumento sea una cadena o celda.ejemplo:
=CONCATENATE(A1,B1)
podría acortarse a
=A1&B1
fuente
Vectorización con matrices
Siempre que una función tome una matriz como argumento en lugar de un singleton, esa función también generará una matriz con el valor del resultado en las indencias correspondientes.
Ejemplo:
=LEN(A1)+LEN(B2)+LEN(C3)
podría ser reemplazado con
=SUM(LEN({A1,B2,C3}))
fuente
Convertir un número a texto:
Este es un consejo muy simple, pero puede ser útil para algunos de todos modos ...
1&23
).A1
), cambie el Formato de número de la celda a Texto para eliminar la necesidad de bytes adicionales.Tabla de referencia rápida:
fuente
Vectorización de matrices de células:
La sugerencia Vectorización con matrices Muestra cómo puede reducir una función con una matriz utilizando un formato específico dentro de la matriz. Es posible hacer lo mismo con las celdas, y le ahorrará muchos bytes a largo plazo. Digamos que tiene la siguiente hoja:
Y queremos encontrar la vida útil más alta de una fruta.
Sin Vectorización, uno podría usar las dos fórmulas así:
Y esto da una respuesta correcta, pero el puntaje para este golf no es convencional, y probablemente no será aceptado tan ampliamente. Además de eso, esto utiliza una función de arrastre hacia abajo (Ew), lo que hace una respuesta confusa.
En cambio, podemos colocar la función en la columna D directamente con la fórmula en E2. Para hacer esto, reemplaza (en este caso B2 y C2) sus variables con matrices para el rango que desea probar. Por lo tanto, su fórmula se convierte en:
Esto le ahorra unos pocos bytes y hace que su entrada se pueda puntuar correctamente.
fuente
Taquigrafía booleana:
En lugar de usar las funciones
=TRUE()
y=FALSE()
, use=1=1
y=1=2
.fuente
ISBLANK () Abreviatura:
En lugar de usar
=ISBLANK(A1)
, use=A1=0
para determinar si una celda (es decirA1
) está vacía.Nota: Este acceso directo no funcionará si la celda
A1
contiene0
. En ese caso, deberá usar=A1=""
.fuente
Acortar nombres de hoja
Si cambia el nombre
Sheet2
a lasS
referencias paraSheet2!a0
convertirseS!a0
.fuente