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

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

Это глобальные переменные, которые я установил, и символы, которые я хотел бы подсчитать.

 s ^XA(1)="SYLVESTER STALLONE, BRUCE WILLIS, AND ARNOLD SCHWARZENEGGER WERE DISCUSSING THEIR "
 s ^XA(2)="NEXT PROJECT, A BUDDY FILM IN WHICH BAROQUE COMPOSERS TEAM UP TO BATTLE BOX-OFFICE IRRELEVANCE "
 s ^XA(3)="EVERY HAD BEEN SETTLED EXCEPT THE CASTING. "
 s ^XA(4)="""ARNOLD CAN BE PACHELBEL,"" STALLONE. ""AND I WANT TO PLAY MOZART. """
 s ^XA(5)="""NO WAY!"" SAID WILLIS. ""YOU'RE NOT REMOTELY MOZARTISH. """ 
 s ^XA(6)="""I'LL PLAY MOZART. YOU CAN BE HANDEL. """
 s ^XA(7)="""YOU BE HANDEL!"" YELLED STALONE. ""I'M PLAYING MOZART! """
 s ^XA(8)="FINALLY, ARNOLD SPOKE ""YOU WILL PLAY HANDEL,"" HE SAID TO WILLIS. "
 s ^XA(9)="""AND YOU,"" HE SAID TO STALLONE, ""THEN WHO ARE YOU GONNA PLAY? """
 s ^XA(10)="""OH YEAH?"" SAID STALLONE, ""THEN WHO ARE YOU GONNA PLAY? """
 s ^XA(11)="ARNOLD ROSE FROM THE TABLE AND DONNED A PAIR OF SUNGLASSES. "
 s ^XA(12)="I'LL BE MOZART."

person Benjamin Fuentes    schedule 09.09.2019    source источник
comment
Предположим, что тег m относится к MUMPS (en.wikipedia.org/wiki/MUMPS) и не язык формул Power Query.   -  person chillin    schedule 09.09.2019
comment
Да, я имею в виду извинения за MUMPS.   -  person Benjamin Fuentes    schedule 09.09.2019
comment
Вот подсказка, что делает $L(^XA(1),$E(^XA(1),1))?   -  person yhyrcanus    schedule 09.09.2019
comment
Я ввел $L(^XA(1),$E(^XA(1),1)) и получил значение 9. Думаю, это дало мне общее количество S. Однако я насчитал только 8 S. Откуда берется дополнительная ценность? ^XA(1)=СИЛЬВЕСТР СТАЛЛОНЕ, БРЮС УИЛЛИС И АРНОЛЬД ШВАРЦЕНЕГГЕР ОБСУЖДАЛИ СВОИ   -  person Benjamin Fuentes    schedule 11.09.2019
comment
Это не дает количество S. технически это дает вам количество подстрок, созданных путем разделения строки на S. Что такое количество s +1. Мне на самом деле нравится, как ZitRo делает это лучше в этом случае. Обратите внимание, что с небольшими изменениями вы можете заставить его код работать в GT.M.   -  person yhyrcanus    schedule 12.09.2019


Ответы (1)


Если я правильно понял ваш вопрос, и вам просто нужно общее количество всех символов в глобальном, вот вам:

    set key = ""
    for {
        set key = $Order(^XA(key))
        quit:key=""
        for i=1:1:$Length(^XA(key)) {
            set char = $Extract(^XA(key), i)
            set count(char) = $get(count(char)) + 1
        }
    }
    zwrite count // or just return count

Что касается вашего примера, это приведет к следующему выводу:

count(" ")=112
count("!")=3
count("""")=24
count("'")=4
count(",")=9
count("-")=1
count(".")=11
count("?")=3
count("A")=54
count("B")=12
count("C")=13
count("D")=23
count("E")=60
count("F")=6
count("G")=8
count("H")=20
count("I")=28
count("J")=1
count("K")=1
count("L")=48
count("M")=11
count("N")=39
count("O")=44
count("P")=13
count("Q")=1
count("R")=28
count("S")=29
count("T")=33
count("U")=13
count("V")=3
count("W")=11
count("X")=3
count("Y")=21
count("Z")=6

Надеюсь это поможет!

person ZitRo    schedule 09.09.2019
comment
чтобы считаться настоящей свинкой, вам придется использовать краткие формы команд, хотя - person kazamatzuri; 10.09.2019
comment
Большое спасибо. Это здорово помогает. - person Benjamin Fuentes; 12.09.2019
comment
@kazamatzuri, я всегда предпочел бы удобочитаемость краткому и короткому коду, однако я понимаю, что для MUMPS очень характерно сокращать все. Как отмечено в этой идеальной презентации, машин с малой памятью все еще можно увидеть и по сей день, поскольку программисты Mumps склонны сокращать свой код, иногда чрезмерно, хотя первоначальная причина этого давно прошла. - person ZitRo; 12.09.2019
comment
@BenjaminFuentes, пожалуйста! Не забудьте отметить ответ как принятый здесь, если он работает для вас :) Спасибо! - person ZitRo; 12.09.2019