L'objectif d'un Rosetta Stone Challenge est d'écrire des solutions dans autant de langues que possible. Montrez votre multilinguisme de programmation!
Le défi
Votre défi est de mettre en œuvre un programme qui cartographiera certains gènes en utilisant des fréquences de croisement, dans autant de langages de programmation que possible . Vous êtes autorisé à utiliser n'importe quelle sorte de fonction de bibliothèque standard de votre langue, car il s'agit principalement d'une vitrine de langue.
Qu'est-ce que la «cartographie génétique»?
La cartographie des gènes est le processus de localisation de la position relative des gènes sur les chromosomes. Cela se fait en mesurant la fréquence de croisement de paires de gènes, égale au pourcentage de descendants dans lesquels cette paire n'est pas héritée ensemble. La distance est mesurée en unités de carte avec une unité de carte égale à un pour cent de franchissement. Par exemple, si les gènes C & D ont une fréquence de croisement de 11%, alors le gène C est à une distance de 11 unités de carte du gène D.
La cartographie des gènes est effectuée avec plusieurs paires de gènes pour déterminer leur ordre relatif. Par exemple, les données (A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)
produisent la carte suivante:
A..H.D......B
Vous avez peut-être remarqué qu'il B......D.H..A
s'agit également d'une carte valide. Cela est vrai, car il n'est pas possible de distinguer les opposés miroirs. Votre programme peut choisir lequel produire. Bien que l'entrée ne puisse pas inclure toutes les paires possibles, il y aura toujours suffisamment d'informations pour reconstruire la carte entière (il n'y aura donc jamais plus de 2 sorties valides). De plus, les chiffres fonctionneront toujours (contrairement à la biologie réelle), ce qui signifie que vous n'aurez pas de trucs comme (A,B,3) (B,C,4) (A,C,13)
.
Contribution
L'entrée commencera par un nombre n
suivi d'une liste de gènes (lettres majuscules). Il y aura alors des n
triplets de données. Chaque ensemble consistera en une paire de gènes et leur croisement sur la fréquence (distance).
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'entrée n'est pas définie de manière rigide, car différentes langues peuvent avoir des restrictions sur ce qui est faisable. Par exemple, vous pouvez remplacer les délimiteurs par autre chose que des virgules et des sauts de ligne. Le formatage des entrées dépend en grande partie de vous.
Production
La sortie sera une restitution de la carte des gènes. Il sera composé des gènes (lettres majuscules) espacés par des périodes telles que les distances soient représentées avec précision. Voici les sorties des exemples ci-dessus.
P..HI *or* IH..P
BG..Q.....A...U *or* U...A.....Q..GB
Ce n'est pas non plus une exigence complètement rigide. Par exemple, vous pouvez utiliser autre chose que des points, comme des virgules ou des espaces.
Le critère de gain objectif
En ce qui concerne un critère de gain objectif, le voici: chaque langue est une compétition distincte pour savoir qui peut écrire la plus courte inscription, mais le gagnant général serait la personne qui remporte le plus de ces sous-compétitions. Cela signifie qu'une personne qui répond dans de nombreuses langues rares peut bénéficier d'un avantage. Le code-golf est surtout un bris d'égalité lorsqu'il y a plus d'une solution dans une langue: la personne avec le programme le plus court obtient un crédit pour cette langue.
Règles, restrictions et notes
Votre programme peut être écrit dans n'importe quelle langue qui existait avant le 20 décembre 2013. Je devrai également compter sur la communauté pour valider certaines réponses écrites dans certaines des langues les plus rares / ésotériques, car il est peu probable que je puisse tester leur.
Classement actuel
Cette section sera périodiquement mise à jour pour montrer le nombre de langues et qui mène dans chacune.
- AutoHotkey (632) - Avi
- dj (579) - rubik
Classements des utilisateurs actuels
- Avi (1): AutoHotkey (632)
- rubik (1): dj (579)
n
, mais surtout les limites de la fréquence de passage (distance). Pouvons-nous supposer qu'il sera toujours, disons, inférieur à 1000
?