O objetivo do Rosetta Stone Challenge é escrever soluções no maior número possível de idiomas. Mostre seu multilinguismo de programação!
O desafio
Nós fizemos a codificação run-length ser tona mas apenas considerado corridas de um único personagem. Obviamente, às vezes podemos economizar ainda mais se considerarmos a execução de vários caracteres.
Tome aaaxyzxyzxyzdddd
por exemplo. Isso pode ser compactado para 3a3{xyz}4d
. Sua tarefa é escrever um programa de função que, dada uma sequência de letras e espaços com distinção entre maiúsculas e minúsculas, o comprima de maneira otimizada usando a codificação de comprimento de execução para execuções com vários caracteres.
Você pode receber informações por meio do argumento da função, STDIN ou ARGV e retornar o resultado ou imprimi-lo em STDOUT.
Execuções não devem ser aninhadas, portanto , nãoaaabbbaaabbb
devem . Ou seja, a string deve ser codificada (ou decodificada) em uma única passagem.3a3b3a3b
2{3a3b}
Consequências da compressão ideal
Alguns exemplos em que a aplicação ingênua da codificação de duração da execução pode levar a resultados abaixo do ideal:
abab
não deve ser "compactado" para2{ab}
aaaabcdeabcde
não deve ser compactado,4abcdeabcde
mas em3a2{abcde}
vez disso.
Se houver duas versões ótimas (por exemplo, aa
e 2a
ou abcabc
e 2{abc}
), qualquer resultado será bom.
Exemplos
Input Output
aa aa -or- 2a
aaaaaAAAAA 5a5A
ababa ababa
abababa a3{ba} -or- 3{ab}a
foo foo bar 2{foo }bar
aaaabcdeabcde 3a2{abcde}
xYzxYz xYzxYz -or- 2{xYz}
abcabcdefcdef abcab2{cdef}
pppqqqpppqqq 3p3q3p3q
pppqqqpppqqqpppqqq 3{pppqqq}
Pontuação
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 vários idiomas incomuns pode obter uma vantagem. O código de golfe é principalmente um desempate para quando há mais de uma solução em um idioma: a pessoa com o programa mais curto recebe crédito por esse idioma.
Se houver empate, o vencedor será a pessoa com o maior número de finalizações em segundo lugar (e assim por diante).
Regras, restrições e notas
Mantenha todos os seus diferentes envios contidos em uma única resposta.
Além disso, não há travessuras com basicamente a mesma resposta em dialetos de idiomas ligeiramente diferentes. Eu serei o juiz sobre quais submissões são diferentes o suficiente.
Classificação atual
Esta seção será atualizada periodicamente para mostrar o número de idiomas e quem lidera em cada um.
- C # (265) - edc65
- JavaScript (206) - edc65
- Python (214) - Vontade
- VB.NET (346) - edc65
Classificação do usuário atual
- edc65 (3)
- Will (1)
fonte
Python 214
(recuo do segundo nível é tab)
Como esse é o código-golfe , essa é a abordagem recursiva ingênua sem saída antecipada, portanto é realmente muito lenta.
fonte