Datagurka 0.2

From Datagurka
Jump to: navigation, search

Tanken bakom förslaget Datagurka 0.2

Datagurka 0.1 kan förbättras genom att få datagurkan att tänka mer som en människa, för en människa är mycket smartare än en algoritm. Det är eftersom att människan kan märka ifall instruktionerna man ska följa inte är ett vinnande koncept i förväg än om istället den första algoritmen av datagurkan inte upptäckte det utan gav ut kommandon även om det var ett förlorande koncept. När man spelar spelet så kan man tänka på att alltid försöka hålla det minsta kortet kvar och istället för att lägga det minsta kortet så lägger man den näst största och på så sätt kan man då till slut ha det största och det minsta kortet kvar.

Pseudokod Datagurka 0.2

  1. Ta upp alla dina kort från korthögen.
  2. Kontrollera så att du har 4 stycken kort i handen innan du börjar
  3. Sortera korten.
  4. Ha ditt minsta kort först och ditt största kort sist.
  5. Registrera alla dina kort
  6. Kolla vad personen innan dig la för kort på högen.
  7. Registrera kortet.
  8. Kolla på dina kort och se om du har högre än det kortet motsvarande spelare la.
  9. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga ditt näst största kort.
  10. Men om kortet är högre än ditt näst största kort så lägger du ditt största kort.
  11. Om kortet är större än det också så lägger du ditt minsta kort.
  12. Spela ditt första kort.
  13. Kolla vad personen innan dig la i andra rundan.
  14. Registrera kortet.
  15. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga ditt näst största kort.
  16. Men om kortet är högre än ditt näst största kort så lägger du ditt största kort.
  17. Om kortet är större än det också så lägger du din minsta kort.
  18. Spela ditt andra kort.
  19. Kolla vad personen innan dig la i tredje rundan.
  20. Registrera kortet.
  21. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga ditt näst största kort.
  22. Men om kortet är högre än ditt näst största kort så lägger du ditt största kort.
  23. Om kortet är större än det också så lägger du ditt minsta kort.
  24. Spela ditt tredje kort.
  25. Kolla vad personen innan dig la i fjärde rundan.
  26. Registrera kortet.
  27. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga din näst största kort.
  28. Men om kortet är högre än din näst största kort så lägger du din största kort.
  29. Om kortet är större än den också så lägger du din minsta kort.
  30. Spela ditt fjärde kort.
  31. Nu så är spelet slut
  32. Kom ihåg att du ska alltid prioritera att lägga din näst största kort.

Test av Datagurka 0.2

Om koden till Datagurka 0.2 inte gör samma sak som pseudokoden till Datagurka 0.2 så är det antingen en bugg i koden eller ett fel i pseudokoden. För att testa kan man kopiera in koden nedan på en ny labbet-sida eller klicka på rubriken nedan: Datagurka_0.2#Kod_Datagurka_0.2.

Datagurkan borde ha spelat 12:an istället för 6:an om den hade vilat vinna/få lägsta kortet så möjligt.

Kort i given : 10, 7, 8, 3
Kort DG spelat : 7, 3, 4, 6
DGs sista kort: 12
Vid test så hittade jag en bugg i kort kombinationen [2,4,6,8,10]. Om du börjar med att ha en giv som är högre än två så kommer datagurkan 
att lägga 2 vilket är det minsta kortet och på så sätt så stämmer det inte överens med pseudokoden. 

Kod Datagurka 0.2

<meta charset="utf-8" />
<script src="https://koda.nu/simple.js">
var kort = [0, 0, 0, 0, 0];
var giv  = [0, 0, 0, 0, 0]; 
var spel = [];
var i = 0;
var j = 0;
var k = 0;
kort[0] = prompt ("Datagurkan måste veta värdet på dina fem kort.\n\nVilket värde har ditt första kort?");
kort[1] = prompt ("Vilket värde har ditt andra kort?");
kort[2] = prompt ("Vilket värde har ditt tredje kort?");
kort[3] = prompt ("Vilket värde har ditt fjärde kort?");
kort[4] = prompt ("Vilket värde har ditt femte kort?");
 
text(90, 100, 30, "Inmatade kort är " + kort, "black");
 
giv[0]  = prompt ("Vilket värde har det först spelade kortet?");
 
// varv 1
kort.sort(function(a, b){return a - b});
// 10. Om kortet är större än den också så lägger du din minsta kort.
if (giv[0] > kort[kort.length-1])
  {
  giv[1] = prompt ("Varv 1 spelar datagurkan " + kort[0] + ".\n\nVilket värde har det spelade kortet varv 2?");
  spel[0] = kort.splice(0,1);
  }  
else
  {
// 8. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga din näst största kort.
  if (giv[0] < kort[3])
    {
    giv[1] = prompt ("Varv 1 spelar datagurkan " + kort[kort.length-2] + ".\n\nVilket värde har det spelade kortet varv 2?");
    spel[0] = kort.splice(kort.length-2,1);
    }
// 9. Men om kortet är högre än din näst största kort så lägger du din största kort.
  else
    {
    giv[1] = prompt ("Varv 1 spelar datagurkan " + kort[kort.length-1] + ".\n\nVilket värde har det spelade kortet varv 2?");
    spel[0] = kort.splice(kort.length-1,1);
    }
  }
text(90, 150, 30, "Första kortet är " + spel[0], "black");
 
// varv 2
kort.sort(function(a, b){return a - b});
// 16. Om kortet är större än den också så lägger du din minsta kort.
if (giv[1] > kort[kort.length-1])
  {
  giv[2] = prompt ("Varv 2 spelar datagurkan " + kort[0] + ".\n\nVilket värde har det spelade kortet varv 3?");
  spel[1] = kort.splice(0,1);
  }  
else
  {
// 14. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga din näst största kort.
  if (giv[1] < kort[3])
    {
    giv[2] = prompt ("Varv 2 spelar datagurkan " + kort[kort.length-2] + ".\n\nVilket värde har det spelade kortet varv 3?");
    spel[1] = kort.splice(kort.length-2,1);
    }
// 15. Men om kortet är högre än din näst största kort så lägger du din största kort.
  else
    {
    giv[2] = prompt ("Varv 2 spelar datagurkan " + kort[kort.length-1] + ".\n\nVilket värde har det spelade kortet varv 3?");
    spel[1] = kort.splice(kort.length-1,1);
    }
  }
text(90, 200, 30, "Andra kortet är " + spel[1], "black");
 
// varv 3
kort.sort(function(a, b){return a - b});
// 22. Om kortet är större än den också så lägger du din minsta kort.
if (giv[2] > kort[kort.length-1])
  {
  giv[3] = prompt ("Varv 3 spelar datagurkan " + kort[0] + ".\n\nVilket värde har det spelade kortet varv 4?");
  spel[2] = kort.splice(0,1);
  }  
else
 {
// 20. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga din näst största kort.
  if (giv[2] < kort[3])
    {
    giv[3] = prompt ("Varv 3 spelar datagurkan " + kort[kort.length-2] + ".\n\nVilket värde har det spelade kortet varv 4?");
    spel[2] = kort.splice(kort.length-2,1);
    }
// 21. Men om kortet är högre än din näst största kort så lägger du din största kort.
  else
    {
    giv[3] = prompt ("Varv 3 spelar datagurkan " + kort[kort.length-1] + ".\n\nVilket värde har det spelade kortet varv 4?");
    spel[2] = kort.splice(kort.length-1,1);
    }
  }
text(90, 250, 30, "Tredje kortet är " + spel[2], "black");
 
// varv 4
kort.sort(function(a, b){return a - b});
// 28. Om kortet är större än den också så lägger du din minsta kort.
if (giv[3] > kort[kort.length-1])
  {
  giv[4] = prompt ("Varv 4 spelar datagurkan " + kort[0] + ".\n\nNu är varvet slut. Tryck enter.");
  spel[3] = kort.splice(0,1);
  }  
else
  {
// 26. Om kortet som personen innan dig la är mindre än alla dina kort så ska du lägga din näst största kort.
  if (giv[2] < kort[3])
    {
    giv[4] = prompt ("Varv 4 spelar datagurkan " + kort[kort.length-2] + ".\n\nNu är varvet slut. Tryck enter.");
    spel[3] = kort.splice(kort.length-2,1);
    }
// 27. Men om kortet är högre än din näst största kort så lägger du din största kort.
  else
    {
    giv[4] = prompt ("Varv 4 spelar datagurkan " + kort[kort.length-1] + ".\n\nNu är varvet slut. Tryck enter.");
    spel[3] = kort.splice(kort.length-1,1);
    }
  }
text(90, 300, 30, "Fjärde kortet är " + spel[3], "black");
 
giv.splice(giv.length-1,1);
  
text(90, 400, 30, "Kort i given  : " + giv, "green");
text(90, 450, 30, "Kort DG spelat: " + spel, "blue");
text(90, 500, 30, "DGs sista kort: " + kort, "red");
   
//circle(100, 100, 20, "red");
//text(90, 111, 30, "SLUT", "black");
</script>