Springen naar inhoud

Probleem over logica, woorden


  • Log in om te kunnen reageren

#1

simpleuser

    simpleuser


  • 0 - 25 berichten
  • 5 berichten
  • Gebruiker

Geplaatst op 26 januari 2011 - 01:03

Hallo iedereen,

ik heb een hele ingewikkelde vraag over een heel simpel probleem. Stel je hebt de volgende gegevens:

advocaat 108
baileys 98
bier 63
cognac 80
gin 51
grappa 102
jenever 91
malibu 91
metaxa 92
ouzo 7
pisang 97
ambon 73
port 64
rum 43
safari 97
sherry 82
tequila 100
tia 63
maria 101
vieux 48
wijn 98
o 1

daarachter staan de waarden van de som van de letters, elk letter heeft een unieke waarde tussen 1 en 26 (dus geen andere letter dan o kan het getal 1 krijgen). Nu is de vraag, wat is de waarde van k?

Mijn approach was als volgt, elk woord is eigenlijk een lineaire vergelijking, ik dacht stop dit in Mathematica en dan krijg je een versimpelde versie waarbij ik met Haskell brute force functies kan schrijven die binnen nu en 10 minuten eindigen. Dat was mij ook gelukt, alleen kwam ik tot de verbazing dat er geen oplossingen hiervoor waren ;). Klopt dit?

De mathematica expressie:

Solve[{3*a+d+v+o+c+t==108,b+a+i+l+e+y+s==98,b+i+e+r==63,2*c+o+g+n+a==80,g+i+n==5
1,g+r+2*a+2*p==102,j+3*e+n+v+r==91,m+a+l+i+b+u==91,w+i+j+n==98,v+i+e+u+x==48,m+2
*
a+r+i==101,t+i+a==63,m+e+t+2*a+x==92,2*o+u+z==7,p+i+s+a+n+g==97,a+m+b+o+n==73,p+
o
+r+t==64,r+u+m==43,s+2*a+f+r+i==97,s+h+e+2*r+y==82,t+e+q+u+i+l+a==100,o==1}, {a,b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}]

Dit levert alles uitgedrukt in a b of c op en dan run ik een brute force erdoor heen. Maar er komt niks uit =(.

Misschien een andere aanpak?

Veranderd door Jan van de Velde, 26 januari 2011 - 08:49


Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 26 januari 2011 - 01:44

In principe is je aanpak logisch, maar met logisch redeneren geraak je misschien ook al een einde:

o=1
u en z zijn 2 en 3

i en n zijn 23 en 24 (of vice versa)
w en j zijn 25 en 26 (of vice versa)

g=4

a>=19
t>=19

m,r>=19



Dit heb ik gevonden door enkel te kijken naar de sommen en te weten dat een getal maximum 26 is en dat elke letter correspondeert met een unieke waarde.

Op die manier kan ik al 1-4 en 19-26 uitsluiten!

In welk kader krijg je deze opdracht? Als het een programmeeropdracht is, dan is de verwachte aanpak allicht anders dan bij een 'gewoon' raadsel.

Dit levert alles uitgedrukt in a b of c op


Kan je dat stelsel eens geven?

EDIT: je hebt 22 vergelijkingen, in 26 onbekenden, bijgevolg zijn er vrije variabelen, en heeft het stelsel wel een oplossing, tenzij er hierboven tegenstrijdige voorwaarden gegeven zijn, wat je kan zien door de matrix op te stellen en te rij-reduceren. Krijg je een valse rij, i.e. (00...00|1), dan is er geen oplossing.

Anders kan je keuzes maken voor de vrije onbekenden en bekom je oneindig veel oplossingen. Door de voorwaarde dat elke letter een unieke waarde moet krijgen, zal dit niet het geval zijn (je legt immers nog 25 voorwaardes op).
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#3

simpleuser

    simpleuser


  • 0 - 25 berichten
  • 5 berichten
  • Gebruiker

Geplaatst op 26 januari 2011 - 12:29

Hallo,

eigenlijk is dit een puzzel die een vriend van mij aan mij gaf, maar ik besloot het om het op te lossen maar het mislukte. De vergelijkingen die ik gebruikte zijn als volgt:

3*a+d+v+o+c+t == 108 (== wordt gebruikt in Mathematica om het gelijk te stellen). Ik liet het Mathematica oplossen, de vergelijking komt van a + d + v + o + c + a + a + t = 108, deze heb ik vereenvoudigd. Hierdoor kreeg ik van Mathemtica de volgende oplossing (zie bijlage).

Bestaat er verder geen methode dan op basis van logica dat op te lossen? Niet door middel van een algemene methode?

De bijlage is trouwens de oplossing van mijn matrix, zoals je kunt zien kan ik elk getal een waarde geven omdat het gebasseerd is op a b en c. Hierdoor heb ik een kleine zoekruimte en kan ik alles af gaan.

Bijgevoegde miniaturen

  • solve.png

Veranderd door simpleuser, 26 januari 2011 - 12:31


#4

simpleuser

    simpleuser


  • 0 - 25 berichten
  • 5 berichten
  • Gebruiker

Geplaatst op 26 januari 2011 - 23:19

PS: te laat om mijn post te bewerken, maar hoe komt u eigenlijk aan die g = 4?

#5

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 27 januari 2011 - 01:45

Dat volgt uit gin=51 en de voorwaarden die ik eerder had gevonden dat g en n 23 en 24 waren of vice versa. 23+24=47, 51-47=... ;)
"C++ : Where friends have access to your private members." — Gavin Russell Baker.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures