50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
||||||
1 | ||||||
Минимизация кода 226.02.2020, 05:40. Показов 3202. Ответов 18
Метки нет (Все метки)
Всем привет!
Как-то на днях появилась задача посчитать число строк в файлах. Такие задачи всегда хочется решить однострочным, простым, или хитроумным, но обязательно коротким скриптом. В идеале, настолько коротким, чтобы его можно было бегло воспроизвести (побарабанив по клавиатуре ...там 5 секунд). Коротко не получилось. Решил я её так: count.pl
Вот, скажем так, предлагаю конкурс, на решение этой задачи минимальным числом символов включая пробелы )) главное чтобы программа возвращала общее число строк, всё остальное - дело вкуса.
0
|
26.02.2020, 05:40 | |
Ответы с готовыми решениями:
18
Минимизация кода Минимизация кода Минимизация HTML кода Форматизация и минимизация кода |
50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
|
26.02.2020, 09:51 [ТС] | 3 |
задачи бывают разные, сегодня надо подсчитать число строк, завтра концевые пробелы удалить или найти что-нибудь по всем файлам.
Может быть есть решения лаконичнее. Может быть не мне одному это интересно.
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
|
26.02.2020, 10:50 | 5 |
в состав дистрибутива входит утилита find2perl, которая генерит рыбу для пользования Find::File;
обычно ей и пользуюсь для всяких разных случаев.
2
|
50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
|
26.02.2020, 11:21 [ТС] | 6 |
volodin661,
Когда с модулем разбирался вчера, проверял, в дистрибе Strawberry-perl, который я в основном использую под виндой, такой утилиты нет. надо будет скачать. спасибо!
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
|
26.02.2020, 11:58 | 7 |
Оказывается, выбросили. Вотжежсуки. Последняя версия, где она есть, это 5.20.
С другой стороны, не сильно и нужна.
0
|
2 / 2 / 0
Регистрация: 26.02.2020
Сообщений: 1
|
||||||
26.02.2020, 14:20 | 8 | |||||
2
|
50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
|||||||||||
27.02.2020, 08:00 [ТС] | 9 | ||||||||||
Namue,
ну да, буквально Global RegExp and Print и нужно а вот в перле тоже есть функция греп и она позволяет слегка сократить запись мой вариант, если с отступами для удобочитаемости - 129 символов 129.pl
если ещё слегка "обфусцировать" 106.pl
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
||||||
27.02.2020, 08:08 | 10 | |||||
'Полегче насчет гусиных шкварок, — сказал больной «раком желудка»' ( Гашек. Похождения бравого солдата Швейка )
0
|
50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
|
27.02.2020, 08:25 [ТС] | 11 |
volodin661,
)) grep в скалярном контексте вернёт число строк, прочитанных из F, в которых имеется хоть один не пробельный символ. Полностью рабочий вариант, use strict; use warnings; без проблем. Разве что F предопределена?
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
||||||
27.02.2020, 08:42 | 12 | |||||
да. мне модификато g привиделся.
Добавлено через 4 минуты
Если не делать явный close(F), то счетчик строк $. не сбрасывается.
1
|
50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
|
27.02.2020, 11:05 [ТС] | 13 |
за счёт пробелов скрипт ужимается до 88 символов.
PS не знал про эту фишку с "'$." спасибо )
0
|
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
|
|||||||||||||||||||||
02.03.2020, 15:26 | 14 | ||||||||||||||||||||
вариант volodin661:
мой вариант:
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
||||||
02.03.2020, 19:22 | 15 | |||||
0
|
50 / 35 / 9
Регистрация: 13.06.2019
Сообщений: 204
|
||||||
04.03.2020, 06:48 [ТС] | 16 | |||||
volodin661,
под никс корректно отрабатывает; под виндой - считает правильно, но выдаёт предупреждения
по длине )) если считать только код то 48 символов но если считать всё что нужно набрать в командной строке, то 70 в любом случае отличный пример - как перл всё делает за вас ))
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
|
04.03.2020, 10:41 | 17 |
под Windows не проверял.
нехорошо получилось. придётся вставлять в начало -f||return
0
|
0 / 0 / 0
Регистрация: 27.07.2020
Сообщений: 2
|
|
04.03.2021, 14:03 | 18 |
print 0+grep(/\S/,<>)
Запуск: perl <script_name> <file_name> 21 символ
0
|
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,860
|
|||||||||||
04.03.2021, 15:32 | 19 | ||||||||||
не помню, что и зачем мы считали, но конкретно здесь можно сэкономить ещё пяток буковок:
Добавлено через 4 минуты Если посчитать все строки без учёта пустые они или нет, то:
0
|
04.03.2021, 15:32 | |
04.03.2021, 15:32 | |
Помогаю со студенческими работами здесь
19
Минимизация кода для однотипных операций Минимизация кода при выводе данных в таблицу Напишите фрагмент кода для определения кода нажатой клавиши (расширенного кода в том числе) Минимизация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |