4 Bilder 1 grep

Thu 2014-11-06

Es soll ja Leute geben, die in ihrer Freizeit zu vier verwandten Bildern ein Wort suchen, dass alle vier Bilder beschreibt.

Die Länge des Wortes ist vorgegeben, ebenso 16 Buchstaben, von denen jeder genau einmal zur Bildung des Wortes verwendet werden darf.

So etwas muss sich doch mit Computerhilfe (zumindest schneller) lösen lassen.

Die »quick and dirty« Variante mit Wörterbuch und regulärem Ausdruck braucht 2 Zeilen.

Angenommen wir haben die Buchstaben CKHOETRYGYXß und suchen ein Wort mit 4 Buchstaben. Die Bilder zeigen einen Hai, eine riesige Flasche, einen noch riesigeren Schuh und einen Saurier mit langem Hals.

ludger@abulafia~%: aspell -l de_DE dumpmaster > wordlist
ludger@abulafia~%: grep -Ei ^'ckhoetrygyxß{4}(/|$)' wordlist
Chor/ST
Echo/S
echt/ACU
Ecke/N
Egge/N
eher
Ehre
ergo
Exot/PF
Geck/P
Gote/NF
Gott/T
Grog/S
groß/A
Heck/EPS
Heer/EPST
Herr/FNP
Hexe/N
Hoch/S
hoch
hohe/A
Hort/SEPT
keck/AC
Koch/S
Otto/S
Reck
roch/Z
Rock/ST
Rohr/EPST
Roth
Teer/S
Text/EPTS
Theo/S
Thor/S
Togo/S
Tote/NR
Toto/S
Trog/ST
trog/Z
York/S

(Anmerkung: Der Buchstabensalat hinter dem / kommt von aspell)

Und siehe da: Das Wort »groß« ist die Lösung.

Verpackt man das ganze noch in ein shell-skript, ist es etwas komfortabler zu nutzen:

#!/bin/bash

if [ $# -lt 2 ]
then echo "usage: $0 characters <n> "
else grep -Ei "^[$1]{$2}(/|$)" wordlist
fi

Das ganze hat natürlich noch den Schönheitsfehler, dass auch Wörter gefunden werden, in denen ein nur einmal gegebener Buchstabe mehrfach vorkommt. Der geneigte Leser mit besseren RE-Kenntnissen und einem Verbesserungsvorschlag möge einen Kommentar am Ende dieser Seite hinterlassen.

Aber nur um eine Idee zu möglicherweise passenden Wörtern zu bekommen ist das gezeigte Vorgehen schon praktisch. Sicher kann man die gefundenen Wörter jetzt noch auf die korrekte Anzahl der verwendeten Buchstaben hin überprüfen, aber dann sind es ja nicht mehr nur 2 Zeilen und somit schon wieder mehr Arbeit.

Tags:

This text by Ludger Sandig is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.