Итак, я выполняю эту задачу кодирования на Python, и проблема говорит, что вход - это string array. Я загрузил образец ввода, и файл .txt выглядит следующим образом:
13
Alice;START
Bob;START
Bob;1
Carson;START
Alice;15
Carson;6
David;START
David;24
Evil;START
Evil;24
Evil;START
Evil;18
Fiona;START
Честно говоря, я не знаю, как обработать этот ввод, чтобы получить из него отдельные строки как пары элементов, поэтому я плохо справился с задачей. Однако мне все еще интересно учиться.
Я пробовал обрабатывать ввод с помощью split(";").
Есть идеи, как разобрать этот ввод?
Вывод должен быть 11;Evil;SHORTENED_JOB, потому что Evil запустил задание с идентификатором меньше, чем у предыдущего запущенного задания (идентификаторы инкрементные), где 11 - номер строки.
Входными данными является файл, содержащий текст; считывать содержимое файла в соответствующие внутренние структуры данных. Использование «строкового массива» в любых инструкциях, хотя и прискорбно, не подразумевает реализации и было бы лучше передано как «n строк, как указано в первой строке, где каждая строка представляет собой пары разделенных точкой с запятой… и т. д. etc »- решения будут использовать соответствующие структуры данных для языка специфический.






Подробностей недостаточно, но я предполагаю, что первая строка - это количество примеров, а следующие строки содержат кортежи, которые, по сути, являются указанным вами строковым массивом.
Я бы пошел по следующему пути:
with open ("input.txt") as f:
no_examples = f.readline().strip()
array = []
for i in range(no_examples):
example = f.readline().strip().split(';')
array.append(example)
Присваивание переменной example удаляет невидимые символы конца строки и разделяет результат разделителем ;.
with open("your_file.txt") as f:
array = [line.rstrip().split(";") for line in f]
Объяснение:
Первая строка - это безопасный способ открыть текстовый файл. (После работы файл автоматически закроется).
f в конце этой строки становится именем объекта повторяемый - с каждой итерацией мы получаем полная следующая строка из открытого текстового файла.
Теперь мы используем этот объект для создания списка с помощью понимания списка (вторая строка) - см. Конец этой строки:
for line in f]
Поскольку line содержит полную строку, т.е. е. с завершающим символом новой строки (\n) мы используем метод rstrip(), чтобы обрезать его:
[line.rstrip() for line in f]
И, наконец, мы разбиваем каждую такую строку на список (используя символ-разделитель ;)
[line.rstrip().split(";") for line in f]
и присваиваем результат переменной array:
array = [line.rstrip().split(";") for line in f]
Тест:
from pprint import pprint
pprint(array)
Выход:
[['13'], ['Alice', 'START'], ['Bob', 'START'], ['Bob', '1'], ['Carson', 'START'], ['Alice', '15'], ['Carson', '6'], ['David', 'START'], ['David', '24'], ['Evil', 'START'], ['Evil', '24'], ['Evil', 'START'], ['Evil', '18'], ['Fiona', 'START']]
Примечание:
Первая строка вашего текстового файла содержит число 13 - вероятно, это количество оставшихся строк. Если вы хотите проигнорировать это, просто добавьте [1:] во вторую строку кода:
with open("your_file.txt") as f:
array = [line.rstrip().split(";") for line in f][1:]
«массивы» на самом деле не используются в Python (я имею в виду, что они есть, но вы их не используете, потому что списки намного лучше). Какой должен был быть результат?