Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z).
Необходимо найти строку, содержащую наименьшее количество
Пример. Исходный файл:
GIGA
GABLAB
AGAAA
В этом примере в первой строке две
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Для решения этой задачи объявим массив arr, в котором будем считать количество каждого символа в строке,
Приведём решение данной задачи на языке PascalABC.
var
arr: array ['A'..'Z'] of integer;
i, min, countG, maxC: integer;
j, res: char;
str: string;
f: text;
begin
min := 100000;
maxC := 0;
countG := 0;
assign(f,'C:\24.txt');
reset(f);
for j := 'A' to 'Z' do arr[j] := 0;
while not eof(f) do begin
readln(f, str);
for i:= 1 to str.Length do begin
if (str[i] = 'G') then countG := countG + 1;
arr[str[i]] := arr[str[i]] + 1;
end;
if min > countG then begin
min := countG;
maxC := 0;
for j := 'A' to 'Z' do begin
if (maxC <= arr[j]) then begin
maxC := arr[j];
res := j;
end;
end;
end;
for j := 'A' to 'Z' do arr[j] := 0;
countG := 0;
end;
writeln(res);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — T.
Ответ: T.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Витаса Ремейкиса на языке Python.
file = open("24.txt", "r")
a = [10**6]*91
for i in range(1000):
st = file.readline()
d = [0]*91
for j in range(len(st)):
d[ord(st[j])] += 1
if d[71] < a[71]:
for k in range(len(d)):
a[k] = d[k]
mx = 0
for i in range(len(a)):
if a[i] >= mx:
mx = a[i]
mxchar = chr(i)
print(mxchar)
Приведём решение Фефелова Сергея на языке Python.
file = open("24 (3).txt", "r")
dg = {'G':10**6}
for st in file:
d = {}
for sym in st:
if sym in d:
d[sym] += 1
else:
d[sym] = 1
if d['G'] < dg['G']:
dg = d
print(max(dg, key=dg.get))
Приведём решение Степана Чернявского на языке Python.
from collections import Counter
f = open('24.txt').readlines()
mn = 10**20
temp = ''
for i in f:
if i.count('G') < mn:
mn = i.count('G')
temp = Counter(i).most_common()[0][0]
print(temp)
Приведём решение Юрия Лысакова на языке Python.
f = open('24.txt')
a = [str(i) for i in f]
mini = 1000000
for i in range(len(a)):
k = a[i].count('G')
if k < mini:
mini = k
t = i
print(max(set(a[t]),key = a[t].count))
Приведём решение Сергея Соколова на языке Python.
s = open('24.txt').readlines()
c = []
for i in range(0, len(s)):
g = s[i].count('G')
c.append(g)
s = s[c.index(min(c))] # берём строку с минимальным кол-вом 'G'
c = {}
for i in range(0, len(s)):
if not s[i] in c: c[ s[i] ] = 0
c[ s[i] ] += 1
print(max(c, key=c.get))
Приведём решение Михаила Глинского на языке Python.
f = open('24.txt')
kG = 10**10
for s in f:
if s.count('G') < kG:
kG = s.count('G')
m = [str(i) for i in s]
al = 'QWERTYUIOPASDFGHJKLZXCVBNM'
kb = 0
for i in al:
if m.count(i) > kb:
kb = m.count(i)
B = i
print(B)
Приведём решение Юрия Красильникова на языке Python.
a = [s for s in open('24.txt')]
ming = min([s.count('G') for s in a])
line = [s for s in a if s.count('G')==ming][0]
maxlet = max([line.count(c) for c in line])
print(sorted([c for c in set(line) if line.count(c) == maxlet])[-1])

