8. august 2018

Nolo Ouvert eller Solo?

Jeg fik disse usædvanlige kort i Syd med udspil under turneringsspil forleden. Spørgsmålet er, om man skal melde nolo ouvert eller solo i ruder?
Jeg er normalt en fortaler for det synspunkt, at nolo ouvert skal meldes oftere, end det almindeligvis bliver gjort. Jeg har sågar hørt turneringsspillere sige, at de kun melder nolo ouvert, hvis kortene ikke KAN tabe, dvs. er teoretisk oplagte. Det er en meningsløs holdning efter min mening, I så fald kunne vi lige så godt afskaffe meldingen.
Tilbage til kortene. Hvis der ikke var en kæmpe rudersolo i disse kort, ville jeg overhovedet ikke betænke mig på at melde nolo ouvert på dem. Men med disse kort er det svært at vurdere, om man skal tage soloen istedet for ouvert. Min mavefornemmelse var den aften, at den solo stort set aldrig taber – især da man har udspil og kan spille manillen ud. De resterende fire rudertrumfer SKAL sidde på samme hånd, for at kortene kan tabe som solo. Så gør den det til gengæld også med garanti, med mindre der spilles forkert af modspillerene. Ouvert vil også vinde rigtig tit, da man har udspilsfordelen og kan spille hjerter 5 ud – med mindre man har lyst til at friste skæbnen. Men hvor ofte vinder den?
I L’hombre er statistik faktisk meget vigtigt, især fordi vi spiller med en talon. Så overvejelser om køb og salg af kort, samt fordeling af trumfer og fusere skal man overveje nøje, hvis man vil spille god l’hombre.
Jeg besluttede mig derfor efterfølgende for at regne lidt på det, og her kommer der nogle udregninger, der kan kaste lys over sagen. Først kigger jeg på, hvor ofte soloen vinder.

Solo i ruder

Jeg går i det følgende ud fra, at der ikke går trumfer ud under købet i vest og øst. Hvis der gør, er soloen vundet.
Når der er købt, er der 18 kort til fordeling mellem øst og vest. Antallet af kombinationer eller måder kortene kan fordeles på mellem øst og vest udregnes nu.
Metoden anvender basal mængdelære, men forklares lige indledningsvis. Vi leger at øst skal trække 9 kort ud af de 18, der er tilbage efter købet. Ved et første kort er der 18 muligheder, ved det andet kort 17 muligheder osv. ned til 10 muligheder for det sidste kort. Det giver et meget stort antal permutationer, som det hedder.

18*17*16*15*14*13*12*11*10 = 17643225600

Over 17 millioner muligheder. Men her er alle PERMUTATIONER med. Det betyder kort sagt følgende: Antag at øst kun skal trække to kort. Han trækker spar to og derefter klør 6. Det er en mulighed. Han kunne også have trukket klør 6 og derefter spar 2. Det er også en mulighed. Men da vi I l’hombre er ligeglade med den rækkefølge, vi får kortene i, reduceres dette til 1 KOMBINATION istedet for 2 PERMUTATIONER.
I det følgende anvendes notationen

n!

istedet for at skrive n * (n-1) * (n-2)* … * 2 * 1. Det kaldes også fakultet.

18*17*16*15*14*13*12*11*10 kan skrives således

18!/9!

da de 9*8*…*1 over brøkstregen divideres ud med det samme udtryk under brøkstregen.
Dette er altså antallet af mulige permutationer for østs hånd(og ligeledes for vest I øvrigt). For at få antallet af kombinationer for østs hånd, som vi jo er interesseret i, divideres dette med antallet af måder, som østs hånd kan trækkes på, og det er 9! Antallet af kombinationer for østs hånd er altså

18!/(9!∗9!)

hvilket giver 48620.
Nu skal vi udregne, på hvor mange måder øst kan have alle trumferne. Vi antager derfor, at han har alle fire trumfer og blot skal trække de fem resterende kort. Det kan gøres på

14!/(9!∗5!) = 2002 måder.

Vest kan få alle trumferne på samme antal måder, hvilket vil sige, at der er 4004 måder, hvorpå alle trumferne sidder på en hånd. Det er altså

4004/48620 = 0.082352941,

altså ca. 8.2%, hvor soloen taber. Jeg antager, at soloen, hvis den taber, vil gå kruk i 50% af tilfældene, et gennemsnitligt tab på 3½ point.
Så I 8.2% af tilfældene, taber syd 3½ points. I 91.8% af tilfældene, vinder han 3 points. Det giver

(91.8∗3−8.2∗3.5)/100 = 2.467

Så rudersoloen giver gennemsnitligt en gevinst på ca. 2½ point.

Nolo Ouvert

Nu kommer vi så til den den anden melding, nolo ouvert, hvor jeg antager, at hjerter 5 spilles ud. Eller hvad..?
Indledningsvis kunne det være interessant, også at vide, hvor ofte den taber, hvis man spiller ruder 7 ud!
Det viser sig, når jeg er færdig med at regne, at risikoen faktisk er mindre end risikoen for at få stik på hjerter 5. Men, men, men… Problemet med dette udspil er selvfølgelig, at selvom man IKKE får stik på ruder 7, så giver man modspillerne chancen for at spille en ned på hjerter 5, selvom de ikke kunne have gjort det, hvis man havde startet med den! Det samlede antal mulige antal talonkombinationer er:

31!/(18!∗13!) = 206253075

Antal talonkombinationer, hvor både ruder konge og dame er i talonen er:

29!/(18!*11!) = 34597290

Så risikoen for at gå ned, ved at spille ruder 7 ud er:

34597290/206253075 =0.168

Altså knap 17%. Men lad være med at spille ruder 7 ud, ikke? Videre til det korrekte udspil.
Ouvert’en kan gå ned på 3 forskellige måder, hvis hjerter 5 spilles ud:

1) Begge modspillere, A og B, er renonce i hjerter
2) A er renonce i hjerter og B har hjerter 6 eller hjerter 7 eller begge – eller omvendt.
3) A har hjerter 6 og B hjerter 7 – eller omvendt.

I det følgende, bliver tingene mere komplicerede, da der er flere forskellige muligheder, undtagelser og så videre. Så hvis du har hængt på indtil nu, så vil jeg spare dig for mere fakultets-futtelihut. I stedet for vil jeg introducere en anden måde at lave matematik på, nemlig ved brug af computeren. Jeg har skrevet et lille program, der simulerer den mulige fordeling af kortene i øst, vest og talon 1 million gange. Programmet tager en liste med tal, der repræsenterer de kort, som syd IKKE har:

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]

Nu leger vi, at de første 9 pladser i listen er østs kort, de næste 9 pladser er vests kort og de sidste 13 pladser er talonen. Vi leger desuden, at tallene 1-9, ikke pladserne, er kortene hjerter 7, 6, 4, 3, 2, es, knægt, dame og konge.
Derefter ”blander” computerprogrammet listen ved at bruge en god tilfældighedsgenerator. Man kunne f.eks overveje at bruge den elektromagnetiske baggrundsstøj fra universet til det… 🙂 Pointen er, at de bliver blandet GODT – bedre end vi ville kunne gøre det.
Efter blandingen undersøger programmet så, hvor de forskellige kort med betydning for ouvert’en er placeret. Om det er i øst, vest eller talon. Det gøres så 1 million gange, og for hver gang tælles der op, hvordan det gik. Det giver os følgende resultater for de tre tilfælde nævnt ovenfor:

Tilfælde 1: 0.000036
Tilfælde 2: 0.032525
Tilfælde 3: 0.174902

Det viser os, når vi lægger disse procenter sammen, at i 20.7% af tilfældene taber ouvert’en, når hjerter 5 spilles ud.
Det gennemsnitlige udbytte for nolo ouvert er altså:

6*0.793 – 6*0.207 = 3.516

Så nolo ouvert giver gennemsnitligt en gevinst på ca. 3½ point.

Konklusion

Min antagelse var altså forkert.
Mavefornemmelsen var ikke helt forkert, men heller ikke helt rigtig. Soloen taber faktisk oftere, end jeg havde troet – aldrig er et stort ord at bruge om 8%. Og nolo ouvert på de kort taber ikke helt så ofte, som jeg troede. Man SKAL spille nolo ouvert på de kort, selvom det langt fra er så indlysende, som nogen måske troede.
Men nu ved vi, hvorfor….

I det følgende er der en kopi af programmet, der er skrevet i programmeringssproget Python. Jeg har skrevet et tilsvarende program til undersøgelse af rudersoloen, og resultaterne bekræfter mine tal i starten af artiklen.
Hvis nogen har lyst til at prøve programmet, kan i kan evt. hygge jer med at køre det her:

https://www.jdoodle.com/python3-programming-online

Bare kopier programteksten og sæt den ind i web-sidens editor og tryk på knappen “Execute”..
Hvis det giver knuder, så husk at indrykninger er vigtige i Python. Måske skal i sætte variablen “iterations” lidt ned…..

Hans Otto Lunde
ho@egmont-hs.dk / 61309336

———————————————————————————————————————————————————

#!/usr/bin/python
import random
from decimal import Decimal

# 1-9 er hjerter 7,6,4,3,2,es,knaegt,dame,konge
# oest er list[0-8], vest er list[9-17], talon er list[18-30], der indekseres fra 0 til 30

list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
case1 = 0
case2 = 0
case3 = 0
iterations = 1000000

print(“Denne haand testes for nolo ouvert med udspil i syd:”)
print()
print(“hjerter 5,ruder 7,ruder 6,ruder 5,ruder 4,ruder 3,ruder 2,ruder knaegt,ruder es”)
print()
print(“Case 1: Begge modspillere er renonce i hjerter.”)
print(“Case 2: A er renonce i hjerter og B har hjerter 6 eller 7 – eller omvendt.”)
print(“Case 3: A har hjerter 6 og B hjerter 7 – eller omvendt.”)
print()
print(“Der testes “, iterations, “iterationer”)
print()

for i in range(0,iterations):
random.shuffle(list)
oest_har_h6 = False
oest_har_h7 = False
vest_har_h6 = False
vest_har_h7 = False
oest_har_hjerter = False
vest_har_hjerter = False
for n in range (0,31):
if n < 9 and list[n] < 10:
oest_har_hjerter = True
if n > 8 and n < 18 and list[n] < 10:
vest_har_hjerter = True
if n < 9 and list[n] == 1:
oest_har_h6 = True
if n < 9 and list[n] == 2:
oest_har_h7 = True
if n > 8 and n < 18 and list[n] == 1:
vest_har_h6 = True
if n > 8 and n < 18 and list[n] == 2:
vest_har_h7 = True
if (not oest_har_hjerter) and (not vest_har_hjerter):
case1 = case1 + 1
if (not oest_har_hjerter) and (vest_har_h6 or vest_har_h7):
case2 = case2 + 1
if (not vest_har_hjerter) and (oest_har_h6 or oest_har_h7):
case2 = case2 + 1
if (oest_har_h6 and vest_har_h7) or (oest_har_h7 and vest_har_h6):
case3 = case3 + 1

print(“Case 1: “,case1,” “,Decimal(float(case1)/float(iterations)))
print(“Case 2: “,case2,” “,Decimal(float(case2)/float(iterations)))
print(“Case 3: “,case3,” “,Decimal(float(case3)/float(iterations)))