Vamos tentar de novo.
O objetivo deste concurso é criar dois pedaços de código que sejam anagramas um do outro (os dois devem conter os mesmos bytes em uma ordem diferente) e executarão as seguintes tarefas:
É preciso testar se um número digitado é feliz ou primo e gerar saída se o número for (por exemplo,
7
deve gerarhappy prime
e4
produzirsad non-prime
).O outro deve produzir seu tamanho de código em bytes como uma palavra (um programa de 60 bytes seria produzido
sixty
, um programa de 39 bytesthirty-nine
).
Se for necessário algum esclarecimento sobre as regras, não hesite em me dizer.
Esta é uma competição de golfe com código, e o programa mais curto vence!
code-golf
math
primes
source-layout
Josiah Winslow
fonte
fonte
/*program1*/program2
e depoisprogram1/*program2*/
? Eu acho que você deve proibir comentários.Respostas:
CJam,
804948 caracteresUPDATE : Inspirado na implementação de Dennis para calcular a soma dos quadrados dos dígitos, aqui está uma versão mais curta
Feliz / Triste Prime / Não Prime:
Como funciona:
quarenta e oito
Como isso funciona:
Experimente online
O primeiro programa lê o número de STDIN
Minha solução original de 80 caracteres
Feliz / Triste Prime / Não Prime:
oitenta
fonte
CJam,
5049 bytesTeste de felicidade e primalidade
Lê um número de STDIN. Ambos os testes funcionam apenas para números inteiros de 64 bits.
Experimente online.
Comprimento próprio
Imprime para os nove e nove .
fonte
Golfscript - 81
Este programa testa se um número é feliz e / ou primo.
Este programa, um anagrama do último, gera "oitenta e um" (seu tamanho de bytes como uma palavra).
Isso deve servir como um exemplo.
fonte
J - 87 char
Uma tentativa ingênua disso em J. Nenhum uso da biblioteca padrão, embora eu duvide que seria mais curto usando isso.
A linha no topo é um verbo pegando um número inteiro e diagnosticando sua felicidade e primalidade como uma sequência de saída. A segunda linha é uma expressão retornando a string
eighty-seven
, enquanto a terceira é uma função constante fazendo o mesmo. Incluí os dois porque ambos são possíveis e porque não sei qual será a decisão sobre as respostas das funções em oposição às respostas dos programas, e J não possui funções sem argumentos - você apenas atribui uma função a argumento fictício.Perdemos a maioria dos caracteres procurando por felicidade.
(,[:+/@:*:,.&.":@{:)
é o corpo principal que soma os quadrados dos dígitos de um número e(1-{:e.}:)
é o teste para determinar se esse número já ocorreu.sad`happy{~1 e.
transforma isso em um resultado de palavra e o anexamos à frente da stringnon-prime
, potencialmente cortando quatro caracteres se o número era realmente primo.No anagrama, apenas escondemos todos os bits que não estão
'eighty-seven'
em uma string que ignoramos. Eu poderia fazer melhor se J tivesse mais cartas para reutilizar, mas não, então tudo bem.fonte