L'obiettivo di una Rosetta Stone Challenge è scrivere soluzioni in quante più lingue possibili. Mostra il tuo multilinguismo di programmazione!
La sfida
La tua sfida è quella di implementare un programma che mapperà alcuni geni usando frequenze incrociate, nel maggior numero di linguaggi di programmazione possibile . Puoi usare qualsiasi tipo di funzione di libreria standard nella tua lingua, poiché questa è principalmente una vetrina linguistica.
Che cos'è la "mappatura genica?"
La mappatura genica è il processo di localizzazione della posizione relativa dei geni sui cromosomi. Questo viene fatto misurando la frequenza di incrocio tra coppie di geni, pari alla percentuale di progenie in cui quella coppia non è ereditata insieme. La distanza viene misurata in unità cartografiche con un'unità cartografica pari all'uno percento dell'incrocio. Ad esempio, se i geni C e D hanno una frequenza di incrocio dell'11%, allora il gene C è una distanza di 11 unità cartografiche dal gene D.
La mappatura genica viene eseguita con più coppie di geni per determinare il loro ordine relativo. Ad esempio, i dati (A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)
producono la seguente mappa:
A..H.D......B
Potresti aver notato che B......D.H..A
è anche una mappa valida. Questo è vero, perché non è possibile distinguere tra opposti speculari. Il tuo programma può scegliere quale produrre. Sebbene l'input possa non includere tutte le coppie possibili, ci saranno sempre informazioni sufficienti per ricostruire l'intera mappa (quindi non ci saranno mai più di 2 output validi). Inoltre, i numeri funzioneranno sempre (diversamente dalla biologia reale), il che significa che non avrai cose come (A,B,3) (B,C,4) (A,C,13)
.
Ingresso
L'input inizierà con un numero n
seguito da un elenco di geni (lettere maiuscole). Ci saranno quindi n
triplette di dati. Ogni set sarà composto da una coppia di geni e dalla loro frequenza di attraversamento (distanza).
3,P,H,I
P,H,3
H,I,1
P,I,4
7,A,B,G,Q,U
B,Q,4
A,B,10
G,U,13
Q,U,10
A,G,9
G,Q,3
A,Q,6
L'input non è definito rigidamente, perché lingue diverse possono avere restrizioni su ciò che è fattibile. Ad esempio, è possibile modificare i delimitatori in qualcosa di diverso da virgole e newline. La formattazione dell'input dipende in gran parte da te.
Produzione
L'output sarà una rappresentazione della mappa genica. Consisterà in geni (lettere maiuscole) distanziati da punti in modo tale che le distanze siano rappresentate accuratamente. Ecco le uscite per gli esempi sopra.
P..HI *or* IH..P
BG..Q.....A...U *or* U...A.....Q..GB
Anche questo non è un requisito completamente rigido. Ad esempio potresti usare qualcosa di diverso dai punti, come virgole o spazi.
Il criterio vincente dell'obiettivo
Per quanto riguarda un criterio obiettivo vincente, eccolo qui: ogni lingua è una competizione separata su chi può scrivere la voce più breve, ma il vincitore generale sarebbe la persona che vince la maggior parte di queste sotto-competizioni. Ciò significa che una persona che risponde in molte lingue non comuni può ottenere un vantaggio. Il code-golf è principalmente un tiebreak per quando c'è più di una soluzione in una lingua: la persona con il programma più corto ottiene credito per quella lingua.
Regole, restrizioni e note
Il tuo programma può essere scritto in qualsiasi lingua esistente prima del 20 dicembre 2013. Dovrò anche fare affidamento sulla comunità per convalidare alcune risposte scritte in alcune delle lingue più insolite / esoteriche, poiché è improbabile che io sia in grado di testare loro.
Classifica attuale
Questa sezione verrà periodicamente aggiornata per mostrare il numero di lingue e chi guida in ciascuna di esse.
- AutoHotkey (632) - Avi
- dj (579) - rubik
Classifiche utente corrente
- Avi (1): AutoHotkey (632)
- rubik (1): dj (579)
n
, ma soprattutto i limiti per l'attraversamento della frequenza (distanza). Possiamo supporre che sarà sempre, diciamo, inferiore a 1000
?