Bienvenue dans le premier de ce que je prévois d'être une série de défis JMP réguliers ! Pour la plupart, ces défis se concentreront sur le langage de script JMP (JSL), mais de temps en temps, j'ajouterai quelque chose qui peut être réalisé sans script.
Le premier de chaque mois ou vers cette date, j'espère vous proposer un problème qui mettra à l'épreuve vos capacités JMP. Chaque défi cherchera à mettre l’accent sur certaines compétences en programmation et orientées données telles qu’elles s’appliquent à JMP. J'aimerais encourager tout le monde, quel que soit votre niveau de capacité, à les essayer. Au cours de ma carrière, j'ai appris davantage en essayant de faire ce qui semblait impénétrable, au-delà de mes compétences, en trouvant une solution, puis en apprenant (ou en découvrant) une meilleure façon de faire les choses.
À chaque nouveau message, j'appellerai les plus performants du défi précédent et partagerai leurs solutions ainsi que d'autres solutions intéressantes. Je vais parler de ce qui, à mon avis, a rendu le défi précédent difficile et essayer d'offrir des éléments de sagesse.
Au fil du temps, je garderai une trace des plus performants. Le défi sera ouvert à tous, mais je garderai les inscriptions du personnel séparées du reste. Comme vous vous en doutez, nous avons quelques sonneries chez JMP.
Les règles sont simples :
- Tout doit être fait complètement dans JMP , sans appeler aucune application extérieure à JMP telle que SAS, R ou Python, ni utiliser de sources externes d'informations supplémentaires.
- Un script doit terminer sa tâche dans un délai raisonnable, tel que spécifié dans le défi.
- Il doit fonctionner sur Catalina ou Windows 10.
- Même si je préfère utiliser JMP15 , je suis prêt à envisager de le tester sur JMP 14. Si telle est votre préférence, vous devez me le faire savoir dans votre entrée.
- Publiez vos entrées sur le blog. Je dois recevoir votre inscription finale avant 23 h 59, heure de l'Est, le jour de la date limite. Je ne considérerai qu'une seule inscription par personne.
Des points seront attribués chaque mois aux scripts les plus performants sur la base de critères adaptés au défi. Pendant que le défi se déroule, je modérerai la section des commentaires pour empêcher que des indices, des suggestions, des soumissions, etc., ne soient divulgués par inadvertance. Je vous ferai savoir lorsque je recevrai votre inscription.
Défi JSL 1
J'adore les bons puzzles de mots. Ce défi est inspiré du Spelling Bee du New York Times. Dans celui-ci, vous devez créer des mots à partir d'une liste de sept lettres à condition que l'une des lettres soit toujours utilisée. Les autres lettres peuvent être utilisées une fois, plusieurs fois ou pas du tout. Je modifie les conditions pour rendre les choses un peu plus délicates.
Étant donné sept lettres, trouvez :
- Le mot le plus long utilisant les sept lettres et uniquement ces sept lettres. Les lettres peuvent être utilisées plus d'une fois.
- Le mot le plus long utilisant les sept lettres et toutes les autres lettres.
- Le mot le plus long utilisant les sept lettres et toute autre lettre pour laquelle aucune lettre de l'ensemble de sept n'est utilisée plus d'une fois.
- Le mot le plus long dans lequel apparaissent 5 des 7 lettres. Toute lettre y compris celles en dehors du 7 peut apparaître une ou plusieurs fois à l'exception des deux lettres inutilisées de la liste des 7, qui peuvent ne pas apparaître du tout.
Pour les quatre éléments, il se peut qu’aucun mot ne réponde aux critères ou plusieurs mots. Les scripts doivent accepter une liste de sept chaînes de caractères alphabétiques minuscules (az) qui seront stockées dans une variable globale nommée lettreEnsembleListe . Par exemple, si le premier élément de la liste est « abcdefl », les réponses seraient :
- "dégradable"
- « inconfort »
- "fibrochondrosteal"
- "formaldehydesulfoxylate" et "scientificophilosophical"
Tous les scripts seront testés sur les trois mêmes ensembles de sept lettres. Tous les mots seront tirés du dictionnaire affiché ci-dessous. Veuillez y accéder en tant que table de données JMP lors de l'exécution de votre script. Écrivez tous les mots dans le journal. Assurez-vous d'inclure le numéro d'article avec la sortie. Vous disposerez d'un temps limite de cinq minutes au total. Les inscriptions doivent être reçues avant 23 h 59, heure de l'Est, le mercredi 15 avril.
Notation : Deux points pour chaque bonne solution. Deux points supplémentaires pour résoudre les quatre. Les trois scripts les plus rapides (temps total pour répondre correctement aux quatre éléments) recevront 6, 3 et 1 points. Deux points pour tout script capable de produire la réponse correcte qui est la moitié ou moins de la deuxième plus courte des trois solutions les plus rapides (nombre total de caractères autres que des espaces blancs et commentaires supprimés). Trois points si votre script s'exécute aussi vite ou plus vite que le jeûne soumis par un membre du personnel.
Bonne chance!
Un rappel pour ceux qui envisagent de soumettre un script et qui ne l'ont pas encore fait. Vous avez un peu moins d'une semaine. La date limite est le mercredi 15 avril à 23 h 59, heure de l'Est.
@MathStatChem il est probablement plus sûr de m'envoyer un message privé avec le script. Je modère également le blog, vous pouvez donc même poster ici et je peux m'abstenir d'approuver le message avant le 15.
Comment voulez-vous que nous publiions nos scripts ?Juste comme texte dans un commentaire ici ?
@MathStatChem pour 2. le mot doit contenir les sept lettres au moins une fois. Il peut contenir n'importe quelle autre lettre une ou plusieurs fois.
pour la règle 2, cela devrait-il être "utilisez les sept lettres une fois et d'autres lettres ?", ou simplement que le mot doit contenir les sept lettres.
C'est exact. Toutes les lettres d'un ensemble de sept seront différentes.
une autre question: pour les éléments de lettreEnsembleListe, pouvons-nous supposer qu'il n'y aura pas de lettres en double, c'est-à-dire pas d'entrées comme "aabbcc", mais uniquement des entrées avec une chaîne de lettres qui n'apparaissent qu'une seule fois dans la chaîne.
@MathStatChem , Merci d'avoir posé la question. Dans les deux cas, cela fonctionnerait. La table du dictionnaire sera ouverte dans JMP et sera la table de données actuelle. Si vous utilisez l'approche de référence de fichier, supposez que la table sera enregistrée dans le même répertoire que votre script. Évitez d'utiliser des fonctions de requête utilisateur (comme Pick File() et ouvrez-le directement à partir de son emplacement de chemin.
Lorsque vous dites « Veuillez y accéder en tant que table de données JMP » (la liste de mots), de quelle manière voulez-vous que nous procédions ?
Utiliser la table de données actuelle () ?Ou une référence de fichier/chemin spécifique ?
Beau défi !
Vieille énigme : un mot de 10 lettres qui peut être épelé avec seulement les touches de la rangée supérieure d'une machine à écrire ?