O objetivo de um Rosetta Stone Challenge é escrever soluções no maior número possível de idiomas. Mostre seu multilinguismo de programação!
O desafio
Seu desafio é implementar um programa que mapeie alguns genes usando frequências cruzadas, no maior número possível de linguagens de programação . Você tem permissão para usar qualquer tipo de função de biblioteca padrão que seu idioma possua, pois essa é principalmente uma demonstração de idioma.
O que é "mapeamento genético?"
O mapeamento gênico é o processo de localização da posição relativa dos genes nos cromossomos. Isso é feito medindo a frequência de cruzamento de pares de genes, igual à porcentagem de filhos em que o par não é herdado juntos. A distância é medida em unidades de mapa com uma unidade de mapa igual a um por cento do cruzamento. Por exemplo, se os genes C & D têm uma frequência de cruzamento de 11%, então o gene C está a uma distância de 11 unidades do mapa do gene D.
O mapeamento genético é realizado com vários pares de genes para determinar sua ordem relativa. Por exemplo, os dados (A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)
produzem o seguinte mapa:
A..H.D......B
Você deve ter notado que B......D.H..A
também é um mapa válido. Isso é verdade, porque não é possível distinguir entre opostos espelhados. Seu programa pode escolher qual deles deve ser produzido. Embora a entrada possa não incluir todos os pares possíveis, sempre haverá informações suficientes para reconstruir o mapa inteiro (portanto, nunca haverá mais de 2 saídas válidas). Além disso, os números sempre dão certo (ao contrário da biologia real), o que significa que você não terá coisas assim (A,B,3) (B,C,4) (A,C,13)
.
Entrada
A entrada começará com um número n
seguido por uma lista de genes (letras maiúsculas). Haverá então n
trigêmeos de dados. Cada conjunto consiste em um par de genes e seu cruzamento sobre a frequência (distância).
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
A entrada não é definida rigidamente, porque idiomas diferentes podem ter restrições sobre o que é viável. Por exemplo, você pode alterar os delimitadores para algo diferente de vírgulas e novas linhas. A formatação de entrada depende muito de você.
Resultado
A saída será uma versão do mapa genético. Ele consistirá nos genes (letras maiúsculas) espaçados por períodos, de modo que as distâncias sejam retratadas com precisão. Aqui estão as saídas para os exemplos acima.
P..HI *or* IH..P
BG..Q.....A...U *or* U...A.....Q..GB
Este também não é um requisito completamente rígido. Por exemplo, você pode usar algo diferente de pontos, como vírgulas ou espaços.
O Critério Vencedor Objetivo
Quanto a um critério de vitória objetivo, aqui está: Cada idioma é uma competição separada sobre quem pode escrever a entrada mais curta, mas o vencedor geral será a pessoa que vencer a maioria dessas subcompetições. Isso significa que uma pessoa que responde em muitos idiomas incomuns pode obter uma vantagem. O código-golfe é principalmente um desempate quando existe mais de uma solução em um idioma: a pessoa com o programa mais curto recebe crédito por esse idioma.
Regras, restrições e notas
Seu programa pode ser escrito em qualquer idioma que existia antes de 20 de dezembro de 2013. Também terei que confiar na comunidade para validar algumas respostas escritas em alguns dos idiomas mais incomuns / esotéricos, pois é improvável que eu possa testar eles.
Classificação atual
Esta seção será atualizada periodicamente para mostrar o número de idiomas e quem lidera em cada um.
- AutoHotkey (632) - Avi
- dj (579) - rubik
Classificação do usuário atual
- Avi (1): AutoHotkey (632)
- rubik (1): dj (579)
fonte
n
, mas principalmente os limites para a travessia sobre a frequência (distância). Podemos assumir que sempre será, digamos, menor que1000
?Respostas:
AutoHotkey (632)
O código pode ser mais encurtado renomeando todos os vars para 1 caractere. Ele deve ter aproximadamente 610 caracteres.
Casos de teste
fonte
Python 311
Meu primeiro código-golfe: D
(Não tenho certeza com a contagem, apenas poste on-line em uma contagem de caracteres)
A idéia do algoritmo é muito ruim, mas é curta. Tente aleatoriamente todas as posições dos símbolos até que elas satisfaçam todas as restrições. A entrada está com espaço em branco, por exemplo
Pressione CTRL + D no console para finalizar a leitura.
Aqui está o código original que ainda usa ',' como delimitador.
fonte
dg -
717579 bytesUm Python está chegando.
Exemplos:
fonte
fonte