История изменений
Исправление DRVTiny, (текущая версия) :
stdin.lines.map(len).average()
Несмотря на то, что мне нравится Ruby идеальной читабельностью, но вот такие хрени типа приведённой выше - это полный отстой, и очень жаль, что в crystal тоже оно.
Если уж вы что-то слышали о функциональщине, то знаете, что правильная запись такая:
(average (map (len) (lines stdin)))
Ну или хотя бы такая:
average(map(->(len), lines(stdin)))
pipe-овые точечки - это лютый треш, потому что левой стороне присваивается вообще совсем не то, что сразу за знаком равенства, а нечто, что вообще может ни малейшего отношения уже к исходным данным не иметь - и это нужно искать где-то очень-очень далеко справа.
S-выражения - это ключ к пониманию того, что важен результат, а не процесс, нужно начинать с задачи «построить дом», а не с изучения свойств древесины все возможных пород. В данном случае результатом является среднее элементов списка (а потом уж уточним какого, а может и передумаем брать именно такой список), а не это ваше stdin.хрен.знает.что
И да, Perl куда ближе к функциональным языкам, чем блевотный питон. Я уж не говорю о Julia и R, которые под капотом и есть функциональные языки.
Исходная версия DRVTiny, :
stdin.lines.map(len).average()
Несмотря на то, что мне нравится Ruby идеальной читабельностью, но вот такие хрени типа приведённой выше - это полный отстой, и очень жаль, что в crystal тоже оно.
Если уж вы что-то слышали о функциональщине, то знаете, что правильная запись такая:
(average (map (len) (lines stdin)))
Ну или хотя бы такая:
average(map(->(len), lines(stdin)))
pipe-овые точечки - это лютый треш, потому что левой стороне присваивается вообще совсем не то, что сразу за знаком равенства, а нечто, что вообще может ни малейшего отношения уже к исходным данным не иметь - и это нужно искать где-то очень-очень далеко справа.
S-выражения - это ключ к пониманию того, что важен результат, а не процесс, нужно начинать с задачи «построить дом», а не с изучения свойств древесины все возможных пород. В данном случае результатом является среднее элементов списка (а потом уж уточним какого, а может и передумаем брать именно такой список), а не это ваше stdin.хрен.знает.что