Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z).
Необходимо найти строку, содержащую наименьшее количество
Пример. Исходный файл:
NINA
NABLAB
ANAAA
В этом примере в первой строке две
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Для решения этой задачи объявим
Приведём решение данной задачи на языке PascalABC.
var
arr: array ['A'..'Z'] of integer;
i, min, countN, maxC: integer;
j, res: char;
str: string;
f: text;
begin
min := 100000;
maxC := 0;
countN := 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] = 'N') then countN := countN + 1;
arr[str[i]] := arr[str[i]] + 1;
end;
if min > countN then begin
min := countN;
maxC := 0;
for j := 'A' to 'Z' do begin
if (maxC <= arr[j]) and (j <> 'N') then begin
maxC := arr[j];
res := j;
end;
end;
end;
for j := 'A' to 'Z' do arr[j] := 0;
countN := 0;
end;
writeln(res);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — Y.
Ответ: Y.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём другое решение на языке Python.
f = open("24.txt")
s = f.readlines()
a = [0] * 26
min = 100000000
maxi = 0
for i in range(len(s)):
str = s[i]
if str.count('N') < min:
min = str.count('N')
s1 = str
for i in range(len(s1) - 1):
a[ord(s1[i]) - 65] += 1
for i in range(26):
if a[i] >= maxi:
maxi = a[i]
index = i
print(chr(index + 65))
Приведём решение Юрия Лысакова на языке Python.
f = open('24.txt')
a = f.readlines()
r = [i.count('N') for i in a]
r1 = r.index(min(r))
b = a[r1]
t = b.count(max(set(b),key = b.count))
c = [chr(i) for i in range(65,91)]
c.reverse()
for i in c:
if b.count(i) == t:
print(i)
break
Приведём решение Никиты Поливанова на языке Python.
from statistics import mode
s = [str(i) for i in open('24.txt')]
s1 = [i.count('N') for i in s]
print(mode(s[s1.index(min(s1))]))
Приведём решение Сергея Соколова на языке Python.
s = open('24.txt').readlines()
c = []
for i in range(0, len(s)):
n = s[i].count('N')
c.append(n)
s = s[c.index(min(c))]
c = {}
for i in range(0, len(s)):
if not s[i] in c: c[ s[i] ] = 0
c[ s[i] ] += 1
c = dict(sorted(c.items(), reverse=True))
print(max(c, key=c.get))
Приведём решение Акима Савельева на языке Python.
import collections
f=open('24.txt').readlines()
q=[x.count('N') for x in f]
s=f[q.index(min(q))]
print(collections.Counter(s))
Приведём решение Юрия Красильникова на языке Python.
a=sorted([s for s in open('24.txt')],key=lambda x: x.count('N'))
b=sorted([(a[0].count(c),c) for c in set(a[0])])
print(b[-1][1])

