Когда закончил решать задачу на CodeForces public class Printer { public static String printerErr / it-юмор :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek 
Когда закончил решать задачу на CodeForces
public class Printer {
public static String printerError(String controlstring) { int badCharCounter = 0;
StringBuilder builder = new StringBuilderQ; for (int i = 0; i < controlstring.lengthO; i++) { if ((int) controlstring.charAt(i) >= no) {
Подробнее
Когда закончил решать задачу на CodeForces public class Printer { public static String printerError(String controlstring) { int badCharCounter = 0; StringBuilder builder = new StringBuilderQ; for (int i = 0; i < controlstring.lengthO; i++) { if ((int) controlstring.charAt(i) >= no) { badCharCounter++; > > builder.append(badCharCounter).append("/").append(controlstring.length()); return new String(builder); > > Как ее решили другие public class Printer { public static String printerError(String s) { return s.replaceAll("[a-B]“, "").length() + "/“ + s.lengthO; >
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор
Еще на тему
Развернуть
Чёт мне кажется у кода чукть разные задачи и результат будет разный, плюс во 2 варианте проц больше жрёт.
vassav vassav 01.02.202012:38 ответить ссылка 2.5
Плюс первый вариант гораздо лучше читается
fibberad fibberad 01.02.202012:43 ответить ссылка -1.5
Долго читал первый вариант и в конце думал, что понял суть. Прочитал второй вариант за 10 секунд и сразу всё понял.
Пришлось перечитать первый код, чтобы убедиться, что с первого раза всё понял не правильно. (facepalm). Ну и да, >=110 и [a-m] не одно и то же, однако мы не знаем условия, чтобы говорить кто прав.
Имхо, писать надо коротко, но не сжато.
У меня критерии другие, наверное) я когда читаю код, сразу представляю, как ко мне придут менеджеры и скажут "у нас там есть счётчик плохих символов, вот надо его вот так-то поправить/изменить", и в первом коде контекст задачи описан словами, а во втором нет.
Не знаю этого языка. Все равно понял что делает второй вариант. Это что то да говорит о читаемости
Правда не понятно, зачем создавать StringBuilder на 2 строке, а первое использование на 7.
Первый вариант - ебаное убожество, так писать вообще нельзя.
Hellsy Hellsy 01.02.202014:16 ответить ссылка -2.0
Вроде бы задача одна и та же. Просто в первом случае считаются только те символы, которые в таблице utf после m идут, а во втором он посчитает и заглавные буквы, и цифры, и операторы.
b-cycle b-cycle 01.02.202013:02 ответить ссылка -0.9
1
2_____
►
■ 'l
ft a *
fun String .printexEnnonC) : String = "${count ■{ it ! in 'a'.
C:\Program ...
abcdefghijklmnopqrstuvwxyzQ123456789 23/36
Process finished with exit code Q
.'m' }}/$length"
au3w3e5et au3w3e5et 01.02.202013:14 ответить ссылка -0.2
Ну. Это спортивная алгоритмизация. Очень хорошо развивает мозги. Мало чего общего имеет с программированием реальных проектов.

За редким исключением во всех таких соревнованиях оценивается то, как быстро ты смог придумать и закодировать безошибочное решение. Что влечет за собой достаточно экстравагантные практики написания кода. Рабочий код нужен как можно скорее, а когда закончится контест и его разборы, никто и никогда больше не будет читать, вносить расширения, правки и фиксы в этот код.

Перейдя на реальные проекты люди со спортивным прошлым, годами приходят в чувство. Некоторые, особенно те, что параллельно со спортивной деятельностью никогда не писали собственных маленьких проектиков, в чувство не приходят никогда. И навечно остаются "подающими надежды", лучшее место работы для которых - готовить эти самые спортивные соревнования.
WiWind WiWind 01.02.202013:15 ответить ссылка 4.2
Уже на собеседовании спортивные программисты цирк устраивают, ища "подсказки" и "заковырки" в типовых задачах уровня fizzbuzz. Пособеседовав таких, внезапно понял почему военных летчиков в гражданскую авиацию берут неохотно, даже при дефиците пилотов.
А почему это как-то связано? Не вижу аналогии.
профдеформация
Axil Axil 01.02.202014:12 ответить ссылка 1.1
Банзаят часто и пытаются управлять боингами как истрибителями?
Часто выходят на предельный угол атаки
Я тогда тоже не брал бы много таких.
Что именно ты называешь спортивной алгоритмизацией (1 или 2 вариант)?
Просто я вижу тут (хоть сам из 1 группы, студент раздолбай) банальное незнание метода replaceAll...
Blekzet Blekzet 01.02.202013:56 ответить ссылка -0.5
replaceAll - это и есть спортивная алгоритмизация.
Axil Axil 01.02.202014:14 ответить ссылка 0.7
спасибо
CodeForces - известная площадка для проведения спортивных соревнований.

На реальных проектах МОГУТ БЫТЬ СЛУЧАИ (например если мы глобально стараемся не создавать лишнюю нагрузку на GC), когда первый способ решения будет предпочтительней. Особенно, в случае если builder можно использовать повторно, а результат можно будет вернуть в более вменяймой форме чем строка.
Если не считать того, что он, вероятно, неправильно реализован. для случая когда в строке есимволы меньше 'a' .

В данном случае, задача совсем для новичков и не столь важно как её решать. но ДЛЯ ЗАДАЧ СЛОЖНЕЕ ЧЕМ ЭТА, при прочих равных, часто написание чуть более длинного, но более понятного кода, предпочтительней изощренных однострочных придумок (например заковыристых регексов). Если ты написал код, который никто кроме тебя не понимает, это не ты самый умный. А как раз даже наоборот.
WiWind WiWind 01.02.202015:39 ответить ссылка 1.2
о как, спасибо большое
А теперь смотрим длину функции replaceAll и сравниваем с первым решением
Trowy Trowy 01.02.202014:15 ответить ссылка -1.6
Вообще пофиг, сколько оно в библиотеке занимает. Ты же стрингбилдер в первом решении не считаешь.
Hellsy Hellsy 01.02.202014:17 ответить ссылка 0.8
Нууу, совсем нет, котоны. Первый вариант с билдером и индексами не только меньше ест процессора, но и не выделяет память на временные строки, а значит не нагружает сборщик мусора и аллокатор.
Si1ver Si1ver 01.02.202016:12 ответить ссылка -0.3
Заморачиваться производительностью регулярных выражений в 2020г. стоит только если эта хрень сидит внутри цикла с большим числом итераций или если идет работа с очень длинными строками (ну или если ты пишешь код, который должен работать на утюге).

В рамках этой задачи у мы видим решение, вызванное отнюдь не заботой о производительности, а банальным неумением использовать регулярные выражения.
Hellsy Hellsy 01.02.202019:45 ответить ссылка -0.3
Согласен с тобой во всем, кроме одного, мы не видим тут никакой задачи вообще.
Si1ver Si1ver 01.02.202023:31 ответить ссылка 0.0
Хотя, я не очень внимательно прочитал коммент, больший выигрыш тут всё-таки не в производительности регулярок, а в отсутствии временных аллокаций. Иначе, если функция будет дёргаться в цикле, гарантированно будет регулярный стопворлд. А такое не для игрушки, не для банк трейдера не допустимо, например.
Si1ver Si1ver 01.02.202023:40 ответить ссылка 0.0
Ну вот как это выглядит на "медленном" интерпретируемом языке на слабеньком домашнем ноуте:

use Time::HiRes (gettimeofday);

$start = gettimeofday();
my $string = 'abcdefghijklmopqrstuvwxyz'x100000;
$total = length($string);
$string=~s/[a-m]+//g;
$count = length($string);

$end = gettimeofday() - $start;

print "Total time: $end sec, result: $count of $total\n";

Total time: 0.0329160690307617 sec, result: 1200000 of 2500000

Т.е. три сотых секунды для строки размером в 2.5 миллиона символов.
Hellsy Hellsy 02.02.202011:21 ответить ссылка 0.0
Не знаю ничего о кишках перла, но в посте шарп, о нем и буду говорить.

1) Немножко самоцитирования "а в отсутствии временных аллокаций. Иначе, если функция будет дёргаться в цикле, гарантированно будет регулярный стопворлд. А такое не для игрушки, не для банк трейдера не допустимо, например.

2) Немножко логики. В реальном приложении или игрушке этот код будет висеть на сотне объектов и выполняться 60 раз в секунду, генерирую одну красивую строку статуса и кучу временного мусора, который прийдется чистить дот нету или ява машине.

3) Ссылочки на бесконечные "моя игра тормозит, што делать!?!?!"
"After some digging and playing around in the profiler, I found out those were due to some line named GC.Collect. In my project, it can take up to 8.62ms (on my high-end pc) of the 9.79ms needed for my behaviours updates on a given frame;"

"The strings create garbage as well, even when you concatenate them, so if you have to handle a lot of text somewhere and manipulate it heavily, use a StringBuilder that will take care of those memory issues alone and avoid the creation of garbage."

https://www.gamasutra.com/blogs/GrhyllJDD/20160119/263849/Reducing_memory_allocations_to_avoid_Garbage_Collection_on_Unity.php
https://forum.unity.com/threads/understanding-how-strings-related-to-memory-allocations.121140/
Si1ver Si1ver 03.02.202001:51 ответить ссылка 0.0
C# используется не только для игрушек, но и для веба, где работа с регэкспами и строками - обычное дело. А скорость ограничена не производительностью кода, а ожиданием ответа СУБД и/или передачи данных.

И вот в таких раскладах читаемость и простота кода намного важнее оптимизации.

Собственно, это универсальное правило - простота всегда предварительно лучше скорости. Потому что потом ты можешь профайлером посмотреть, что именно тормозит и оптимизировать, а вот сразу зарываться в оптимизацию - путь к долгой и неприятной отладке.
Hellsy Hellsy 03.02.202002:27 ответить ссылка 0.0
Ну это естесна, всегда нужно понимать зачем что-то делаешь, писать сайт на ассемблере настолько же неблагодарное занятие как и высокопроизводительное приложение на однострочниках. Очевидно же и что автор мемеса намекает что первый код вообще никому не нужен, прочив чего я тут и холиварю.
Si1ver Si1ver 03.02.202004:40 ответить ссылка 0.0
В посте жава, блджад
А я на си пишу. И чтобы банально сканкатенировать две две строки мне приходиться ебаться. И думать, кто же очистит память, выделенную под новую строку.
В вызове realloc и free нет ничего сложного. Кроме того, есть библиотеки, где за тебя уже об этом подумали.
Hellsy Hellsy 01.02.202019:46 ответить ссылка 0.0
Valgrind знаю для анализа утечек. Насколько мне известно, в си нет механизмов, чтобы надежно защитить себя от выстрела в ногу памятью.
Linus Gabriel Sebastian тоже не понимает, какого хера он в таких темах появляется.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
So I got this new printer.. Задача 3. Просчитай, по какому пути пойдёт электрический ток?
(При условии, что он не дурак)
подробнее»

ток задача geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор

Задача 3. Просчитай, по какому пути пойдёт электрический ток? (При условии, что он не дурак)
YOU, WERE SUPPOSED TO'DESTROY THEM
K J
ft*
/t
Sr w
NOT JOIN THEM
/ • Ну что. Привет, реактор!
Второй урок по Яве(Джаве).
Сегодня мы будем учить условия, циклы и создание функций.
Будем работать в консольке, как её открыть - я описал в прошлом уроке. Привязывать графику пока рановато ;).
Что мы будем сегодня делать?
Мы выведем небольшое вступление, потом числа Ф
подробнее»

java уроки программирование geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор много текста длиннопост как получить минусы как получить плюсы public static void Кодинг разное

Ну что. Привет, реактор! Второй урок по Яве(Джаве). Сегодня мы будем учить условия, циклы и создание функций. Будем работать в консольке, как её открыть - я описал в прошлом уроке. Привязывать графику пока рановато ;). Что мы будем сегодня делать? Мы выведем небольшое вступление, потом числа Ф