Дана строка несортированных буквенно-цифровых символов, например
ABC321STPpJqZZr0
вывести разделенный на «,» список диапазонов символов, отсортированный по значению ASCII, игнорируя регистр и удаляя дубликаты ( т.е. выводя только заглавные и числовые символы), например
0-3, A-C, J, P-T, Z
правила
- Длина вашей программы, как обычно, равна вашей базовой оценке.
- Вы должны инициализировать (жесткий код) приведенный выше пример в вашей программе, но вы можете исключить длину этого примера из длины вашей программы, например, для
char* s="ABC321STPpJqZZr0";
вас может быть дисконтировано 16 символов, остальные 11 символов учитываются по длине вашей программы.
Бонус (+50 Баунти)
- Поскольку это была настоящая проблема, с которой столкнулся мой коллега сегодня, нуждающийся в написании в Tcl 8.0.5 (древняя версия, в которой отсутствуют многие последние встроенные модули Tcl), я получу 50 баллов каждому, кто напишет самый короткий Tcl 8.0. .5 решение, если в Tcl 8.0.5 есть по крайней мере 2 допустимых представления.
", "
чтобы включить пробел, но мы можем оставить ваши изменения и позволить этому комментарию служить этим указанием.Ответы:
Рубин, 87-16 = 71
РЕДАКТИРОВАТЬ: пришлось добавить несколько символов, чтобы двухсимвольные диапазоны отображались правильно. Также используется
?[
вместо того,?Z
чтобы исправить ошибку с диапазонами, заканчивающимися на Z.Вы можете увидеть запуск Ideone здесь .
источник
gsub(/[]/i)
короче, чемtr(''.upcase)
на 2 символа. Более тогоscan(/.+/)
->split
сохраняет 5, а$><<
неputs
другой.Юлия, 131
Не поддерживается Ideone.com и, вероятно, все равно будет уничтожен.
источник
C #, 221 байт
источник
С, 193
источник
GolfScript
575452Попробуй это здесь .
Код сначала заглавная:
Затем получает уникальные символы и сохраняет их в переменной:
Затем мы получаем символы, чьи прямые предшественники отсутствуют в строке (так что они являются начальной частью диапазона):
Мы также получаем концы диапазонов с
x..{)}%&-
.Теперь фактически формируем диапазоны, объединяя списки, сортируя и разбивая на группы по 2:
Остальное - просто форматирование, используя
*
как строковое соединение.источник
.95>{32-}{}if
->.95>32*-
сохраняет 5 символов.Q, 94
источник
Python 2.x, 304 - 16 = 288
Это, безусловно, может быть дальше, все комментарии приветствуются!
источник
Реболь (218 - 16 = 202)
Не минимизированная версия:
источник
q [116 символов]
использование
ВыходСуществует возможность сохранения символов, я попробую другой метод и опубликую его.
источник
Tcl 8.0,5, 344 (360 байт)
Tcl 8,0,5, 340 (356 байт)
Работа с
rename
командой принесла несколько забавных трюков! Я задокументировал их в другой теме .Tcl 8.0.5, 332 (348 байт) [Нестабильный - зависит от $ PATH]
Кредит @JohannesKuhn для интерактивного трюка .
источник
while
наtime
конструкции. codegolf.stackexchange.com/a/126236/29325