Problema:
Dado um conjunto de números inteiros, encontre a soma de todos os números inteiros positivos.
Entrada:
- t - número de casos de teste [ t <1000]
- Em cada uma das próximas linhas t , um número inteiro N [-1000 ≤ N ≤ 1000]
Resultado
O programa deve gerar a soma de todos os números inteiros positivos.
Verifique seu código no juiz online
Ponto
A pontuação é igual ao tamanho do código fonte do seu programa, exceto os símbolos com código ASCII ≤ 32.
Aqui está a melhor pontuação: Python Best Scores (Best score is 29)
code-challenge
gmunkhbaatarmn
fonte
fonte
T
(número de ... err ... números (?)) Não é uma opção ... já que os casos de teste envolvem dados extras apósT
números ... seu código falhará no SPOJ. Todos (3 respostas abaixo) pareciam ter pulado o primeiro número inteligente.Respostas:
Espaço em branco, 0
Eu não pude resistir.
S
= espaço,T
= tabulação,N
= nova linha, todos têm códigos ASCII <= 32.Codificado em Base64 para fácil copiar e colar.
fonte
S
na codificação binária de um número. Estas são todas as instruções em push-número-a-pilha do formulárioSSSS...N
, onde o 4ºS
códigos de um supérfluo líder 0. (É claro que isso não tem efeito sobre a pontuação.)Elemento, 17 caracteres mais 1 espaço
Esta é a minha primeira linguagem construída. Ele foi projetado para ser muito compacto e legível por humanos. Todas as instruções têm um caractere e executam uma única função.
O elemento possui duas pilhas e um hash como estruturas de memória. As duas pilhas são chamadas de pilha principal e pilha de controle. A pilha principal é onde ocorre a manipulação aritmética, de E / S e de hash. A pilha de controle é onde as operações lógicas ocorrem, e essa pilha controla o tempo e os loops.
A idéia básica por trás do Element é que existe um hash que armazena números / strings, enquanto a pilha é usada para realizar cálculos nesses números. Os resultados desses cálculos podem ser atribuídos a um determinado local no hash para uso futuro. Os diferentes conteúdos do hash são chamados de elementos, portanto, é semelhante a uma matriz, mas pode ter nomes não numéricos.
EDIT: Você pode encontrar um intérprete para Element (escrito em Perl) aqui .
Aqui está a lista de operadores: Em alguns desses exemplos, m e n representam números já na pilha.
Aqui está uma explicação de como o programa funciona:
fonte
Perl, 31
fonte
say
tornaria isso um pouco mais curto? Seria o melhor personagem com 29 caracteres.say
não é interno e (pelo menos) requer uma opção de linha de comando que contaria para a contagem de caracteres.$\
em vez de$i
:<>;$\+=$_*($_>0)while<>;print
Ruby 1.9.2, 37
Chame como ruby scriptname file_with_ints.
fonte
Ruby, 52
fonte
s
.Haskell, 58
Funciona corretamente apenas em
t
números inteiros. Não joguei contra Spoj porque eu simplesmente não me importo em me registrar lá.fonte
t
números inteiros"?código em caracteres C 89
Eu tentei muito reduzir meu código para menos de 63 bytes, mas posso reduzi-lo apenas para 89 bytes. Por favor, ajude-me a reduzi-lo para 63 bytes ou até menos.
fonte
return 0;
Não é necessário, ofor
ciclo pode ser contratada parafor(scanf(x,&t);t--;scanf(x,&a),a>0?b+=a:a);
== que fazem que 78 caracteres ...error: initializer element is not computable at load time x="%d"
Perl, 33
Embora o espaço seja necessário, parece estranho não contar. Bem, as regras são as regras.
Hmm. Eu provavelmente poderia usar um nome de variável que também não conta para o total. O problema é que não tenho certeza de como colaria o código então.
fonte
Clojure, 71
fonte
*in*
não é umjava.io.BufferedReader
, conforme exigido porline-seq
.Em memória Dennis M. Ritchie
unix
57¹72:assumindo que i é o arquivo, contendo as entradas.
Was) estava errado, incluiu o número de linhas e adicionou 1 linha a menos.
echo $ (($ (cat i | head -n $ (head -n1 i) | grep -v "-" | tr '\ n' '+') 0))fonte
Haskell, 51
(espaços extras para maior clareza, pois não contam)
Haskell é ... interessante, pois você tende a obter programas com um número significativo de espaços necessários.
fonte
filter (>0)
.C, 88
Após outro grande esforço, o código tem um caractere a menos, por favor, ajude-me a reduzi-lo mais.
fonte
return 0;
) e ({}
parafor
)b,x="%d";main(a,t){for(scanf(x,&t);t--&&scanf(x,&a);)b+=(a>0)*a;printf(x,b);}
<- 77 bytesBefunge-98 (24)
(Certifique-se de usar um intérprete que possa ler números negativos (parece ser um bug um tanto comum, mas o RcFunge funciona))
Perl (25)
(O Perl permite caracteres de controle em nomes de variáveis, nomeei minha variável ^ B (ASCII 2) para que não conte para o objetivo.)
(Variante normal (27 caracteres)):
fonte
APL (10)
Explicação:
⍳⎕
: lê uma linha, fornece uma lista [1..N] para a entrada do usuário N¨
: para cada elemento nesta lista ... (ou seja, N vezes)0⌈⎕
: leia uma linha, retorne o máximo de 0 e o N inserido+/
dá a soma desta lista.fonte
Mathematica:
1816fonte
PowerShell, 44
fonte
Q, 12
uso de amostra
fonte
befunge,
3524com um pouco de inspiração ao ver a resposta de marinus, também consegui 24 caracteres. mas eu tenho uma abordagem completamente diferente.
fonte
PYTHON 2.x, 50 caracteres
fonte
C, 70
72caracteresOs resultados no site do SPOJ definitivamente parecem irreais - não tenho idéia de como reduzir isso para 63.
No entanto, 68 caracteres são acessíveis em alguns compiladores, abusando de comportamentos indefinidos. O seguinte funciona no Linux x86 com gcc de 32 bits, no qual todos os argumentos são transmitidos na pilha.
fonte
excel, 27
contar t em A1, restante dos dados a2 e abaixo
fonte
Clojure, 108
Eu realmente gostaria de poder evitar a
java.io.BufferedReader.
peça, uma vez que custa 24 caracteres. Mas o AFAIK não tem a possibilidade de ler linhas do STDIN sem ele.fonte
Perl, 20
Eu sei que é antigo e trivial, mas a resposta Perl ainda pode ser melhorada:
fonte
}{
significa / faz?C ++:
115 caracteres. Precisa otimizá-lo para 90. Alguma sugestão?
fonte
return 0
nomain
. Ao tornar as variáveis globais, você pode descartar a=0
inicialização. Finalmente,for(;;)
é o mesmo número de caractereswhile()
, mas você tem dois lugares extra para colocar uma expressão no.std::
antescin
ecout
e livrar-se dousing namespace std;
pode salvar mais 5 caracteres.PHP, 71
fonte
Python: (92 caracteres)
fonte
a=raw_input
er=range
e usara()
er()
mais tarde podem salvar alguns caracteres.scala
5554:fonte
C
fonte
sum
pode ser reduzido as
, a cadeia de saída pode ser apenas"%d"
, etc.Ruby, 42
(com base na resposta de david4dev)
Melhor pontuação para Ruby no spoj: http://www.spoj.com/ranks/SIZECON/lang=RUBY
fonte
45 caracteres em python
fonte