Consejos para jugar golf en ///


12

¿Qué consejos generales tienes para jugar al golf en /// ? Estoy buscando ideas que puedan aplicarse a problemas de código de golf y que también sean al menos algo específicas para /// (por ejemplo, "eliminar espacios en blanco innecesarios" no es una respuesta). Los consejos para itflabtijtslwi y Lines son sobre el tema y válidos aquí también.

Por favor, publique un consejo por respuesta.

Respuestas:


5

Usar //como reemplazo

Cuando define un montón de reemplazos, por ejemplo:

/a/b//c/d//e/f//g/h//i/j//k/l//m/n//o/p//q/r//s/t//u/v//w/x//y/z/

(65 bytes). Puede usar //como reemplazo:

/~/\/\///a/b~c/d~e/f~g/h~i/j~k/l~m/n~o/p~q/r~s/t~u/v~w/x~y/z/

(61 bytes).


4

Los bloques /// incompletos no se imprimen

Tenga en cuenta que esta línea de código

/Stack/Overflow//x/\//Stack/ignore/DoItyignore

solo imprime Overflow: la parte en /ignoreadelante no se incluye en la salida, porque ///solo imprime cosas en su tercera parte de barra diagonal.

¡Prueba el bloque incompleto en línea!

Sin embargo, el sustituto todavía lo considera: si inyectamos una barra allí, las cosas cambian:

/Stack/Overflow//x/\//Stack/ignore/doitxignore

Prueba eso en línea!

La salida aquí es Overflowdoit, porque reemplazar xcon /sintaxis hizo válida.


4

Cuando se expande sobre una base e imprime resultados intermedios, incorpore iteraciones previas en futuras

Eso sonaba un poco complicado. Lo que quiero decir podría describirse mejor usando una respuesta real. Este desafío requiere esta salida específica:

Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.

Una solución ingenua podría ser:

/1/Steve Ballmer still does not know//2/ what he did//3/ wrong//4/ with mobile./1.
12.
123.
1234

Aviso cómo el patrón 1, 12, 123... se repite? Bueno, no cuando haces esto:

/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong//4/3 with mobile/1.
2.
3.
4.

Una vez más, ¡gracias a Martin Ender por señalar esto!


2

Use un carácter al final del código para manejar casos extremos

Cuando tiene un ///código que maneja todos los casos menos uno, puede usar un carácter en el borde del código para manejar el caso de borde.

Ejemplo: Unario agrega dos números juntos a menos que el segundo número sea 7, en cuyo caso solo da salida al primer número.

Código que maneja todos menos el caso "segundo número es 7":

/+//<INPUT 1>+<INPUT 2>

Al agregar un *al final del código, podemos manejar el caso de borde reemplazando +0000000*con nada (es necesario incluir el +para asegurarse de que el número no sea mayor que 7). Asegúrese de incluir el código al final antes de la entrada para limpiarlo.

/+0000000*///+///*//<INPUT 1>+<INPUT 2>*

Pruébalo en línea!

Para un ejemplo del "mundo real", utilicé este truco en algunos de los problemas de "Jimmy":

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.