Как я могу посчитать количество вхождений скаляра в векторе, в APL
Например, у меня есть вектор 'H2DH2DH'
Есть ли способ подсчитать количество 'H'
скаляры, которые появляются?
2 ответа
Я предполагаю, что вы имеете в виду, у вас есть символьный вектор 'H2DH2DH'
и хочу посчитать сколько скалярных 'H'
персонажи там.
'H'='H2DH2DH
даст вам логический вектор, указывающий, где находятся нужные символы. +/'H'='H2DH2DH'
подведет итог, и дать вам счет.
Вы также можете определить обобщенную функцию, которая принимает скаляр в качестве левого аргумента и вектор в качестве правого аргумента и подсчитывает количество вхождений скаляра в вектор.
Некоторые системы APL (например, Dyalog, GNU и ngn) позволяют писать CountIn←{+/⍺=⍵}
где ⍺
выступает за левый аргумент, и ⍵
за правильный аргумент. Попробуйте онлайн! Остальные системы (например, APLX, APL+WIN и APL2) будут вводить:
∇ count←char CountIn text
count←+/char=text
∇
Или, если хотите, посчитать вхождения, используя внутренний продукт:
'H'+.='H2DH2DH'
(Несколько лет назад, на других реализациях, +/'H'='H2DH2DH'
возможно, был немного быстрее, возможно, это все еще верно)