так что соблазн здесь заключается в том, чтобы вкладывать циклы ... но вы не хотите этого делать, конечно, не для N> 3 ...
В Python есть две приятные вещи, которые сделают этот довольно простой
.
from collections import Counter
s = open(somefile).read()
# now you have a string with contents of file.
l = s.split()
# now you have a list of words of all lengths
l_filtered = filter(lambda x: len(x)==n, l)
#now you have a filtered list of only words of len n
print (Counter(l_filtered))
#your answer as a dict like Counter object
Ваше решение, как правило, правильное, но имеет несколько проблем.
Команда, в которой я работал, реализовала это, создав второе мобильное приложение (вне обновляемого приложения) в мобильные устройства, которые отвечали за загрузку и запуск CAB.
Это сработало для нас довольно хорошо.
Нет необходимости создавать специальное приложение для обновления, по крайней мере, на WM 6 с .netcf 3.5. Я загружаю файл .cab с помощью веб-службы, а затем запускаю новый процесс и вызываю wceload для автоматической установки cab. Это позаботится о том, чтобы закрыть мое работающее приложение, удалить его, а затем выполнить установку, как указано в Документы MSDN здесь
В Windows Mobile версии 5.0 и более поздних при использовании Wceload.exe для переустановки файла .cab программа Wceload.exe удаляет ранее установленную версию файла .cab перед установкой новой версии. Во время части удаления этого процесса Wceload.exe закрывает все запущенные в данный момент исполняемые файлы, которые были установлены на целевом устройстве с помощью файла .cab, в зависимости от их имени файла. Wceload.exe также закрывает все исполняемые файлы, являющиеся целью файловой операции, например перемещение или копирование. Чтобы закрыть исполняемый файл, Wceload.exe отправляет WM_CLOSE всем окнам верхнего уровня, принадлежащим процессу. Если процесс не завершается своевременно после получения сообщения WM_CLOSE, то Wceload.exe принудительно закрывает его, вызывая TerminateProcess. Wceload. exe не пытается закрыть исполняемые файлы, которые поставляются в образе времени выполнения на целевом устройстве.
У меня также есть cesetup.dll для дополнительной очистки файлов во время удаления.
Моя большая проблема заключается в том, что я не могу изменить папку для установки моего приложения при автоматической установке, и по умолчанию используется свойство% installDir% из моего файла .inf. И создание отдельного файла .cab для каждого устройства, которое требуется обновить, - не лучшее решение.
Я только что опубликовал WmAutoUpdate, платформу .NET C #, которая будет выполнять автоматические обновления в Compact Framework. Он находится в свободном доступе на Github: http://github.com/seboslaw/wmautoupdate
Вы правы. после wM5, 6 ... WCEload просто останавливает приложение, если оно установлено, поэтому вам не нужно останавливать его вручную. но вам необходимо установить обновление в автоматическом режиме, потому что в противном случае пользователь может отменить его, поэтому вам понадобится установщик silent cab. загрузите его с