Perl, 32 + 32 = 64
La cadena se espera en STDIN. La salida se escribe en STDOUT. El espacio en blanco se ignora. Mi interpretación de la tarea es que el programa debería poder ejecutarse solo para obtener el puntaje.
$/ = $,;
$_ = <>;
s x\sxxg;
$\ = length;
print s x[0-9a-z]xxgi,
' + ',
s x.xxg,
' = '
Ungolfed con comentarios
$/ = $,; # The input separator becomes undefined, because the default for $, is "undef"
$_ = <>; # now $_ takes the whole file (STDIN) instead of the first line
s x\sxxg; # $_ =~ s/\s//g;
# white space is removed from $_
$\ = length; # The number of the other characters are put into $\,
# which is automatically printed the end of "print".
print s x[0-9a-z]xxgi, # s/[0-9a-z]//gi
# Remove alphanumeric characters and return their count
' + ',
s x.xxg, # s/.//g
# Remove the remaining special characters and return their count.
# "." does not catch new lines, but we have already
# removed white spaces including new lines.
' = '
Encontré varias variaciones con el mismo número de bytes, por ejemplo:
$/ = $x;
$_ = <>, s x\sxxg;
$\ = split $x;
print s x[\da-z]xxgi,
" + ",
s x.xxg,
' = '
Ejemplos
Ejemplo de la pregunta:
echo 'http://stackexchange.com' | perl a.pl
20 + 4 = 24
Corriendo sobre sí mismo ( a.pl
):
cat a.pl | perl a.pl
32 + 32 = 64
El tamaño del archivo es 104 bytes, por lo que 40 bytes se ignoran como espacios en blanco.
Perl, 29 + 29 = 58
$_=<>;s x\sxxg;$\=length;print s x[0-9a-z]xxgi,' + ',s/.//g,' = '
La cadena se espera en STDIN y está limitada a la primera línea. El resultado se imprime en STDOUT. El espacio en blanco se ignora.
Sin golf
$_ = <>;
s x\sxxg; # same as s/\s//gx; removes white space;
$\ = length($_); # sum is automatically appended at the end of print
print sx[0-9a-z]xxgi, # same as s/[0-9a-z]//gi;
# the number of alphanumeric characters
' + ',
s/.//g, # the number of the remaining special characters
' = '
Ejemplos
El archivo a.pl
contiene el script Perl.
Ejemplo de la pregunta:
echo 'http://stackexchange.com' | perl a.pl
20 + 4 = 24
Corriendo sobre sí mismo:
cat a.pl | perl a.pl
29 + 29 = 58
El tamaño del archivo a.pl
es de 65 bytes, por lo tanto, 7 bytes se ignoran como espacios en blanco.
O.
,O?
yO!
a continuación, cualquier programa que cumple con la restricción de escritura clase de caracteres ... Por supuesto, es probable que pierda en el negocio de longitud.