Problème:
Étant donné un ensemble d'entiers, trouvez la somme de tous les entiers positifs qu'il contient.
Contribution:
- t - nombre de cas de test [ t <1000]
- Sur chacune des t lignes suivantes, un entier N [-1000 ≤ N ≤ 1000]
Production
Le programme doit sortir la somme de tous les entiers positifs.
Vérifiez votre code dans juge en ligne
But
Le score est égal à la taille du code source de votre programme, à l'exception des symboles avec un code ASCII ≤ 32.
Voici la liste des meilleurs scores : Meilleurs scores Python (le meilleur score est 29)
code-challenge
gmunkhbaatarmn
la source
la source
T
(nombre de ... errr ... nombres (?)) N'est pas une option ... puisque les cas de test impliquent des données supplémentaires après lesT
nombres ... votre code échouera au SPOJ. Tout le monde (3 réponses ci-dessous) semblait avoir intelligemment sauté le premier entier.Réponses:
Espace, 0
Je n'ai pas pu résister.
S
= espace,T
= tabulation,N
= nouvelle ligne, tous ont des codes ASCII <= 32.Encodé en Base64 pour un copier-coller facile.
la source
S
dans le codage binaire d'un nombre. Tout cela se trouve dans les instructions push-number-to-stack du formulaireSSSS...N
, où le 4èmeS
code un 0 de tête superflu. (Bien sûr, cela n'a aucun effet sur le score.)Élément, 17 caractères plus 1 espace
Ceci est ma première langue construite. Il est conçu pour être très compact et lisible par l'homme. Toutes les instructions comportent un caractère et remplissent une seule fonction.
L'élément a deux piles et un hachage comme structures de mémoire. Les deux piles sont appelées la pile principale et la pile de contrôle. La pile principale est l'endroit où se produisent l'arithmétique, les E / S et la manipulation de hachage. La pile de contrôle est l'endroit où les opérations logiques se produisent, et cette pile contrôle les boucles while et for.
L'idée de base derrière Element est qu'il existe un hachage qui stocke les nombres / chaînes, tandis que la pile est utilisée pour effectuer des calculs sur ces nombres. Les résultats de ces calculs peuvent ensuite être attribués une certaine place dans le hachage pour une utilisation future. Les différents contenus du hachage sont appelés éléments, il est donc similaire à un tableau mais peut avoir des noms non numériques.
EDIT: Vous pouvez trouver un interprète pour Element (écrit en Perl) ici .
Voici la liste des opérateurs: Dans certains de ces exemples, m et n représentent des nombres déjà sur la pile.
Voici une procédure pas à pas sur le fonctionnement du programme:
la source
Perl, 31
la source
say
ce que l' utilisation ne rendrait pas cela un peu plus court? Ce serait mieux avec les 29 personnages.say
n'est pas intégré et (au moins) nécessite un commutateur de ligne de commande qui compterait pour le nombre de caractères.$\
au lieu de$i
:<>;$\+=$_*($_>0)while<>;print
Rubis 1.9.2, 37
Appelez comme ruby scriptname file_with_ints.
la source
Rubis, 52
la source
s
.Haskell, 58
Fonctionne correctement uniquement sur des
t
nombres entiers. Je ne l'ai pas couru contre Spoj parce que je m'en fous de m'inscrire.la source
t
entiers»?code en C 89 caractères
J'ai beaucoup essayé de réduire mon code à moins de 63 octets, mais je ne peux le réduire qu'à 89 octets. Veuillez m'aider à le réduire à 63 octets ou même moins.
la source
return 0;
n'est pas nécessaire, lefor
cycle peut être contracté àfor(scanf(x,&t);t--;scanf(x,&a),a>0?b+=a:a);
== ce qui fait que 78 caractères ...error: initializer element is not computable at load time x="%d"
Perl, 33
Bien que l'espace soit nécessaire, il semble donc étrange de ne pas le compter. Eh bien, les règles sont les règles.
Hmm. Je pourrais probablement m'en tirer avec un nom de variable qui ne compte pas non plus dans le total. Le truc, c'est que je ne sais pas comment coller le code alors.
la source
Clojure, 71
la source
*in*
n'est pas unjava.io.BufferedReader
, comme requis parline-seq
.In memoriam Dennis M. Ritchie
unix
57¹72:en supposant que i est le fichier contenant les entiers.
¹) était faux, incluait le nombre de lignes et ajoutait 1 ligne de moins.
echo $ (($ (cat i | head -n $ (head -n1 i) | grep -v "-" | tr '\ n' '+') 0))la source
Haskell, 51
(espaces supplémentaires pour plus de clarté, car ils ne comptent pas)
Haskell est ... intéressant, car vous avez tendance à obtenir des programmes avec un nombre important d'espaces nécessaires.
la source
filter (>0)
.C, 88
Après un autre gros effort, le code est un caractère de moins, veuillez m'aider à le réduire davantage.
la source
return 0;
) et ({}
pourfor
)b,x="%d";main(a,t){for(scanf(x,&t);t--&&scanf(x,&a);)b+=(a>0)*a;printf(x,b);}
<- 77 octetsBefunge-98 (24)
(Assurez-vous que vous utilisez un interpréteur capable de lire les nombres négatifs (semble être un bogue quelque peu courant, mais RcFunge fonctionne))
Perl (25)
(Perl autorise les caractères de contrôle dans les noms de variables, j'ai nommé ma variable ^ B (ASCII 2) pour qu'elle ne compte pas dans l'objectif.)
(Variante normale (27 caractères)):
la source
APL (10)
Explication:
⍳⎕
: lire une ligne, donne une liste [1..N] pour l'entrée utilisateur N¨
: pour chaque élément de cette liste ... (ie faire N fois)0⌈⎕
: lire une ligne, retourner le maximum de 0 et le N entré+/
donne la somme de cette liste.la source
Mathematica:
1816la source
PowerShell, 44
la source
Q, 12
exemple d'utilisation
la source
befunge,
3524avec un peu d'inspiration en voyant marinus répondre, j'ai aussi réussi 24 caractères. mais j'ai une approche complètement différente.
la source
PYTHON 2.x, 50 caractères
la source
C, 70
72caractèresLes résultats sur le site SPOJ semblent définitivement irréels - je ne sais pas comment ramener cela à 63.
Cependant, 68 caractères sont accessibles sur certains compilateurs en abusant d'un comportement non défini. Ce qui suit fonctionne sur x86 Linux avec gcc 32 bits, sur lequel tous les arguments sont passés sur la pile.
la source
excel, 27
compter t dans A1, reste des données a2 et plus bas
la source
Clojure, 108
Je souhaite vraiment pouvoir éviter la
java.io.BufferedReader.
partie, car cela coûte 24 caractères lui-même. Mais AFAIK, il n'y a aucune possibilité de lire les lignes de STDIN sans lui.la source
Perl, 20
Je sais que c'est vieux et trivial, mais la réponse Perl peut encore être améliorée:
la source
}{
dire / faire?C ++:
115 caractères de long. Besoin de l'optimiser à 90. Des suggestions?
la source
return 0
dansmain
. En rendant les variables globales, vous pouvez supprimer l'=0
initialisation. Enfin,for(;;)
c'est le même nombre de caractères quewhile()
mais vous avez deux endroits supplémentaires pour mettre une expression.std::
avantcin
etcout
et se débarrasser de lausing namespace std;
peut sauver 5 caractères.PHP, 71
la source
Python: (92 caractères)
la source
a=raw_input
etr=range
et l'utilisation dea()
etr()
plus tard peuvent enregistrer plusieurs caractères.scala
5554:la source
C
la source
sum
peut être réduit às
, la chaîne de sortie peut simplement l'être"%d"
, etc.Rubis, 42
(basé sur la réponse de david4dev)
Meilleur score pour Ruby sur spoj: http://www.spoj.com/ranks/SIZECON/lang=RUBY
la source
45 caractères en python
la source