Écrivez un programme qui obtient une chaîne comme entrée et compte le nombre de caractères alphanumériques et non alphanumériques qu'il contient. Il doit afficher son résultat comme ceci:
entrée: http://stackexchange.com
sortie:20 + 4 = 24
Le hic, c'est que votre code source doit avoir le même nombre de caractères alphanumériques que les caractères non alphanumériques. Les commentaires ne sont pas autorisés, les espaces sont ignorés. (La langue appelée Whitespace pourrait concourir pour les votes, mais ne sera pas sélectionnée comme gagnante, évidemment)
Les caractères du code doivent avoir au moins une justification mineure, ils ne doivent pas être complètement superflus. Par exemple, des noms de variables plus longs sont autorisés, i = (j*3)+4;
au lieu de i = j*3+4;
est également autorisé. Mais ce i = i + 1;;;;;;
n'est pas le cas.
En plus de cela, les règles de code-golf standard s'appliquent.
O.
,O?
etO!
puis tout programme I écriture répond à la restriction de classe de caractères ... Bien sûr , il est de perdre probablement sur l'activité de longueur.Réponses:
Perl, 32 + 32 = 64
La chaîne est attendue dans STDIN. La sortie est écrite dans STDOUT. L'espace blanc est ignoré. Mon interprétation de la tâche est que le programme devrait pouvoir s'exécuter sur lui-même pour obtenir le score.
Non golfé avec des commentaires
J'ai trouvé plusieurs variantes avec le même nombre d'octets, par exemple:
Exemples
Exemple de la question:
Fonctionnant sur lui-même (
a.pl
):La taille du fichier est de 104 octets, donc 40 octets sont ignorés comme espace blanc.
Perl, 29 + 29 = 58
La chaîne est attendue à STDIN et elle est limitée à la première ligne. Le résultat est imprimé sur STDOUT. L'espace blanc est ignoré.
Non golfé
Exemples
Le fichier
a.pl
contient le script Perl.Exemple de la question:
Fonctionnant sur lui-même:
La taille du fichier
a.pl
est de 65 octets, donc 7 octets sont ignorés comme espace blanc.la source
C - 96 (48 + 48) caractères
C'est un peu lisible. Il y a cependant place à amélioration.
la source
Bash + coreutils, 72 (36 + 36) caractères non blancs
Production:
Réponse précédente:
Pure Bash, 92 (46 + 46) caractères non blancs
Production:
la source
PowerShell (43 + 43 = 86)
Golfé
Non golfé
Tester
Test avec le code lui-même pour passer les critères
"
a été échappé avec `qui ne fait pas partie de la chaîne.la source
GolfScript, 74 caractères (= 37 + 37)
Test en ligne du code avec le code en entrée.
la source
Rubis 38 + 38 = 76
Ce programme compte le retour à la ligne dans l'entrée.
Le décompte des caractères est effectué par le programme lui-même:
$ ruby alphabalance.rb alphabalance.rb
:)la source
Powershell, 70 octets (= 35 + 35)
Script de test:
Production:
Powershell, 70 octets (= 35 + 35), alternative
la source
Python 2 (60 + 60 = 120)
Difficile, il y a probablement place à amélioration. Comme le fait que la fonction elle-même peut être utilisée pour évaluer son propre équilibre alphnumérique.
Tester:
la source
repr
.C ++, 146 (73 + 73)
178 (89 + 89) caractèresnon blancs #Original inclus
<algorithm>
sans raison valable. Oups.Je ne compte que les caractères dans les lignes après
//Code itself starts here
. En particulier, cela signifie ne pas compter#include <string>
. Je compte également les trigraphes comme trois caractères chacun, ce qui est peut-être discutable. Notez que lors du test du programme sur son propre code source, un certain soin est requis pour empêcher le remplacement du trigraphe dans le littéral de chaîne.Il y a des décisions de conception particulières ici - dans la plupart des codes de production, vous ne rencontrerez pas de trigraphes et de boucles basées sur la plage pour la même fonction - mais je pense que tout est dans les limites de `` justifiable ''.
la source
python 52 +52 = 104
Défi intéressant car python évite les caractères non alphanumériques.
Justification mineure de l'utilisation de la tranche: elle accélère (peut-être?)
la source
print
ne nécessite pas de parenthèses, et utilisez la'%d + %d = %d' % (a,l-a,l)
méthode. Cela devrait sauver quelques caractères.Julia, 64 ans
Tous les seuls caractères non alphanumériques inutiles sont les derniers
;
et certains()
dans la mise en forme des chaînes., Il est sorti presque parfaitement équilibré, et en tant que puissance de 2 sans trop jouer.la source
perl, 64 caractères non blancs:
Clarifié légèrement via perl -MO = Deparse et quelques commentaires:
L'ORS, $ \ est ajouté automatiquement à chaque appel à imprimer, en mettant le nombre total à la fin.
la source
Python 2, 50 + 50 = 100
Exécutez-le ici: http://repl.it/8CH
la source
Rebol (64 + 64 = 128)
Exemple d'utilisation (dans la console Rebol):
NB. Le programme ignore les espaces, les tabulations et les nouvelles lignes des décomptes.
la source
J - 46 + 46 = 92
Compte les espaces blancs, vous ne pouvez donc pas effectuer d'autotest sans modification. Prend une entrée sur stdin. A une mauvaise bouche, devrait aller le laver avec du savon.
Usage:
la source
Javascript - 76 (38 + 38)
Exemple d'entrée:
http://stackexchange.com
Sortie:
20 + 4 = 24
Courir sur soi:
PS Pour ceux soucieux
(o + $)
de maintenir l'équilibre alphanumérique, ce n'est pas le cas. Parce qu'après avoir vuo + " + "
JS, tout serait décidé+
comme étant des concaténateurs de chaînes plutôt que des additionneurs de nombres. Ainsi, les parenthèses sont nécessaires, ou20 + 4
deviendraient204
plutôt que24
: DCodage heureux!
la source
Clojure: (31 + 31 = 62) caractères non blancs
Production:
la source
CJam, 27 + 27 = 54
CJam est quelques mois plus récent que ce défi, donc cette réponse n'est pas éligible pour la coche verte. C'était quand même un exercice amusant!
Il prend la chaîne d'entrée comme argument de ligne de commande, il ne fonctionnera donc pas dans l'interpréteur en ligne, mais vous pouvez le tester avec l' interpréteur Java .
Explication
la source