O objetivo de um desafio de pedra de roseta é escrever soluções no maior número possível de idiomas. Mostre seu multilinguismo de programação!
Nesse desafio, você criará um programa que gerará mensagens de spam, com base em um texto inicial de entrada. Por exemplo, dada a entrada
[Thank you/Wow/Great], this [blog/post/writing] [gives/provides/delivers] [great/excellent/wonderful/superior] [content/information/data]. You [may/could] [find/get/retrieve] [similar/related] [content/information/data] at spammysite.com.
Uma possível saída pode ser
Thank you, this writing delivers excellent data. You may find similar content at spammysite.com.
(ideia de https://security.stackexchange.com/q/37436/29804 )
Mas há um problema! Você também terá que produzir um programa em um idioma diferente . Este programa, quando executado, também emitirá o texto spam e um programa em um idioma diferente, o qual também emitirá o texto spam e um programa em um idioma diferente ...
Sua pontuação será character count / (number of languages ^ 2)
.
Por exemplo, eu poderia ter um programa Ruby. Ele pegaria a entrada de texto inicial como entrada e produziria o texto aleatório de spam e um programa Python.
Ao executar este programa Python (sem entrada), ele produziria outro texto aleatório de spam e um programa Perl.
Ao executar este programa Perl (sem entrada), ele produziria outro texto aleatório de spam.
Neste exemplo, minha pontuação seria a duração do programa Ruby original dividido por 9 (eu tenho 3 idiomas e 3 ^ 2 é 9).
Outras coisas diversas:
- Você deve usar pelo menos 2 linguagens de programação diferentes.
- Por favor, liste cada programa que é produzido. Dessa forma, se alguém não tiver todos os idiomas, ainda poderá ver suas fontes. Você pode usar este breve texto de exemplo:,
[Please/Kindly] [visit/see] my [site/blog].
ou apenas um espaço reservado (como{insert text here}
). - Você pode assumir que não haverá caracteres não alfanuméricos, exceto
[]/.,
para simplificar algumas coisas. - Versões diferentes de idiomas não contam como idiomas diferentes (por exemplo, Python 2 == Python 3).
- Ele deve ser totalmente aleatório, ou seja, não previsível e gerando uma combinação diferente a cada execução. Ele também deve ser capaz de gerar todas as combinações em uma quantidade arbitrária de execuções.
- Como se trata de código-golfe e pedra-de-roseta , a menor pontuação geral (
charcount / (langs ^ 2)
) vencerá.
fonte
Respostas:
PHP 5.5 -> Ruby 2.0 -> Python 2.7 -> Lua -> C # -> Java -> PdfTeX -> GolfScript 855/8 ^ 2 = 13.359375
As principais idéias foram:
Portanto, o código inicial é:
Onde
BINARY_DATA
está a versão gzcompressed do gerador de modelos (por exemplo, o resultado do código php, que é a versão ruby)O código inicial completo em base64 (deve ter 855 bytes após a decodificação):
Vamos analisar todos os idiomas com a sequência de entrada de teste
[Thank you/Wow/Great], this is [awesome/wonderful].
PHP
Rubi
Pitão
Lua
C #
Java
PdfTeX
(o código estará dentro de a.pdf em vez de stdout. Espero que isso ainda esteja correto)
Resultado:
Em texto:
Golfscript
Notas
Parece que o PHP perdoa bastante os dados binários em literais de string, exceto os códigos hexadecimais AF e 96. Não pergunte o porquê.
Eu provavelmente poderia ter adicionado códigos perl e C ++ 11 com muita facilidade (já que ambos suportam literais de strings brutos), mas 8 é um número mais redondo que 10 :)
A distribuição de valores não é uniforme, pois o primeiro elemento vem mais frequentemente do que os posteriores. De acordo com os comentários, isso deve estar bem.
O código inicial foi realmente gerado usando o seguinte código PHP 5.5.
orig.rb
é realmente o mesmo que o código Ruby sem o rodapé (__END__
e os dados anexados posteriormente)generator.php
:(você pode potencialmente usar esse código para zLib incluir soluções PHP para outros desafios)
fonte
print()
chamada espúria simplesmente colocando outra nova linha depois[==[
Ruby 1.9 -> Perl 5 -> Python 2, 227/9 = 25.22222 ...
Saída para
[Please/Kindly] [visit/see] my [site/blog].
:O programa Perl (minha primeira vez! :-P) produz:
O programa Python produz:
fonte