Benvenuti alla prima di quelle che prevedo diventino una serie di sfide JMP regolari! Per la maggior parte, queste sfide si concentreranno sul JMP Scripting Language (JSL), ma occasionalmente inserirò qualcosa che può essere fatto senza scripting.
Intorno al primo di ogni mese, spero di proporti un problema che metterà alla prova le tue capacità di JMP. Ciascuna sfida cercherà di enfatizzare determinate competenze di programmazione e orientate ai dati applicabili a JMP. Vorrei incoraggiare tutti, indipendentemente dal proprio livello di abilità, a provarli. Durante la mia carriera, ho imparato di più cercando di fare ciò che sembrava impenetrabile, al di là delle mie capacità, trovando una soluzione e poi imparando (o scoprendo) un modo migliore di fare le cose.
Con ogni nuovo post, indicherò i migliori risultati della sfida precedente e condividerò le loro soluzioni insieme ad altre soluzioni interessanti. Parlerò di ciò che penso abbia reso impegnativa la sfida precedente e cercherò di offrire suggerimenti di saggezza.
Col passare del tempo, terrò traccia dei migliori risultati. La sfida sarà aperta a tutti, ma terrò separate le voci dello staff dal resto. Come ci si potrebbe aspettare, abbiamo alcuni nomi in JMP.
Le regole sono semplici:
- Tutto deve essere fatto completamente dentro JMP , senza richiamare alcuna applicazione esterna a JMP come SAS, R o Python, né utilizzare fonti esterne di informazioni supplementari.
- Uno script deve completare il suo compito in un tempo ragionevole, come specificato nella sfida.
- Deve funzionare su Catalina o Windows 10.
- Mentre preferisco usare JMP15 , sono disposto a prendere in considerazione l'idea di testarlo su JMP 14. Se questa è la tua preferenza, devi farcelo sapere nella tua voce.
- Pubblica i tuoi post sul blog. Devo ricevere la tua iscrizione finale entro le 23:59, ora di New York, del giorno della scadenza. Considererò una sola iscrizione per persona.
I punti verranno assegnati ogni mese agli script con le migliori prestazioni in base ai criteri appropriati per la sfida. Mentre la sfida è in corso, modererò la sezione dei commenti per evitare che suggerimenti, indizi, contributi, ecc. vengano inavvertitamente divulgati. Ti farò sapere quando riceverò la tua iscrizione.
Sfida JSL 1
Adoro i buoni puzzle di parole. Questa sfida è ispirata a Spelling Bee del New York Times. In esso, devi creare parole da un elenco di sette lettere a condizione che venga sempre utilizzata una delle lettere. Le altre lettere possono essere utilizzate una volta, più di una volta o per niente. Sto modificando le condizioni per rendere le cose un po' più complicate.
Date sette lettere, trova:
- La parola più lunga che utilizza tutte e sette le lettere e solo quelle sette lettere. Le lettere possono essere utilizzate più di una volta.
- La parola più lunga che utilizza tutte e sette le lettere e qualsiasi altra lettera.
- La parola più lunga che utilizza tutte e sette le lettere e qualsiasi altra lettera in cui nessuna lettera dell'insieme di sette viene utilizzata più di una volta.
- La parola più lunga in cui compaiono 5 delle 7 lettere. Qualsiasi lettera inclusa quella esterna alle 7 può apparire una o più volte tranne le due lettere non utilizzate dall'elenco delle 7, che potrebbero non apparire affatto.
Per tutti e quattro gli elementi, potrebbero non esserci parole che soddisfano i criteri o più parole. Gli script devono accettare un elenco di sette stringhe di caratteri alfabetici minuscoli (az) che verranno archiviate in una variabile globale denominata letterSetList . Ad esempio, se il primo elemento dell'elenco è "abcdefl", le risposte sarebbero:
- "deturpabile"
- "disagio"
- "fibrocondrosteale"
- "formaldeidesolfossilato" e "scientificofilosofico"
Tutti gli script verranno testati sugli stessi tre set di sette lettere. Tutte le parole saranno prese dal dizionario pubblicato di seguito. Accedervi come tabella dati JMP quando viene eseguito lo script. Scrivi tutte le parole nel registro. Assicurati di includere il numero dell'articolo nell'output. Avrai un limite di tempo di cinque minuti totali. Le iscrizioni devono pervenire entro le 23:59, ora di New York, di mercoledì 15 aprile.
Punteggio: Due punti per ogni soluzione corretta. Due punti aggiuntivi per risolverli tutti e quattro. Ai tre script più veloci (tempo totale per rispondere correttamente a tutti e quattro gli elementi) verranno assegnati 6, 3 e 1 punti. Due punti per qualsiasi script in grado di produrre la risposta corretta che sia grande la metà o meno della seconda più breve delle tre soluzioni più veloci (conteggio totale dei caratteri non spazi bianchi e con commenti rimossi). Tre punti se il tuo script viene eseguito più velocemente o più velocemente di quello a digiuno inviato da un membro dello staff.
Buona fortuna!
Un promemoria per coloro che stanno pensando di inviare una sceneggiatura ma non l'hanno fatto. Hai poco meno di una settimana. La scadenza è mercoledì 15 aprile alle 23:59, ora orientale.
@MathStatChem probabilmente è più sicuro mandarmi un messaggio privato con lo script. Sto moderando anche il blog, quindi potresti anche postare qui e posso astenermi dall'approvare il post fino a dopo il 15.
Come vuoi che pubblichiamo i nostri script?Proprio come il testo in un commento qui?
@MathStatChem per 2. la parola deve contenere tutte e sette le lettere almeno una volta. Può contenere qualsiasi altra lettera una o più volte.
per la regola 2 dovrebbe essere "usa tutte e sette le lettere". una volta e qualche altra lettera?", o semplicemente che la parola deve contenere tutte e sette le lettere.
È corretto. Tutte le lettere in una serie di sette saranno diverse.
un'altra domanda: per gli articoli in listaSetLettera, possiamo supporre che non ci siano lettere duplicate, cioè nessuna voce come "aabbcc", ma piuttosto solo voci con una stringa di lettere che ricorre una sola volta nella stringa.
@MathStatChem , grazie per avermelo chiesto. In ogni caso funzionerebbe. La tabella del dizionario verrà aperta in JMP e sarà la tabella dati corrente. Se utilizzi l'approccio di riferimento al file, presumi che la tabella verrà salvata nella stessa directory dello script. Evita di utilizzare qualsiasi funzione di query dell'utente (come Pick File() e aprilo direttamente dalla sua posizione nel percorso.
Quando dici "accedi come tabella dati JMP" (l'elenco di parole), qual è il modo in cui vuoi che lo facciamo?
Utilizzare la tabella dati corrente()?O un riferimento a file/percorso specifico?
Bella sfida!
Vecchio indovinello: parola di 10 lettere che può essere scritta solo con i tasti della riga superiore di una macchina da scrivere?