Стоило включить мозг на 5 минут, отвлекшись от того, что хотел решить быстрее (кстати о стрессе на собеседовании), и тут же стало ясно как решить правильнее.
для пояснения пишу с комментариями:
w =: 0 5 3 5 1 2 NB. исходные данные
s =: >./\ - [ NB. функция для подсчёта "дыр" слева-направо.
+/ (f w) <. f&.|. w
NB. >. - это поиск максимума.
NB. / - это between, т.е. вставка максимума между всеми элементами списка - т.е. по сути поиск глобального максимума.
NB. но если мы пишем /\ - то это between, но с сохранением промежуточных результатов, т.е. бегущий максимум. >./ w это 5, а >./\ w это 0 5 5 5 5 5 . всё отлично, но только данный подход считает так, как будто стены нет слева, а вот справа есть. для этого ниже делается реверс.
NB. &. - это применение одной функции, потом глагола, потом инверсной.
NB. |. - revers списка.
NB. т.е. f&.|. w - это будет: развернуть список, потом применить к нему f, а потом ещё раз развернуть. т.е. в данном случае, чтобы подсчитать впадины справа налево.
NB. в итоге: считаем дырки слева направо, потом справа-налево и берём меньшие значение для каждой дырки.
Не судите строго — основной текст и заморочка — это обрезание краёв. Пойду спрошу у гуру как это сделать.
f =: 3 : '>. /> +/ each (<@((-.@((i.@{.@I. , (({:@I.) + i.@(# - {:@I.))) (4 : ''1 x } y'') ]))@(1&>) # ]))("1) (-/~) y'
f 2 5 1 2 3 4 7 7 6
10
f 2 5 1 3 1 2 1 7 7 6
17
Интересно было бы узнать у автора — а чем twitter лучше чем амазон? Дилетанский взгляд конечно: но в амазоне какие-то новые технологии делают, a что делают в твиттере — я не известно.
Не так уж и много, так как в большинстве случаев программа или функция на APL была однострочной.
С другой стороны предтавьте сколько бумаги бы ушло на отладку на BASIC.
А с третьей стороны, бумага тут используется просто чтобы не снимать ЭЛТ монитор, так что не всё так страшно.
Была выбрана опция «безлимит внутри сети+», тариф не помню. С помощью этой утилиты выбирал не столько себе, сколько жене и остальным родственникам, так как у них звонки более разнообразны: там разные варианты получились.
Перепешите, пожалуйста и давайте сравним. На моё решение я потратил минут 30, из них минут 10 заглядывал в мануал, так как это по сути вторая программа написанная мной на Q, но, если вы говорите, что сподручнее — то вы потратите на решение значительно меньше времени.
Стоило включить мозг на 5 минут, отвлекшись от того, что хотел решить быстрее (кстати о стрессе на собеседовании), и тут же стало ясно как решить правильнее.
для пояснения пишу с комментариями:
Не судите строго — основной текст и заморочка — это обрезание краёв. Пойду спрошу у гуру как это сделать.
Интересно было бы узнать у автора — а чем twitter лучше чем амазон? Дилетанский взгляд конечно: но в амазоне какие-то новые технологии делают, a что делают в твиттере — я не известно.
С другой стороны предтавьте сколько бумаги бы ушло на отладку на BASIC.
А с третьей стороны, бумага тут используется просто чтобы не снимать ЭЛТ монитор, так что не всё так страшно.
www.jsoftware.com/jwiki/HenryRich?action=AttachFile&do=view&target=J602_RefCard_color_letter_current.pdf
Без такой таблицы поиск нужных глаголов, в процессе изучения, может очень растянуться.
можно использовать более компатную запись используя диадный /: