Perl, 32 + 32 = 64
Строка ожидается в STDIN. Вывод записывается в STDOUT. Пустое пространство игнорируется. Моя интерпретация задачи заключается в том, что программа должна быть в состоянии работать сама по себе, чтобы получить оценку.
$/ = $,;
$_ = <>;
s x\sxxg;
$\ = length;
print s x[0-9a-z]xxgi,
' + ',
s x.xxg,
' = '
Разгромленный с комментариями
$/ = $,; # 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.
' = '
Я нашел несколько вариантов с одинаковым количеством байтов, например:
$/ = $x;
$_ = <>, s x\sxxg;
$\ = split $x;
print s x[\da-z]xxgi,
" + ",
s x.xxg,
' = '
Примеры
Пример из вопроса:
echo 'http://stackexchange.com' | perl a.pl
20 + 4 = 24
Бег на себя ( a.pl
):
cat a.pl | perl a.pl
32 + 32 = 64
Размер файла составляет 104 байта, поэтому 40 байтов игнорируются как пробелы.
Perl, 29 + 29 = 58
$_=<>;s x\sxxg;$\=length;print s x[0-9a-z]xxgi,' + ',s/.//g,' = '
Строка ожидается в STDIN и ограничена первой строкой. Результат выводится на STDOUT. Пустое пространство игнорируется.
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
' = '
Примеры
Файл a.pl
содержит скрипт Perl.
Пример из вопроса:
echo 'http://stackexchange.com' | perl a.pl
20 + 4 = 24
Бег на себя:
cat a.pl | perl a.pl
29 + 29 = 58
Размер файла a.pl
составляет 65 байтов, поэтому 7 байтов игнорируются как пробелы.
O.
,O?
иO!
затем любая программа , которую я запись соответствует ограничению класса характера ... Конечно , это, вероятно, потеряет от длины бизнеса.