Das Spiel
Jeder kennt den nicht transitiven Zusammenhang: Papier wickelt Stein, Stein schlägt Schere, Schere schneidet Papier.
Die Spielentscheidung von Spieler1 steht in A1 und von Spieler2 in B1.
Dann lautet, wenn die möglichen Einträge mittels Daten Gültigkeit auf eben "Papier, Stein, Schere" begrenzt sind, die Formel für den Gewinner:
Normale Formel: ="Spieler"&REST(LÄNGE(WECHSELN(A1;"ch";))-LÄNGE(WECHSELN(B1;"ch";));3)
Matrixformel: {="Spieler"&REST(SUMME(LÄNGE(WECHSELN(A1:B1;"ch";))*{1.-1});3)}
Warum so etwas anscheinend Abwegiges?
Wenn Schere um "ch" erleichtert wird, liegen 3 Strings vor, die sich um genau 1 Zeichen in der Länge unterscheiden (6, 5, 4). Die Reihenfolge ist dabei egal, denn bei 3 Begriffen gibt es nur 2 mögliche Reihenfolgen (Endloswiederholungen), die man mit der Subtraktionsreihenfolge der beiden Terme in den Griff bekommt. REST sorgt überhaupt erst für den "Kreisverkehr" in der Beurteilung.
Die Entdeckung (am 1.12.2006)
Ein Glück, dass es auf Deutsch so unproblematisch geht. Auf Englisch kommt man mit "paper, stone, scissors" nicht so einfach davon. Denn bei Ausgangslängen von 5, 5, 8 müssen mindestens 2 Worte verändert werden, um obige Bedingung zu erfüllen. Killt man also "s" und "n", ergeben sich mit "paper, toe, cior" (Längen 5, 3, 4) die gewünschten Werte.
Das geht eigentlich nur mit zweifachem, verschachteltem WECHSELN innerhalb der o.g. Formeln. Seltsamerweise funktioniert hier aber auch:
Matrixformel: {="Player"&REST(SUMME(LÄNGE(WECHSELN(A1:B1;{"s";"n"};))*{-1.1});3)}
Aufklärung des Sachverhalts: {SUMME(LÄNGE(WECHSELN("stone";{"s";"n"};)))} ergibt 8, da das doppelt angegebene, aber nur einfach erlaubte Wechselargument zu doppeltem Summieren zwingt. Jeweils einmal werden in den "Summanden" "s" und "n" ersetzt, so dass aus Gesamtlänge 10 nun 8 wird.
{SUMME(LÄNGE(WECHSELN(A1:B1;{"s";"n"};)))} mit A1: "stone" und B1: "scissors" summiert nun sogar 2x2 Längen, nämlich 4+4+4+8 = 20 (statt ungeWECHSELt 26). Wichtig dabei: A1:B1 ist eine Spaltendimension, {"s";"n"} eine Zeilendimension! {"s"."n"} wäre also falsch.
Durch geschickten Einsatz von {-1.1} und der Funktion REST() gelangt man dann zum Ziel.
Der Brunnen (am 2.12.2006)
Nimmt man den Brunnen ("Schere und Stein plumpsen hinein, ein Stück Papier deckelt ihn hier") hinzu, ergibt sich folgende Formel:
Matrixformel: {="Spieler"&WAHL(SUMME(VERGLEICH(LINKS(A1:B1;2);{"Pa";"Br";"St";"Sc"};)*{-1.1})+4;1;2;2;0;1;1;2)}
gekürzt von Klaus "Perry" Pago am 2.12.2006:
Matrixformel: {="Spieler"&WAHL(SUMME(CODE(WECHSELN(A1:B1;"S";))*{-1.1})/17+4,2;2;2;1;0;2;1;1)}
Generalisiert man das Problem (gibt man den Gegenständen Rangzahlen: P=1, B=2, St=3, Sc=4), dann:
Normale Formel: ="Spieler"&WAHL(B1-A1+4;1;2;2;0;1;1;2)
P-->---B |v v| / | \ / | --->--St-->-Sc-->-P- usw. ^ \/ v / / / | /\ | / ^ / | / \ | / / / Sc--<-St P-->--B-->---
Diagramme: 6 statt vorher 3 Beziehungen - Überlegenheitsfolge