Напишите программу, которая получает строку в качестве входных данных и считает количество буквенно-цифровых и не буквенно-цифровых символов в ней. Он должен отображать свой результат так:
вход: http://stackexchange.com
выход:20 + 4 = 24
Уловка в том, что ваш исходный код должен иметь такое же количество буквенно-цифровых символов, что и не буквенно-цифровые символы. Комментарии не допускаются, пробелы игнорируются. (Язык под названием « Пробел» может конкурировать за голоса, но, очевидно, не будет выбран победителем)
Символы в коде должны иметь , по крайней мере , некоторые незначительные обоснования, они не должны быть полностью излишними. Например, допускаются более длинные имена переменных, i = (j*3)+4;
а i = j*3+4;
не также. Однако i = i + 1;;;;;;
это не так.
Кроме того, применяются стандартные правила игры в гольф.
O.
,O?
иO!
затем любая программа , которую я запись соответствует ограничению класса характера ... Конечно , это, вероятно, потеряет от длины бизнеса.Ответы:
Perl, 32 + 32 = 64
Строка ожидается в STDIN. Вывод записывается в STDOUT. Пустое пространство игнорируется. Моя интерпретация задачи заключается в том, что программа должна быть в состоянии работать сама по себе, чтобы получить оценку.
Разгромленный с комментариями
Я нашел несколько вариантов с одинаковым количеством байтов, например:
Примеры
Пример из вопроса:
Бег на себя (
a.pl
):Размер файла составляет 104 байта, поэтому 40 байтов игнорируются как пробелы.
Perl, 29 + 29 = 58
Строка ожидается в STDIN и ограничена первой строкой. Результат выводится на STDOUT. Пустое пространство игнорируется.
Ungolfed
Примеры
Файл
a.pl
содержит скрипт Perl.Пример из вопроса:
Бег на себя:
Размер файла
a.pl
составляет 65 байтов, поэтому 7 байтов игнорируются как пробелы.источник
C - 96 (48 + 48) символов
Это несколько читабельно. Хотя есть место для улучшения.
источник
Bash + coreutils, 72 (36 + 36) непробельных символа
Выход:
Предыдущий ответ:
Pure Bash, 92 (46 + 46) непробельных символа
Выход:
источник
PowerShell (43 + 43 = 86)
Golfed
Un-golfed
Тестовое задание
Тестирование с использованием самого кода для соответствия критериям
"
был экранирован символом `, который не является частью строки.источник
GolfScript, 74 символа (= 37 + 37)
Онлайн тест для кода с кодом в качестве ввода.
источник
Рубин 38 + 38 = 76
Эта программа считает конечный перевод строки во входных данных.
Подсчет символов осуществляется самой программой:
$ ruby alphabalance.rb alphabalance.rb
:)источник
Powershell, 70 байт (= 35 + 35)
Тестовый скрипт:
Выход:
Powershell, 70 байт (= 35 + 35), альтернатива
источник
Python 2 (60 + 60 = 120)
Трудный вопрос, возможно, есть место для улучшения. Как и тот факт, что сама функция может быть использована для оценки своего собственного буквенно-цифрового баланса.
Тестовое задание:
источник
repr
.С ++, 146 (73 + 73)
178 (89 + 89)непробельных символов #Оригинал включен
<algorithm>
без уважительной причины. К сожалению.Я считаю только символы в строках после
//Code itself starts here
. В частности это означает не считать#include <string>
. Я также рассчитываю триграфы как три символа в каждом, которые, возможно , спорны. Обратите внимание, что при тестировании программы на собственном исходном коде необходимо соблюдать осторожность, чтобы не допустить замены триграфа в строковом литерале.Здесь есть несколько своеобразных дизайнерских решений - в большинстве производственного кода вы не встретите триграфы и циклы на основе диапазона в одной и той же функции - но я думаю, что все в пределах «оправданного».
источник
питон 52 +52 = 104
Интересный вызов, потому что python избегает буквенно-цифровых символов.
Незначительное обоснование использования ломтика: это ускоряет его (возможно?)
источник
print
как не требует скобок, и используйте'%d + %d = %d' % (a,l-a,l)
метод. Это должно сохранить некоторые символы.Юлия, 64
Все единственные ненужные не алфавитно-цифровые символы - последние
;
и некоторые из них()
в форматировании строки. Он получился почти идеально сбалансированным и как степень 2 без особых сложностей.источник
perl, 64 непробельных символа:
Уточнено немного через perl -MO = Deparse и некоторые комментарии:
ORS, $ \ добавляется автоматически при каждом вызове на печать, в конце ставится общее количество.
источник
Python 2, 50 + 50 = 100
Запустите его здесь: http://repl.it/8CH
источник
Реболь (64 + 64 = 128)
Пример использования (в консоли Rebol):
NB. Программа игнорирует пробелы, символы табуляции и переносы строк.
источник
J - 46 + 46 = 92
Считает пробелы, поэтому вы не можете выполнить самопроверку без изменений. Принимает вход на стандартный ввод. Плохой рот, должен пойти вымыть его с мылом.
Использование:
источник
Javascript - 76 (38 + 38)
Пример ввода:
http://stackexchange.com
вывод:
20 + 4 = 24
Бег на себя:
PS Для тех, кто заинтересован в
(o + $)
том, чтобы сохранить буквенно-цифровой баланс, это не так. Потому что после просмотраo + " + "
JS решит, что все+
будут конкатенациями строк, а не сумматорами чисел. Таким образом, скобки необходимы или20 + 4
стали бы204
а не24
: DУдачного кодирования!
источник
Clojure: (31 + 31 = 62) непробельные символы
Выход:
источник
CJam, 27 + 27 = 54
CJam на пару месяцев новее этой задачи, поэтому этот ответ не имеет права на зеленую галочку. В любом случае, это было забавное упражнение!
Он принимает входную строку в качестве аргумента командной строки, поэтому он не будет работать в онлайн-интерпретаторе, но вы можете проверить его с помощью интерпретатора Java .
объяснение
источник