Посмотрите в первую очередь Corona и Defold, у них разные подходы, но оба довольно просты в освоении и использовании.
Параллельно можно изучать С++ и там уже смотреть что для вас удобнее.
from string import digits
digits = frozenset(digits)
a = [ "['9', '8', '7', '4']", "['9', '8', '7', '5']", "['9', '8', '7', '6']"]
b = []
for e in a:
b.append(int(''.join(c for c in e if c in digits)))
print(b)
Скорее всего по памяти не укладываетесь, не используйте разбиение на слова в list, идите по строке, вычленяйте слова, инкрементируйте словарь со словами.
Возможно в лимиты не укладываетесь. Memory и time. Есть описание шестого теста?
В код не вникал, так как долго, но могу посоветовать поискать решение с меньшим количеством циклов.
rev_text = ' '.join(rev_words)
Я думаю когда получается пустой массив rev_words, rev_text тоже получается пустым и в выходной файл ничего не пишется. Можно добавить условие, что если split пуст, то копировать исходную строку, иначе - обрабатывать.
Можно не хранить все анаграммы в одном массиве: сделали перестановку, проверили в базе слов, затем следующую перестановку. Это избавит от OutOfMemory проблемы. Но прибавит немного времени, так как будут повторения.
Затем можно разбить базу слов на 28 отдельных баз, где хранятся слова только определённой длинны. Должно немного ускорить поиск.
А вот как сделать быстрее - я бы использовал другой язык программирования (Go, C, Java) и попытался бы распараллелить процесс на потоки.
Используйте кавычки "cmd 01" или слэш перед пробелом cmd\ 01.
Или парсите аргументы по очереди и следите за тем какие аргументы являются составными и объединяйте их корректным образом.
Тогда вам нужно использовать что-то вроде PyGame или Kivy для отрисовки графики в реальном времени.
И пользоваться теми же принципами, что и в статье - создать три изображения друг под другом и применять к ним маски (скрыть горизонтальную полосу изображения сверху, что проявит изображение ниже). www.pygame.org/docs/ref/mask.html