Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Anagramme (Schüttelwörter) gruppieren (Schleifen)

Ein Anagramm ist ein Wort, welches durch Umstellen der Buchstaben ein neues (sinnvolles) Wort ergibt (Permutation). Gegeben ist eine Liste aus Wörtern, welche nach gleichen Anagrammen gruppiert werden soll. Die Reihenfolge der Ergebnisse ist unerheblich. Groß- und Kleinschreibung soll nicht unterschieden werden. Wörter, die einzeln vorkommen – also keinen Wortpartner haben – sollen ebenfalls in die Ergebnisliste aufgenommen werden.

 

liste = [erst, brei, teer, achse, rest, bier, brie, sachse]

 

1 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (1)

JKooP 1. November 2022 10:47   reply report
Da waren die Finger schneller als der Kopf. Bitte "Sachse" durch "Asche" ersetzen.

5 Lösung(en)

function haveSameLetters(str1, str2) {
  str1 = str1.toLowerCase(); str2 = str2.toLowerCase();
  for (let i = 0; i < str1.length; i++)
    if (str2.indexOf(str1[i]) == -1) return false;
  return true;
}

function groupSameLetters(arr) {
  let out = [];
  while (arr.length > 1) {
    let cur = [];
    cur.push(arr.shift());
    for (let i = 0; i < arr.length; i++)
      if (haveSameLetters(cur[0], arr[i])) {
        cur.push(arr[i]);
        arr.splice(i, 1);
        i--;
      }
    out.push(cur);
  }
  return out;
}

let l = 'erst brei teer achse rest bier brie sachse'.split(' ');
console.log(groupSameLetters(l));
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

def group_anagrams(l):
    from collections import Counter, defaultdict
    d = defaultdict(lambda: [])
    for word in l:
        d[frozenset(Counter(word.lower()).items())].append(word)
    return list(d.values())

print(group_anagrams(["erst", "brei", "teer", "achse", "rest", "bier", "brie", "asche"]))
                

Lösung von: Name nicht veröffentlicht

// C++ 17
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using v_s = std::vector<std::string>;
using vv_s = std::vector<v_s>;

vv_s group_anagrams(const v_s& vec, bool caseSensitive = false) {
    vv_s result;
    std::unordered_map<std::string, v_s> map;
    for (auto i{ 0 }; i < vec.size(); ++i) {
        auto tmp{ vec[i] };
        if(!caseSensitive) std::transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
        std::sort(tmp.begin(), tmp.end());
        map[tmp].push_back(vec[i]);
    }
    for (const auto& item : map)
        result.push_back(item.second);
    return result;
}

std::ostream& operator<<(std::ostream& os, const vv_s& ana) {
    for (const auto& grp : ana) {
        for (const auto& item : grp)
            os << item << " ";
        os << "\n";
    }
    return os;
}

int main() {
    const v_s ana{ "erst", "Brei", "teer", "achse", "rest", "bier", "brie", "ASCHE" };
    std::cout << group_anagrams(ana);
}
                

Lösung von: Jens Kelm (@JKooP)

// NET 6.x | C# 10.x | VS-2022
static List<List<string>> GroupAnagrams(List<string> lst, bool caseSensitive = false) {
    var dic = new Dictionary<string, List<string>>();
    for (var i = 0; i < lst.Count; i++) {
        var tmp = lst[i];
        if (!caseSensitive) tmp = tmp.ToLower();
        var str = new string(tmp.OrderBy(x => x).ToArray());
        if (dic.ContainsKey(str)) dic[str].Add(lst[i]);
        else dic.Add(str, new List<string> { lst[i] });
    }
    return dic.Select(x => x.Value).ToList();
}

var lst = new List<string> { "erst", "Brei", "teer", "achse", "rest", "bier", "brie", "ASCHE" };
foreach (var item in GroupAnagrams(lst))
    Console.WriteLine(string.Join(", ", item));
                

Lösung von: Jens Kelm (@JKooP)

liste,D=['erst', 'brei', 'teer', 'achse', 'rest', 'bier', 'brie', 'asche'],{}
for a in [y for y in sorted([''.join(sorted(i)) +  i for i in liste])]:
        D[a[:len(a)//2]]=D[a[:len(a)//2]]+(a[len(a)//2:],) if a[:len(a)//2] in D else (a[len(a)//2:],)
print([list(D[i]) for i in D])

                

Lösung von: rob ert (tub)

Verifikation/Checksumme:

loesung = [ [teer], [brei, bier, brie], [achse, sachse], [erst, rest] ]

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit:
Schwierigkeit: Mittel
Webcode: xrq0-0k2z
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen