Perl, 32 + 32 = 64
Die Zeichenfolge wird in STDIN erwartet. Die Ausgabe wird nach STDOUT geschrieben. Leerzeichen werden ignoriert. Meine Interpretation der Aufgabe ist, dass das Programm in der Lage sein sollte, auf sich selbst zu laufen, um die Punktzahl zu erhalten.
$/ = $,;
$_ = <>;
s x\sxxg;
$\ = length;
print s x[0-9a-z]xxgi,
' + ',
s x.xxg,
' = '
Ungolfed mit Kommentaren
$/ = $,; # 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.
' = '
Ich habe mehrere Variationen mit der gleichen Anzahl von Bytes gefunden, zB:
$/ = $x;
$_ = <>, s x\sxxg;
$\ = split $x;
print s x[\da-z]xxgi,
" + ",
s x.xxg,
' = '
Beispiele
Beispiel aus der Frage:
echo 'http://stackexchange.com' | perl a.pl
20 + 4 = 24
Laufen auf sich selbst ( a.pl
):
cat a.pl | perl a.pl
32 + 32 = 64
Die Dateigröße beträgt 104 Bytes, daher werden 40 Bytes als Leerzeichen ignoriert.
Perl, 29 + 29 = 58
$_=<>;s x\sxxg;$\=length;print s x[0-9a-z]xxgi,' + ',s/.//g,' = '
Der String wird bei STDIN erwartet und ist auf die erste Zeile beschränkt. Das Ergebnis wird nach STDOUT gedruckt. Leerzeichen werden ignoriert.
Ungolfed
$_ = <>;
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
' = '
Beispiele
Datei a.pl
enthält das Perl-Skript.
Beispiel aus der Frage:
echo 'http://stackexchange.com' | perl a.pl
20 + 4 = 24
Laufen auf sich selbst:
cat a.pl | perl a.pl
29 + 29 = 58
Die Dateigröße a.pl
beträgt 65 Bytes, daher werden 7 Bytes als Leerzeichen ignoriert.
O.
,O?
undO!
dann irgendein Programm , das ich schreiben erfüllt die Zeichenklasse Einschränkung ... Natürlich ist es wahrscheinlich auf die Länge Geschäft zu verlieren.