thedeemon: (mosquito)
[personal profile] thedeemon
Есть такой подкаст о распределенных базах данных DevZen, почему-то выдающий себя за подкаст о программировании. Но недавно они сделали исключение, выгнали женщин и детей, пригласили двух замечательных гостей - Романа Чепляку, которого мы все любим за его Cartesian Closed Comics, и Дениса Шевченко, автора книжки "О Haskell по-человечески" - и получился довольно хороший и познавательный выпуск, рекомендую.

Роман рассказал, что в свое время интервьюировал не меньше двух десятков хаскеллистов в Киеве, и практически никто не смог во время интервью решить такую задачку: есть длинный список чисел, надо найти их среднее арифметическое за один проход по списку и О(1) памяти. Занятно.

Date: 2015-07-05 04:34 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Пытаюсь переварить про среднее арифметическое.
Неужели такая нехватка общего образования... аяяй.
В Питере бы сразу сказали: "посчитаем моменты".

Date: 2015-07-05 04:56 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Тут чисто хаскелевая специфика, на ML или Скале или даже С++ это было бы просто. Но перенос такого решения в лоб на хаскель приводит к порождению цепочки недовычисленных санков. Ибо ленивость. А это не O(1).

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2015-07-05 04:59 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-07-05 05:17 am (UTC) - Expand

(no subject)

From: [identity profile] os80.livejournal.com - Date: 2015-07-05 06:13 am (UTC) - Expand

(no subject)

From: [identity profile] kodt-rsdn.livejournal.com - Date: 2015-07-05 07:57 am (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 07:39 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2015-07-05 04:27 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-07-05 05:51 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 07:16 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 04:03 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-07-05 05:28 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 05:39 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-07-05 06:02 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 06:12 pm (UTC) - Expand

(no subject)

From: [identity profile] stas binko - Date: 2015-07-05 07:57 pm (UTC) - Expand

(no subject)

From: [identity profile] kodt-rsdn.livejournal.com - Date: 2015-07-05 06:37 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 07:44 pm (UTC) - Expand

Date: 2015-07-05 07:54 am (UTC)
From: [identity profile] kodt-rsdn.livejournal.com

Присоединяюсь к Ивану Ганди.
Казалось бы, foldl' во всех уччебниках для детей есть.
Или хаскеллисты стали умствовать про то, что арифметика нужна длинная, а это уже сразу O(n)... даже без лени и Шлемюэля?


Хотя да, нужно делать энергичный кортеж (количество,сумма), иначе фолдл его только до конструктора форсирует, а внутри будут санки.

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2015-07-05 08:55 am (UTC) - Expand

(no subject)

From: [identity profile] kodt-rsdn.livejournal.com - Date: 2015-07-05 10:13 am (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 09:53 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 11:41 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2015-07-05 11:47 am (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 11:51 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2015-07-05 12:01 pm (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 12:15 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2015-07-05 01:51 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2015-07-05 05:42 pm (UTC) - Expand

Date: 2015-07-05 08:09 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Отличный наброс, типа "хаскеллисты все тупые".

Неужели прям ни одного не нашлось, кто бы написал
явную рекурсию со строгим аккумулятором, т.е аналог
явного цикла, как Си?
Edited Date: 2015-07-05 08:10 am (UTC)

Date: 2015-07-05 09:30 am (UTC)
From: [identity profile] thedeemon.livejournal.com
"практически никто" - значит кто-то грамотный все же был

Date: 2015-07-05 12:42 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
так foldl' полностью эквивалентен явной хвостовой рекурсии. Собственно, фишка в том, как сделать составной аккумулятор строгим.
Edited Date: 2015-07-05 12:43 pm (UTC)

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2015-07-05 12:57 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2015-07-05 01:33 pm (UTC) - Expand

Date: 2015-07-05 08:16 am (UTC)
From: [identity profile] gineer.livejournal.com
\\Роман рассказал, что в свое время интервьюировал не меньше двух десятков хаскеллистов в Киеве, и практически никто не смог во время интервью решить такую задачку: есть длинный список чисел, надо найти их среднее арифметическое за один проход по списку и О(1) памяти. Занятно.

А что же тут удивительного?
Чай не императивщики. :) разглядывать ассемблерный код своего поделия не будут.

Date: 2015-07-05 08:24 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Ну на это можно ответить собственными историями про собеседование эмбедщиков, которые постоянно рассматривают свой код на ассемблере. Или джавистов.

Ну или вот взять людей выше по треду, которые путают асимптотику алгоритма со способом интерпретации, хотя способ интерпретации добавляет лишь константу.

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-07-05 09:30 am (UTC) - Expand

Date: 2015-07-05 09:34 am (UTC)
From: [identity profile] dmytrish.livejournal.com
Интересно, конечно. Я интервьюировался когда-то давно не у Романа, но в той же конторе, завалился на fold’ах и их ленивом поведении — в принципе, вполне заслужено, базовая вещь. Но поверить в то, что люди не могут взять среднее арифметическое за один проход — это уже как-то за гранью. Видимо, мое углубление в реализации функциональных языков с тех пор не прошло даром.

Date: 2015-07-05 12:58 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Так среднее арифметическое и было лишь предлогом, сама задача именно про ленивость и фолды.

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 01:06 pm (UTC) - Expand

Date: 2015-07-05 10:37 am (UTC)
From: [identity profile] dev117.livejournal.com
А как найти среднее арифметическое за один проход?

Date: 2015-07-05 12:40 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
за гранью, блин. Одновременно считать сумму и длину, а потом поделить

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-07-05 12:58 pm (UTC) - Expand

(no subject)

From: [identity profile] os80.livejournal.com - Date: 2015-07-05 01:12 pm (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 01:19 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2015-07-05 01:48 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-07-05 02:24 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2015-07-05 04:12 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-07-05 04:30 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2015-07-05 04:38 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-07-05 04:55 pm (UTC) - Expand

(no subject)

From: [personal profile] fortness90 - Date: 2015-07-09 06:24 pm (UTC) - Expand

(no subject)

From: [identity profile] pappadeux.livejournal.com - Date: 2015-07-06 05:24 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 04:10 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2015-07-05 05:44 pm (UTC) - Expand

(no subject)

From: [identity profile] Игорь Петров - Date: 2015-07-05 05:55 pm (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 11:22 pm (UTC) - Expand

(no subject)

From: [identity profile] dev117.livejournal.com - Date: 2015-07-05 07:33 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2015-07-05 09:30 pm (UTC) - Expand

(no subject)

From: [identity profile] dev117.livejournal.com - Date: 2015-07-05 09:36 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2015-07-05 10:39 pm (UTC) - Expand

(no subject)

From: [identity profile] dev117.livejournal.com - Date: 2015-07-06 04:59 am (UTC) - Expand

(no subject)

From: [identity profile] no more turtles - Date: 2015-07-05 08:54 pm (UTC) - Expand

Date: 2015-07-08 12:33 pm (UTC)
From: [identity profile] alexander tarasikov (from livejournal.com)
Я написал на бумажке:
A1 = X1 / 1
A2 = (X1 + X2) / 2
A3 = (X1 + X2 + X3) / 3
AN = (A(N-1) * (N-1) + XN) / N

Потом написал такой код https://gist.github.com/astarasikov/c4506f456dd69e6a844e
потом вспомнил про kahan summation, посмотрел на время, и решил, что хватит зависать в социальных сетях на сегодня

Жопоболь

Date: 2015-07-05 12:36 pm (UTC)
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] nponeccop сослался на вашу запись в своей записи «Жопоболь (http://nponeccop.livejournal.com/449682.html)» в контексте: [...] http://thedeemon.livejournal.com/101735.html [...]

Date: 2015-07-05 02:08 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
"надо найти их среднее арифметическое за один проход"

на бумажке?

Date: 2015-07-05 02:33 pm (UTC)
From: [identity profile] lispnik.livejournal.com
Если за один проход и на бумажке — это эйлеровы графы, дааа? :)

Date: 2015-07-05 03:08 pm (UTC)
From: [identity profile] gliv.livejournal.com
Я уже рассказывал где-то, что ребята у меня в конторе выработали следующие вопросы для первого интервью:
- сколько бит в байте
- сколько разных значений можно закодировать 6-ью битами

И это правило реально работает! Я не думал, что помогает, но реально находятся люди, которые этого не знают.

Не уверен, что для всех оно применимо, может на каком-нибудь "1С" или Visual Basic можно программировать не зная этого. Но мне даже странно слышать такое!

Date: 2015-07-05 03:15 pm (UTC)
From: [identity profile] gds.livejournal.com
> сколько бит в байте

Возможно вы имели в виду: в октете

(no subject)

From: [identity profile] gliv.livejournal.com - Date: 2015-07-05 03:52 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2015-07-05 04:15 pm (UTC) - Expand

(no subject)

From: [identity profile] gliv.livejournal.com - Date: 2015-07-05 04:18 pm (UTC) - Expand

(no subject)

From: [identity profile] hshhhhh.livejournal.com - Date: 2015-07-10 12:32 pm (UTC) - Expand

(no subject)

From: [identity profile] shabunc.livejournal.com - Date: 2015-07-05 06:49 pm (UTC) - Expand

(no subject)

From: [identity profile] gliv.livejournal.com - Date: 2015-07-06 06:46 pm (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-05 11:28 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2015-07-05 11:47 pm (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2015-07-06 10:28 am (UTC) - Expand

Date: 2015-07-05 05:44 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Помню в одну контору интервьюировался, и меня подобные вопросы очень удивили.

(no subject)

From: [identity profile] 109.livejournal.com - Date: 2015-07-06 01:51 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2015-07-06 06:10 pm (UTC) - Expand

(no subject)

From: [identity profile] 109.livejournal.com - Date: 2015-07-06 08:22 pm (UTC) - Expand

(no subject)

From: [identity profile] pargentum.livejournal.com - Date: 2015-07-10 04:04 am (UTC) - Expand

Date: 2015-07-06 06:15 am (UTC)
From: [identity profile] levgem.livejournal.com
ну а в чём цимес первого вопроса кроме того, что человек может блеснуть своей эрудицией и рассказать про 7 или 9 битные компьютеры древности?

(no subject)

From: [identity profile] gliv.livejournal.com - Date: 2015-07-06 06:34 am (UTC) - Expand

(no subject)

From: [identity profile] levgem.livejournal.com - Date: 2015-07-06 06:41 am (UTC) - Expand

Date: 2015-07-06 04:33 pm (UTC)
From: [identity profile] udpn.livejournal.com
А какой адрес у вашей конторы? :)

(no subject)

From: [identity profile] gliv.livejournal.com - Date: 2015-07-06 06:44 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2015-07-06 10:37 pm (UTC) - Expand

(no subject)

From: [identity profile] rashid80.livejournal.com - Date: 2015-07-09 07:31 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2015-07-10 11:20 am (UTC) - Expand

(no subject)

From: [identity profile] rashid80.livejournal.com - Date: 2015-07-10 02:04 pm (UTC) - Expand

Date: 2015-07-06 06:14 am (UTC)
From: [identity profile] levgem.livejournal.com
avg([]) -> 0;
avg(List) -> avg(List, 0, 0).

avg([], Sum, Count) -> Sum / Count;
avg[N|List], Sum, Count) -> avg(List, Sum+N, Count+1).


так нельзя?

Date: 2015-07-06 08:09 am (UTC)
From: [identity profile] thedeemon.livejournal.com
При собеседовании на хаскельную позицию - вряд ли.
Там вся сложность задачи именно в особенностях хаскельной ленивости, на строгих языках все просто, как в твоем решении.

(no subject)

From: [identity profile] awson.livejournal.com - Date: 2015-07-06 11:35 am (UTC) - Expand

(no subject)

From: [identity profile] vshabanov.livejournal.com - Date: 2015-07-06 12:25 pm (UTC) - Expand

(no subject)

From: [identity profile] geniepro.livejournal.com - Date: 2015-07-07 04:49 am (UTC) - Expand

(no subject)

From: [identity profile] vshabanov.livejournal.com - Date: 2015-07-07 11:26 am (UTC) - Expand

Date: 2015-07-06 12:41 pm (UTC)
From: [identity profile] vshabanov.livejournal.com
Вспоминается, как Зефиров давал C# программистам задачу найти разницу между максимальным и минимальным числом массива. И тоже очень многие лажали. А некоторые даже отказывались.
Я сам когда-то спрашивал банальное -- перевернуть список -- тоже не все могли.

Может это нервы, а может быть на каких-то работах можно даже без знания основ обойтись.

Date: 2015-07-09 07:29 pm (UTC)
From: [identity profile] rashid80.livejournal.com

А в чем подвох задачи с массивом? Если массив небольшой можно встроенными средствами его отсортировать и  взять разность первого и последнего элемента. Для большого массива нужны 2 переменные (мин и макс) и итератором пройти массив.

(no subject)

From: [identity profile] vshabanov.livejournal.com - Date: 2015-07-09 09:18 pm (UTC) - Expand

(no subject)

From: [identity profile] ivan sopov - Date: 2015-07-10 06:51 am (UTC) - Expand

(no subject)

From: [identity profile] rashid80.livejournal.com - Date: 2015-07-10 02:04 pm (UTC) - Expand

Готов К Продакшну

Date: 2015-07-07 09:39 am (UTC)
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] theiced сослался на вашу запись в своей записи «Готов К Продакшну (http://theiced.livejournal.com/328465.html)» в контексте: [...] http://thedeemon.livejournal.com/101735.html [...]

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 25th, 2026 08:35 am
Powered by Dreamwidth Studios