Arslan
интересно
Leon174
А откуда задача такая? Случаем не Снус подкинул? Сидит поди сейчас, хихикает.
Arslan
Он пришел кста
Snusmumriken
🤚
Domka
Да
Domka
Стой
Domka
Погодь запутал
Arslan
четные и нечетные
Leon174
958-то как получилось?
Domka
Нужно чтобы трехзначное нечетное
Domka
И трехзначное четное
Domka
Два трехзначных
Domka
Я сделал чтобы он выводил эти числая но сделать так что они выводят их с нулями и разделением
Domka
Leon174
Входящее число однозначно имеет 3 четных и 3 нечетных цифры?
Domka
Да
Snusmumriken
958-то как получилось?
Извлекли все чётные числа. 925784 состоит из чётных 2 8 4 и нечётных 9 5 7.
Я там опечатался, да.
Domka
:)интересная задачка?
Snusmumriken
Замороченная. Много писать, перебирая шесть знаков несколько раз.
Domka
Там человек ползуется функцией от безысходности, но я думаю можно без нее обойтись
Leon174
Задачка интересная, только вот перед сном шестернями хрустеть влом.
Domka
Ну ладно
Domka
Могу потом скинуть как решу код
Domka
Domka
Днем я ваще овощ
Domka
У которого одна цель, не заснуть
Arslan
Domka
Domka
Не всех наверное
Domka
Либо кто то устал
Domka
Сегодня очень сильно
Leon174
Спать надо по ночам. Если меня не дергали днем и я нормально лег и нормально выспался, то днем могу по стенам бегать, а с утра и по потолку. А вот если нет, то лучше ко мне лишний раз не подходить, я тогда самый мизантропный мизантроп на свете.
Domka
Ладно
Domka
В любом случае я решать буду
Domka
Я сделал но...
Domka
Работать будет только с числом у которого первые три цифры уже являються трехзначным числом
Domka
Буду пробовать сделать так чтобы отсеивалось
fgntfg
Эмм, а проблема в чем?
fgntfg
У вас же целое
fgntfg
Чтоб получить, например 2ую цифру:
A/1000*100-A/100
fgntfg
Возможно общую формулу можно будет упростить
fgntfg
Ломать голову тут не на чём
Leon174
Это-то понятно. А как определить четность/нечетность? Я на этом завис.
fgntfg
У тебя число не из n знаков, а из 6
fgntfg
Тебе даже циклы не нужны
Leon174
Циклы не нужны, а if хотелось бы, но нельзя.
fgntfg
Зачем тебе иф?
fgntfg
Там 2 строчки
fgntfg
Всего
Leon174
if a%2 == 0 хочу
Leon174
Хотя уже не хочу, уже сплю почти.
fgntfg
Дядь, зачем?
fgntfg
Спи
Arslan
Arslan
Arslan
Мне страшно, сброс кэша не помогает
Domka
Что это
Arslan
это значит IDE ведет себя не адекватно
Arslan
уже второй час не могу решить
Arslan
Оказалось что IDE намудрила со скобками и поэтому она не понимала что происходит
Domka
Понял
fgntfg
Arslan
fgntfg
Возможно, вы в курсе, что существует такая штука, как Закон Мура.
Возможно, вы даже в курсе, что он уже перестаёт работать из-за физических ограничений вселенной, и даже параллелизация (наращивание ядер) уже не особо спасает.
Маловероятно, но, возможно, вы даже слышали о Законе Амдала, который показывает почему же именно наращивание ядер перестаёт помогать.
И согласно нему, мы практически в заднице: даже у программы, содержащей всего 1% последовательных вычислений (т.е. операций, зависящих от результата других операций) предел ускорения - 100 раз. Сколько бы ядер мы ни добавляли в систему. Быстрее, чем в 100 раз программа работать не станет.
В реальности же, программ с 1% последовательных вычислений не существует. И даже программ с 10% (для которых предел - 10-кратное укорение) исчезающе мало.
А для программ в которых последовательных вычислений половина - предел ускорения - 2 раза.
Как вы догадываетесь, в тех же игрушках, например, последовательных вычислений даже больше половины.
Вот и думайте теперь...
Однако, не всё так печально: в нашем мире существует так же и Закон Густавсона-Барриса, у которого шанс, что вы о нём слышали стремится к нулю, но который, тем не менее, переосмысливает закон Амдала, смотря на "производительность" под другим углом и вселяет надежду.
Закон Амдала предполагает что фиксированным является объём задачи (грубо говоря - количество действий).
И это вполне справедливо применительно к текущим компьютерам, программам и ОС.
Однако же закон Г-Б рассматривает ситуацию с точки зрения ОС реального времени (типа тех, которые используются на космических аппаратах):
у каждой задачи есть лимит времени, в течение которого она может выполняться, вне зависимости от того, успела ли она, или нет.
Иначе аппарату может настать капут (особенно актуально для солнечных зондов, которые тусуются намного ближе к солнцу, чем даже Меркурий).
Так вот, в случае закона Г-Б (и ОС РВ) ситуация с распараллеливанием НАМНОГО более благоприятная.
Посмотрим рассчёты (на консльном калькуляторе bc, если что. Надеюсь, ни для кого не будет проблемой разобрать синтаксис):
$ bc -l <<< 'n=10; s=0.01; print "Amdall: ",1/(s+((1-s)/n)),"\n","Gust-Bars: ",n+(1-n)*s,"\n"'
Amdall: 9.17431192660550458715
Gust-Bars: 9.91
$ bc -l <<< 'n=100; s=0.01; print "Amdall: ",1/(s+((1-s)/n)),"\n","Gust-Bars: ",n+(1-n)*s,"\n"'
Amdall: 50.25125628140703517587
Gust-Bars: 99.01
$ bc -l <<< 'n=1000; s=0.01; print "Amdall: ",1/(s+((1-s)/n)),"\n","Gust-Bars: ",n+(1-n)*s,"\n"'
Amdall: 90.99181073703366696997
Gust-Bars: 990.01
$ bc -l <<< 'n=100000; s=0.01; print "Amdall: ",1/(s+((1-s)/n)),"\n","Gust-Bars: ",n+(1-n)*s,"\n"'
Amdall: 99.90109791306606459604
Gust-Bars: 99000.01
где:
n = к-во вычислительных ядер (процессоров),
s = коэффициент (% от 1) последовательных вычислений,
а остальное вам и не нужно (там формулы и print) 😊
Как мы видим, для текущего софта, который пишут всякие макаки, мнящие себя программистами, даже при 1% последовательных вычислений, только при количестве процессоров порядка 100 тысяч ускорение оказывается максимально близко к своему 100-кратному пределу.
В то же время, программы реального времени на том же количестве ядер имеют 99000-кратное ускорение.
Мораль, думаю, понятна 😃
Snusmumriken
Карочи, дело в том, что если мыслить категорией ПРОГРАММ — мы в заднице.
Но если подумать, что программы созданы для решения ЗАДАЧ, и начать проектировать процы под ЗАДАЧИ — всё становится куда проще. Привет гугл с его map-reduce, распараллеленом на кучу разных физических кластеров.
Snusmumriken
С третьей стороны, это всё — грубое теоретизирование. Количество процессоров наращивается не для того чтобы решать задачи параллельно, а для того чтобы запускать больше разнородных процессов, чтобы на компе одновременно крутился браузер, видеоплеер и игрушка фоном.
В случае суперкампуцеров и прочих особо требовательных задач, оно сводится в
(parallel_part / count_of_processors) + transmitting_part + serial_part
Основной косяк в том, что чем быстрее решается распараллеленная задача — тем больше процентов занимает константная transmitting_part + serial_part, и ускорять её бывает проблематично.
Snusmumriken
С третьей стороны, абсолютно пофигу, сколько решается задача, если этого времени достаточно для "реальности" выполнения.
Snusmumriken
И попытки ускорения в десятки тысяч раз десятками тысяч ядер не является реальной проблемой, потому что количество машин более чем с 60 ядрами — редкость на текущий момент (а при распределённых вычислениях гарантированно возникает увеличение transmitting_part до неприличных значений из-за использования сети), а люди пишут в среде операционной системы с шедулером, вместо голого железа с прямым контролем каждого ядра в отдельности. Мы не можем заставить каждое ядро цпу выполнять исключительно какую-то конкретную задачу, этим занимается ОС.
Реальная проблема это переключение контекста. Увеличение количества ядер ведёт к дополнительным (последовательным, лол) расходам на переключения между кусочками задач из-за наличия ОС и её шедулера.
К счастью, та же видеокарта этим почти не занимается, и скорость шины там приличная, поэтому используйте кластеры из видях для ваших параллельных задач, пожалуйста, и будут вам ваши тысячи процентов производительности.
Snusmumriken
Кстати, на тему всяких солнечных зондов. Там есть лайфхак, который регулярно используется. Он называется "если не хватает мощности — добавь ещё одно устройство, которое будет делать свою узкую задачу и чисто присылать показания". А лучше сразу пять шоб дублировать функционал при поломке. А ещё там несколько дублирующих управляющих микросхем, которые мониторят друг друга на случай выхода из строя.
fgntfg
Snusmumriken
В зондах совершенно не нужны мгновенные реакции. Там не бывает "мы щас врежемся в астероид" или "ой мы одним крылом влетели в горячее газовое облако, срочно вылетаем пока до корпуса не достало", все операции растянуты как минимум на часы, кроме разве что опроса датчиков, обожемой, с довольно низкой частотой несколько раз в секунду. Это гипотетически может быть необходимо в пилотируемых людьми устройствах, чтобы рулить системой жизнеобеспечения, и то, там упор не на СКОРОСТЬ вычисления и соответствующей реакции, а на ТОЧНОСТЬ, т.е. безбажность и отлаженность. Ну не нужна там высокая вычислительная мощность, просто не нужна и всё.
fgntfg
Ммм, хомвидео в 15 секунд, под замком. Даже не знаю, падать апил или нет.
Arslan
Мамкин видеоблогер
Snusmumriken
Snusmumriken
Голые девки на рабочем столе попали в кадр?
fgntfg
Не, там с акшонкамеры видео. В море купаемся. Нет даже намека на
Arslan