A tarefa é simples: seu programa lê um número inteiro como uma entrada e imprime se é um primo ou não. Você pode imprimir "sim / não", "verdadeiro / falso" ou qualquer outra coisa que identifique o resultado sem ambiguidade.
O desafio é que o código precisa trabalhar com suas linhas e colunas transpostas.
Para excluir a solução óbvia (a solução "simples" mais curta repetida verticalmente por caractere com o uso de comentários), a métrica é um pouco diferente do código-golfe usual:
Como a formatação é muito importante nesse desafio , o tamanho do código é medido na área do menor retângulo no qual o código se encaixa. Em outras palavras, o espaço em branco conta e as linhas devem ser preenchidas com o mesmo comprimento (você não precisa fazê-lo quando você publica a solução, por uma questão de simplicidade). Por exemplo
int main()
{
return 0;
}
teria um tamanho de 4 * 13 = 52 (e, obviamente, não se encaixa em nenhum dos dois critérios: detecção primária e transposição).
Menor tamanho ganha.
Você pode usar qualquer idioma e qualquer função de biblioteca, exceto se o único objetivo dessa função é localizar, gerar ou detectar números primos.
Editar:
Embora o vencedor provavelmente seja a solução Golfscript, concederei uma recompensa de 50 pontos pela melhor solução em C ou C ++!
Respostas:
GolfScript, 13 × 1
GolfScript ataca novamente!
Repete a entrada, se estiver prime, caso contrário, imprime a entrada concatenada com o menor divisor apropriado. Sim, eu sei que isso está ampliando a definição de "qualquer coisa que identifique inequivocamente o resultado", mas fazer algo mais sofisticado custaria alguns caracteres extras. Se você deseja uma saída mais agradável, acrescentar os três caracteres
;]!
ao código resulta1
em números primos e0
números compostos.O algoritmo é realmente ineficiente, apenas a divisão de teste de força bruta de 2 a n- 1. A maioria dos operadores GolfScript são apenas caracteres únicos, portanto esse código funciona da mesma maneira que é transposto. Irritantemente, porém, o operador de atribuição
:
não permite espaços em branco entre ele e seu destino, então eu tive que fazer isso totalmente sem variáveis.fonte
!
? Ou você tinha algo mais sofisticado em mente?)
antes do,
para que ele sempre encontre um divisor e=
no final.:
seguido de nova linha, atribui ao caractere de nova linha - então não é que os espaços em branco não é permitido, é justo que o espaço em branco é o que é atribuído a:
não permite espaço em branco, ou qualquer outra coisa , entre si e seu destino: o que quer que seja imediatamente seguido, seja espaço em branco ou qualquer outro token (sim, números pares, seqüências de caracteres ou blocos de código), é o que é atribuído. No entanto, espaço em branco é o que a documentação oficial especificamente adverte, e por boas razões - já que na maioria dos outros lugares, adicionar espaço em branco entre tokens no GolfScript não faz nada (normalmente, a menos que tenha sido atribuído a ...).C,
2 * 702 * 60Imprime
y
para primos, nada de diferente.EDIT : código alterado para salvar 10 caracteres. Deve ser executado sem parâmetros (então
m=1
).O método para lidar com a transposição é bastante genérico e pode ser aplicado a qualquer programa.
É baseado na conversão disso:
Para isso:
E ambos significam simplesmente
abcd
.fonte
C - 13x13
Lê a entrada de stdin e imprime um
1
para primo e um0
para não primo.edit: compila com gcc e clang agora, outros compiladores não foram testados
fonte
C, 12x12 caracteres
Uma solução bidimensional, diferentemente da minha outra resposta , baseada no mesmo código (e, como ela, imprime
y
para primo, nada para composto).A estrutura é semelhante à resposta de Quasimodo , mas meu código é mais curto, e acho que meu uso de comemnts é um pouco mais eficiente, para que eu possa ajustar 12x12.
fonte
Perl, 14 x 14
Eu acho que estou pegando o jeito disso. Especifique o número como argumento de linha de comando, outputs
0
ou1
. Provavelmente mais espaço para melhorias.fonte
Q
Comentários abusados para uma solução ineficiente de caráter simétrico.
Pega a entrada de STDIN, retorna um booleano.
fonte
sqrt
lá. Ao procurar números primos no código-golfe, geralmente é vantajoso (desperdiçar) dividir até n em vez de parar no sqrt n.Gelatina , quadrado 2x2
Experimente online!
Eu acho que tenho a parte de transposição correta, e se sim, a versão transposta disso é
Experimente online!
(que é o mesmo código)
fonte
05AB1E ,
1x51x3 (53 bytes )Este não é um grande programa; cada linha é um programa alternativo separado para lidar com o cheque principal (sem usar o embutido principal).
-2 bytes graças ao Grimy .
Espaços em branco entre linhas não são ops em 05AB1E e, como eu só uso comandos de 1 byte, isso funciona bem após a transposição.
Saídas
1
/0
para verdade / falsey, respectivamente.Experimente o primeiro online ou verifique mais alguns casos de teste para todos eles (com o eval integrado
.V
) .Transposto: experimente o primeiro online .
Explicação:
NOTA: Se apenas um valor de verdade / falsey for válido e não for necessário precisar ser distinto, poderá
Òg
ouÕα
poderá ser usado como dois bytes válidos, pois apenas1
é verdade em 05AB1E e todo o resto é falsey: tente os dois para alguns casos de teste .Se os componentes internos fossem permitidos, um único
p
seria suficiente: Experimente online ou verifique mais alguns casos de teste .fonte
ÑPQ
ouÒgΘ
ouÒQP
por 3 bytes. (Ñ
eÒ
ambos têm objetivos diferentes de "encontrar, gerar ou detectar números primos", para que não sejam incluídos na proibição, pela minha leitura).ÕαΘ
,fQO
,fs¢
,f`Q
Õα
! Essa é bem legal.Encantos Rúnicos , 7 × 1
Experimente online!
A Runic não se importa com suas fracas tentativas de rearranjo da fonte! Em conformidade com o requisito de continuar funcionando depois de a fonte ter transposto o custo +3 bytes (+2 largura do retângulo) para o modificador de reflexão e o ponto de entrada.
Transposto ou transposto, mas deixando o caractere de combinação anexado ao seu pai .
fonte
dzaima / APL, 8 × 9 = 72
Experimente o original ou transposto !
fonte
Python 3 , tamanho 28 x 28
Experimente online!
fonte
JavaScript (Node.js) ,
2625x5Experimente online!
Transposto:
Experimente online!
fonte
APL (Dyalog Unicode) , 10x11
Experimente online!
Corrigida a função para atender às especificações. Obrigado @ Adám pelo aviso.
Retorna 0 para verdade, 1 para falsidade .
Quão
A versão transposta é exatamente a mesma.
fonte