¡Bienvenido al primero de lo que planeo ser una serie de desafíos regulares de JMP! En su mayor parte, estos desafíos se centrarán en el lenguaje de secuencias de comandos JMP (JSL), pero ocasionalmente, introduciré algo que se pueda hacer sin secuencias de comandos.
El primero de cada mes o alrededor de esa fecha, espero ofrecerle un problema que pondrá a prueba sus habilidades con JMP. Cada desafío buscará enfatizar ciertas habilidades de programación y orientadas a datos que se aplican a JMP. Me gustaría animar a todos, independientemente de su nivel de habilidad, a que los prueben. Durante mi carrera, aprendí más al tratar de hacer lo que parecía impenetrable, más allá de mis habilidades, encontrar una solución y luego aprender (o descubrir) una mejor manera de hacer las cosas.
Con cada nueva publicación, destacaré a los mejores participantes del desafío anterior y compartiré sus soluciones junto con otras soluciones interesantes. Hablaré sobre lo que creo que hizo que el desafío anterior fuera desafiante y trataré de ofrecer algo de sabiduría.
A medida que pase el tiempo, haré un seguimiento de los mejores. El desafío estará abierto a todos, pero mantendré las entradas del personal separadas del resto. Como era de esperar, tenemos algunos timbres en JMP.
Las reglas son simples:
- Todo debe hacerse completamente en JMP , sin invocar ninguna aplicación fuera de JMP como SAS, R o Python, ni utilizar fuentes externas de información complementaria.
- Un script debe completar su tarea en un tiempo razonable, como se especifica en el desafío.
- Debe ejecutarse en Catalina o Windows 10.
- Aunque prefiero usar JMP 15 , Estoy dispuesto a considerar probarlo en JMP 14. Si esta es tu preferencia, debes hacérmelo saber en tu entrada.
- Publica tus entradas en el blog. Debo recibir su inscripción final antes de las 11:59 p. m., hora del este, del día de la fecha límite. Consideraré solo una entrada por persona.
Se otorgarán puntos cada mes a los guiones con mejor rendimiento según los criterios apropiados para el desafío. Mientras se desarrolla el desafío, moderaré la sección de comentarios para evitar que salgan inadvertidamente sugerencias, pistas, envíos, etc. Te avisaré cuando reciba tu entrada.
Desafío JSL 1
Me encantan los buenos crucigramas. Este desafío está inspirado en el Spelling Bee del New York Times. En él deberás crear palabras a partir de una lista de siete letras con la condición de que siempre se utilice una de las letras. Las otras letras se pueden usar una vez, más de una vez o ninguna. Estoy modificando las condiciones para hacer las cosas un poco más complicadas.
Dadas siete letras, encuentre:
- La palabra más larga que usa las siete letras y solo esas siete letras. Las letras se pueden utilizar más de una vez.
- La palabra más larga que utiliza las siete letras y cualquier otra letra.
- La palabra más larga que utiliza las siete letras y cualquier otra letra en la que ninguna letra del conjunto de siete se utilice más de una vez.
- La palabra más larga en la que aparecen 5 de las 7 letras. Cualquier letra, incluidas las fuera del 7, puede aparecer una o más veces, excepto las dos letras no utilizadas de la lista de 7, que pueden no aparecer en absoluto.
Para los cuatro elementos, es posible que no haya palabras que cumplan con los criterios o que haya varias palabras. Los scripts deben aceptar una lista de siete cadenas de caracteres alfabéticos (az) en minúsculas que se almacenarán en una variable global denominada letraSetList . Por ejemplo, si el primer elemento de la lista es "abcdefl", las respuestas serían:
- "desfigurable"
- "incomodidad"
- "fibrocondrosteal"
- "formaldehídosulfoxilato" y "scientificphilosophical"
Todos los guiones se probarán en los mismos tres conjuntos de siete letras. Todas las palabras se tomarán del diccionario publicado a continuación. Acceda a él como una tabla de datos JMP cuando se ejecute su script. Escriba todas las palabras en el registro. Asegúrese de incluir el número de artículo en el resultado. Tendrás un límite de tiempo de cinco minutos en total. Las inscripciones deben recibirse antes de las 11:59 p. m., hora del este, del miércoles 15 de abril.
Puntuación: Dos puntos por cada solución correcta. Dos puntos adicionales por resolver los cuatro. Los tres guiones más rápidos (tiempo total para responder correctamente los cuatro ítems) recibirán 6, 3 y 1 punto. Dos puntos por cualquier script que pueda producir la respuesta correcta que sea la mitad del tamaño o menos de la segunda más corta de las tres soluciones más rápidas (recuento total de caracteres que no son espacios en blanco y sin comentarios). Tres puntos si su guión se ejecuta tan rápido o más rápido que el enviado en ayunas por un miembro del personal.
¡Buena suerte!
Un recordatorio para aquellos que estén considerando enviar un guión y aún no lo hayan hecho. Tienes poco menos de una semana. La fecha límite es el miércoles 15 de abril a las 11:59 p. m., hora del Este.
@MathStatChem Probablemente sea más seguro enviarme un mensaje privado con el guión. También estoy moderando el blog, por lo que incluso podrías publicar aquí y yo puedo abstenerme de aprobar la publicación hasta después del día 15.
¿Cómo quieres que publiquemos nuestros guiones?¿Solo como texto en un comentario aquí?
@MathStatChem para 2. la palabra debe contener las siete letras al menos una vez. Puede contener cualquier otra letra una o más veces.
para la regla 2 debería ser "usa las siete letras una vez ¿Y alguna otra letra?", o simplemente que la palabra debe contener las siete letras.
Eso es correcto. Todas las letras en un conjunto de siete serán diferentes.
Otra pregunta: para los artículos en lista de conjuntos de letras, ¿Podemos suponer que no habrá letras duplicadas, es decir, no habrá entradas como "aabbcc", sino sólo entradas con una cadena de letras que aparecen sólo una vez en la cadena?
@MathStatChem , gracias por preguntar. De cualquier manera funcionaría. La tabla del diccionario se abrirá en JMP y será la tabla de datos actual. Si utiliza el método de referencia de archivos, asuma que la tabla se guardará en el mismo directorio que su secuencia de comandos. Evite el uso de funciones de consulta del usuario (como Seleccionar archivo() y ábralo directamente desde su ubicación de ruta.
Cuando dice "acceda a ella como una tabla de datos JMP" (la lista de palabras), ¿cuál es la forma en que desea que hagamos esto?
¿Usar la tabla de datos actual ()?¿O una referencia de archivo/ruta específica?
¡Buen desafío!
Viejo acertijo: ¿palabra de 10 letras que se puede deletrear solo con las teclas de la fila superior de una máquina de escribir?