Как я могу посчитать количество вхождений скаляра в векторе, в APL

Например, у меня есть вектор 'H2DH2DH'Есть ли способ подсчитать количество 'H' скаляры, которые появляются?

2 ответа

Я предполагаю, что вы имеете в виду, у вас есть символьный вектор 'H2DH2DH' и хочу посчитать сколько скалярных 'H' персонажи там.

'H'='H2DH2DH даст вам логический вектор, указывающий, где находятся нужные символы. +/'H'='H2DH2DH' подведет итог, и дать вам счет.

Играть с ним на TryAPL!

Вы также можете определить обобщенную функцию, которая принимает скаляр в качестве левого аргумента и вектор в качестве правого аргумента и подсчитывает количество вхождений скаляра в вектор.

Некоторые системы APL (например, Dyalog, GNU и ngn) позволяют писать CountIn←{+/⍺=⍵} где выступает за левый аргумент, и за правильный аргумент. Попробуйте онлайн! Остальные системы (например, APLX, APL+WIN и APL2) будут вводить:

∇ count←char CountIn text
  count←+/char=text
∇

Попробуйте онлайн!

Или, если хотите, посчитать вхождения, используя внутренний продукт:

'H'+.='H2DH2DH'

(Несколько лет назад, на других реализациях, +/'H'='H2DH2DH' возможно, был немного быстрее, возможно, это все еще верно)

Другие вопросы по тегам