Problema:
Dado un conjunto de enteros, encuentre la suma de todos los enteros positivos en él.
Entrada:
- t - número de casos de prueba [ t <1000]
- En cada una de las siguientes líneas t , un número entero N [-1000 ≤ N ≤ 1000]
Salida
El programa debería generar la suma de todos los enteros positivos.
Revise su código en juez en línea
Puntuación
La puntuación es igual al tamaño del código fuente de su programa, excepto los símbolos con código ASCII ≤ 32.
Aquí está la mejor lista de puntajes: Python Best Scores (Best score is 29)
code-challenge
gmunkhbaatarmn
fuente
fuente
T
(número de ... errr ... números (?)) No es una opción ... ya que los casos de prueba involucran datos adicionales después de losT
números ... su código fallará en SPOJ. Todos (3 respuestas a continuación) parecían haber omitido hábilmente el primer entero.Respuestas:
Espacio en blanco, 0
No pude resistirme.
S
= espacio,T
= tabulación,N
= nueva línea, todos tienen códigos ASCII <= 32.Base64 codificada para copiar y pegar fácilmente.
fuente
S
en la codificación binaria de un número. Estas son todas las instrucciones en push-número-de la pila de la formaSSSS...N
, donde el 4ºS
códigos superflua 0 inicial (Por supuesto esto no tiene ningún efecto sobre la puntuación.)Elemento, 17 caracteres más 1 espacio
Este es mi primer lenguaje construido. Está diseñado para ser muy compacto y legible para los humanos. Todas las instrucciones son de un solo carácter y realizan una sola función.
Element tiene dos pilas y un hash como estructuras de memoria. Las dos pilas se denominan pila principal y pila de control. La pila principal es donde se produce la aritmética, E / S y manipulación de hash. La pila de control es donde ocurren las operaciones lógicas, y esta pila controla los bucles while y for.
La idea básica detrás de Element es que hay un hash que almacena números / cadenas, mientras que la pila se usa para realizar cálculos sobre estos números. Los resultados de estos cálculos se pueden asignar a un lugar determinado en el hash para uso futuro. Los diferentes contenidos del hash se denominan elementos, por lo que es similar a una matriz pero puede tener nombres no numéricos.
EDITAR: Puede encontrar un intérprete para Element (escrito en Perl) aquí .
Aquí está la lista de operadores: en algunos de estos ejemplos, myn representan números que ya están en la pila.
Aquí hay un tutorial sobre cómo funciona el programa:
fuente
Perl, 31
fuente
say
hacer esto un poco más corto? Se vincularía con los 29 personajes mejor.say
no está integrado y (al menos) requiere un cambio de línea de comando que contaría para el recuento de caracteres.$\
lugar de$i
:<>;$\+=$_*($_>0)while<>;print
Ruby 1.9.2, 37
Llame como ruby scriptname file_with_ints.
fuente
Ruby, 52
fuente
s
.Haskell, 58
Funciona correctamente solo con
t
enteros. No lo he enfrentado a Spoj porque no me importa registrarme allí.fuente
t
enteros"?código en caracteres C 89
Intenté mucho reducir mi código a menos de 63 bytes, pero solo puedo reducirlo a 89 bytes. Ayúdame a reducirlo a 63 bytes o incluso menos.
fuente
return 0;
no es necesario, elfor
ciclo se puede contraer afor(scanf(x,&t);t--;scanf(x,&a),a>0?b+=a:a);
==, lo que hace que 78 caracteres ...error: initializer element is not computable at load time x="%d"
Perl, 33
Aunque el espacio es necesario, parece extraño no contarlo. Oh bueno, las reglas son las reglas.
Hmm Probablemente podría salirse con la suya usando un nombre de variable que tampoco cuenta para el total. La cuestión es que no estoy seguro de cómo pegaría el código entonces.
fuente
Clojure, 71
fuente
*in*
no es unjava.io.BufferedReader
, como lo requiereline-seq
.In memoriam Dennis M. Ritchie
unix
57¹72:suponiendo que i es el archivo que contiene los ints.
¹) estaba equivocado, incluyó el número de líneas y agregó 1 línea demasiado menos.
echo $ (($ (cat i | head -n $ (head -n1 i) | grep -v "-" | tr '\ n' '+') 0))fuente
Haskell, 51
(espacios adicionales para mayor claridad, ya que no cuentan)
Haskell es ... interesante, ya que tiendes a obtener programas con un número significativo de espacios necesarios.
fuente
filter (>0)
.C, 88
Después de otro gran esfuerzo, el código es un carácter menos, por favor ayúdame a reducirlo más.
fuente
return 0;
) y ({}
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)
(Asegúrese de usar un intérprete que pueda leer números negativos (parece ser un error algo común, pero RcFunge funciona))
Perl (25)
(Perl permite caracteres de control en los nombres de las variables, puse el nombre de mi variable ^ B (ASCII 2) para que no cuente para el objetivo).
(Variante normal (27 caracteres)):
fuente
APL (10)
Explicación:
⍳⎕
: lee una línea, da una lista [1..N] para la entrada del usuario N¨
: para cada elemento de esta lista ... (es decir, hacer N veces)0⌈⎕
: lee una línea, devuelve el máximo de 0 y el N introducido+/
da la suma de esta lista.fuente
Mathematica:
1816fuente
PowerShell, 44
fuente
Q, 12
uso de muestra
fuente
befunge,
3524con un poco de inspiración al ver la respuesta de marinus, también he logrado 24 personajes. Pero tengo un enfoque completamente diferente.
fuente
PYTHON 2.x, 50 caracteres
fuente
C, 70
72caracteresLos resultados en el sitio de SPOJ definitivamente parecen irreales, no tengo idea de cómo reducir esto a 63.
Sin embargo, 68 compiladores son accesibles en algunos compiladores al abusar del comportamiento indefinido. Lo siguiente funciona en Linux x86 con gcc de 32 bits, en el que todos los argumentos se pasan en la pila.
fuente
excel, 27
cuenta t en A1, resto de datos a2 y hacia abajo
fuente
Clojure, 108
Realmente desearía poder evitar la
java.io.BufferedReader.
parte, ya que cuesta 24 caracteres en sí. Pero AFAIK no hay facilidad para leer líneas de STDIN sin él.fuente
Perl, 20
Sé que es antiguo y trivial, pero la respuesta de Perl todavía se puede mejorar:
fuente
}{
significa / hacer?C ++:
115 caracteres de largo. Necesita optimizarlo a 90. ¿Alguna sugerencia?
fuente
return 0
enmain
. Al hacer que las variables sean globales, puede descartar la=0
inicialización. Finalmente,for(;;)
es el mismo número de caracteres que,while()
pero obtienes dos lugares adicionales para poner una expresión.std::
antescin
ycout
deshacerse de élusing namespace std;
puede salvar 5 caracteres más.PHP, 71
fuente
Python: (92 caracteres)
fuente
a=raw_input
yr=range
y usara()
yr()
más tarde puede guardar bastantes caracteres.Scala
5554:fuente
C
fuente
sum
puede reducirse as
, la cadena de salida puede ser"%d"
, etc.Rubí, 42
(basado en la respuesta de david4dev)
Mejor puntaje para Ruby en spoj: http://www.spoj.com/ranks/SIZECON/lang=RUBY
fuente
45 caracteres en python
fuente