Я пробовал это раньше для одного из интервью, а также думаю, что вы тоже :). Тем не менее, очень простой способ сделать это просто пройти шаг за шагом кода.
let initialString = "atttbcdddd"
var previousChar: Character = " "
var output = ""
var i = 1 // Used to count the repeated charaters
var counter = 0 // To check the last character has been reached
//Going through each character
for char in initialString {
//Increase the characters counter to check the last element has been reached. If it is, add the character to output.
counter += 1
if previousChar == char { i += 1 }
else {
output = output + (i == 1 ? "\(previousChar)" : "\(previousChar)\(i)")
i = 1
}
if initialString.count == counter {
output = output + (i == 1 ? "\(previousChar)" : "\(previousChar)\(i)")
}
previousChar = char
}
let finalOutput = output.trimmingCharacters(in: .whitespacesAndNewlines)
print(finalOutput)
Есть ли причина, по которой вы не можете использовать встроенные ресурсы для своего XML / файлы изображений?
Вы можете прикрепить все, что хотите, к концу исполняемого файла. Раньше я прикреплял свои файлы, а затем вставлял int, говорящий, как долго была моя полезная нагрузка, чтобы (psuedo):
payload.size = readInteger(exe.size - sizeof(int))
payload.offset = exe.size - sizeof(int) - payload.size
Вам могут потребоваться три подхода: если вам нужно объединить только изображения / аудио и другие неисполняемые файлы (без DLL, без OCX и т. Д.), Вы можете найти информацию на ресурсе файлы ; вы не ограничены типами, перечисленными в связанной статье, но для них есть специальные помощники. Otherwise - if you want to bundle executable files as well or prefer a more straightforward solution - you may consider using thinstall or molebox
Конечно, это возможно. Язык Tcl может быть объединен в виде «звездного пакета», который представляет собой исполняемый файл со встроенной виртуальной файловой системой. В эту файловую систему вы можете встраивать xml, изображения, звуки, скрипты и т. Д. Tcl'ers уже много лет занимаются развертыванием одного файла.