Мне нужна какая-то помощь ..... сценарий ..... который может сделать следующее - PullRequest
0 голосов
/ 13 апреля 2011

предположим, что я ввел шаблон типа AAAABBCCC .....

, тогда скрипт должен напечатать как T1 0 A-4 B-2 C-3 0 T1

, где T1 - касаниеи 0 указывает на следующую строку ......

если патерн похож на AAABBCC CABCCBA

, то скрипт должен сгенерировать шаблон T1 0 A-3 B-2 C-2 0 T1 0CAB C-2 BA 0 T1 # должен начинаться с T1 и заканчиваться T1 .... и между шаблонами допускается только один T1 ...... Я новичок в TCL, пожалуйста, помогите .....

1 Ответ

3 голосов
/ 13 апреля 2011
set pattern1 {AAAABBCCC}
set pattern2 {AAABBCC
CABCCBA}

proc process {pattern} {
    lappend result "T1"
    foreach line [split $pattern "\n"] {
        lappend result "0"
        foreach {chunk symbol} [regexp -all -inline {(.)(?:\1+)?} $line] {
            set num [string length $chunk]
            lappend result $symbol[expr {($num>1)?"-$num":""}]
        }
        lappend result "0" "T1" "\n"
    }
    return [join $result]
}

puts [process $pattern1]
puts [process $pattern2]

Вывод кода выше:

T1 0 A-4 B-2 C-3 0 T1

T1 0 A-3 B-2 C-2 0 T1
 0 C A B C-2 B A 0 T1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...