
Реализовать любом языке из списка: Си/C++/C#/Pascal/Basic/JavaScript/FASM. Задано для развлечения
=)) Дан список слов, и одно слово.Список слов можно задать в любом виде: прочитать из файла (тогда нужно указать формат файла, или приложить его пример), ввести с клавиатуры, задать константой, и т.д.Слово должно вводиться с клавиатуры.Проверить, присутствуют ли в списке слова, состоящие из тех же букв (или их части), из которых состоит слово. Порядок букв не имеет значения. В искомых словах может быть меньше букв, чем в исходном. Как по количеству, так и по разнообразию. То есть, нельзя искать слова с тремя буквами "е", если в слове их только две, но можно с двумя и с одной.Пример:Список слов: рыба, рак, щука, лебедь, карась, пескарь, баня, бубен, столб, баян, барыня.Слово: рабыняВывод программы: рыба, баня, баян, барыня

Ответы на вопрос

===== PascalABC.NET =====
begin
var СписокСлов := ReadlnString('Список слов через пробел:').ToWords;
var ИсходныйСловарь := new Dictionary<char, integer>;
var РабочийСловарь := new Dictionary<char, integer>;
foreach var Символ in ReadlnString('Слово:') do
ИсходныйСловарь[Символ] := ИсходныйСловарь.Get(Символ) + 1;
var СтрокаВывода: string;
foreach var Слово in СписокСлов do
begin
foreach var Символ in Слово do
РабочийСловарь[Символ] := РабочийСловарь.Get(Символ) + 1;
var МожноПостроитьСлово := True;
foreach var ЭлементРабочегоСловаря in РабочийСловарь do
begin
var Ключ := ЭлементРабочегоСловаря.Key;
var ПределПовторовБуквы: integer;
if ИсходныйСловарь.TryGetValue(Ключ, ПределПовторовБуквы) then
begin
if ЭлементРабочегоСловаря.Value > ПределПовторовБуквы then
begin
МожноПостроитьСлово := False;
break
end
end
else
begin
МожноПостроитьСлово := False;
break
end
end;
if МожноПостроитьСлово then
begin
if СтрокаВывода <> '' then
СтрокаВывода += ', ';
СтрокаВывода += Слово
end;
РабочийСловарь.Clear;
end;
Println(СтрокаВывода)
end.




Вот пример реализации данной задачи на языке JavaScript:
javascriptfunction findWords(word, wordList) {
var sortedWord = word.toLowerCase().split('').sort().join('');
var result = [];
for (var i = 0; i < wordList.length; i++) {
var sortedListWord = wordList[i].toLowerCase().split('').sort().join('');
if (sortedListWord.includes(sortedWord)) {
result.push(wordList[i]);
}
}
return result;
}
var wordList = ['рыба', 'рак', 'щука', 'лебедь', 'карась', 'пескарь', 'баня', 'бубен', 'столб', 'баян', 'барыня'];
var word = prompt('Введите слово:');
var matchingWords = findWords(word, wordList);
alert('Совпадающие слова: ' + matchingWords.join(', '));
Этот код принимает список слов и одно слово от пользователя. Затем он проверяет каждое слово из списка, приводя их к нижнему регистру, сортируя буквы в алфавитном порядке и сравнивая их с отсортированным введенным словом. Если в слове из списка присутствуют все буквы из введенного слова (в любом порядке), то оно добавляется в результирующий список. Наконец, программа выводит список совпадающих слов на экран.
Вы можете скопировать этот код в файл с расширением .html
и запустить его в любом современном браузере, либо выполнить его в консоли разработчика на странице веб-сайта.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili