diff options
Diffstat (limited to 'Mastermind')
| -rwxr-xr-x | Mastermind/FranekEngine.java | 207 | ||||
| -rw-r--r-- | Mastermind/MiguelEngine.java | 63 |
2 files changed, 270 insertions, 0 deletions
diff --git a/Mastermind/FranekEngine.java b/Mastermind/FranekEngine.java new file mode 100755 index 0000000..d4b9e76 --- /dev/null +++ b/Mastermind/FranekEngine.java @@ -0,0 +1,207 @@ +package Mastermind;
+import java.util.Random;
+import java.util.Scanner;
+
+public class FranekEngine {
+
+ public static void main (String args[])
+ {
+
+ int liczba1=Integer.parseInt(args[0]);
+ int liczba2=Integer.parseInt(args[1]);
+ int liczba3=Integer.parseInt(args[2]);
+ int liczba4=Integer.parseInt(args[3]);
+
+ int odpowiedz1=Integer.parseInt(args[4]);
+ int odpowiedz2=Integer.parseInt(args[5]);
+ int odpowiedz3=Integer.parseInt(args[6]);
+ int odpowiedz4=Integer.parseInt(args[7]);
+
+
+ Scanner wejscie = new Scanner(System.in);
+ Random losowanie = new Random();
+// int liczba1 = losowanie.nextInt(5) + 1;
+// int liczba2 = losowanie.nextInt(5) + 1;
+// int liczba3 = losowanie.nextInt(5) + 1;
+// int liczba4 = losowanie.nextInt(5) + 1;
+
+ // do ustawiania samemu wartości - do testów:
+ /*liczba1 = 1;
+ liczba2 = 1;
+ liczba3 = 3;
+ liczba4 = 3; */
+
+ int kolor1 = 0, kolor2 = 0, czerwoneLiczb = 0, zieloneLiczb = 0, niebieskieLiczb = 0, żółteLiczb = 0, czarneLiczb = 0, białeLiczb = 0;
+ int czerwoneOdp = 0, zieloneOdp = 0, niebieskieOdp = 0, żółteOdp = 0, czarneOdp = 0, białeOdp = 0;
+ int licznik = 0;
+
+ int dobremiejsce = 0;
+ int dobrykolor = 0;
+
+ //ściągawka to testów:
+ // System.out.println(jakiKolor(liczba1) + " " + jakiKolor(liczba2) + " " + jakiKolor(liczba3) + " "
+ // + jakiKolor(liczba4));
+
+ // System.out.println("KOLORY: " + " " + "Czerwony: 1" + " " + "Zielony: 2" + " " + "Niebieski: 3"
+ // + " " + "Żółty: 4" + " " + "Czarny: 5" + " " + "Biały: 6");
+
+
+// do {
+ // System.out.println("Wprowadź cztery kolory (pod jednym odstępie między nimi):");
+ // int odpowiedz1 = wejscie.nextInt();
+// int odpowiedz2 = wejscie.nextInt();
+// int odpowiedz3 = wejscie.nextInt();
+// int odpowiedz4 = wejscie.nextInt();
+
+ if (liczba1 == odpowiedz1)
+ dobremiejsce += 1;
+ else if ((liczba1 == odpowiedz2) || (liczba1 == odpowiedz3) || (liczba1 == odpowiedz4))
+ dobrykolor += 1;
+
+ if (liczba2 == odpowiedz2)
+ dobremiejsce += 1;
+ else if ((liczba2 == odpowiedz1) || (liczba2 == odpowiedz3) || (liczba2 == odpowiedz4))
+ dobrykolor += 1;
+
+ if (liczba3 == odpowiedz3)
+ dobremiejsce += 1;
+ else if ((liczba3 == odpowiedz1) || (liczba3 == odpowiedz2) || (liczba3 == odpowiedz4))
+ dobrykolor += 1;
+
+ if (liczba4 == odpowiedz4)
+ dobremiejsce += 1;
+ else if ((liczba4 == odpowiedz1) || (liczba4 == odpowiedz2) || (liczba4 == odpowiedz3))
+ dobrykolor += 1;
+
+ int[] liczby = new int[4];
+ liczby[0] = liczba1;
+ liczby[1] = liczba2;
+ liczby[2] = liczba3;
+ liczby[3] = liczba4;
+
+ for (int index = 0; index < liczby.length; index++) {
+ kolor1 = liczby[index];
+
+ switch (kolor1) {
+ case 1 :
+ czerwoneLiczb++;
+ break;
+ case 2 :
+ zieloneLiczb++;
+ break;
+ case 3 :
+ niebieskieLiczb++;
+ break;
+ case 4 :
+ żółteLiczb++;
+ break;
+ case 5 :
+ czarneLiczb++;
+ break;
+ case 6 :
+ białeLiczb++;
+ break;
+ }
+ }
+
+ int[] odpowiedzi = new int[4];
+ odpowiedzi[0] = odpowiedz1;
+ odpowiedzi[1] = odpowiedz2;
+ odpowiedzi[2] = odpowiedz3;
+ odpowiedzi[3] = odpowiedz4;
+
+ for (int index = 0; index < odpowiedzi.length; index++) {
+ kolor2 = odpowiedzi[index];
+
+ switch (kolor2) {
+ case 1:
+ czerwoneOdp++;
+ break;
+ case 2:
+ zieloneOdp++;
+ break;
+ case 3:
+ niebieskieOdp++;
+ break;
+ case 4:
+ żółteOdp++;
+ break;
+ case 5:
+ czarneOdp++;
+ break;
+ case 6:
+ białeOdp++;
+ break;
+ }
+ }
+
+ /*System.out.println("Odpowiedzi: " + czerwoneLiczb + " " + zieloneLiczb + " " + niebieskieLiczb + " "
+ + żółteLiczb + " " + czarneLiczb + " " + białeLiczb + " " + czerwoneOdp + " " + zieloneOdp + " "
+ + niebieskieOdp + " " + żółteOdp + " " + czarneOdp + " " + białeOdp);
+
+ System.out.println("Dobry kolor przed: " + dobrykolor); */
+
+ //System.out.println("Dobre miejsce1: " + dobremiejsce + "\n" + "Dobry kolor1: " + dobrykolor);
+
+ if (((czerwoneLiczb > 1 && czerwoneLiczb - czerwoneOdp == 1) || (zieloneLiczb > 1 && zieloneLiczb - zieloneOdp == 1) || (niebieskieLiczb > 1 && niebieskieLiczb - niebieskieOdp == 1)
+ || (żółteLiczb > 1 && żółteLiczb - żółteOdp == 1) || (czarneLiczb > 1 && czarneLiczb - czarneOdp == 1) || (białeLiczb > 1 && białeLiczb - białeOdp == 1)))
+ dobrykolor -= 1;
+ else if (((czerwoneLiczb - czerwoneOdp == 2 && czerwoneOdp > 0) || (zieloneLiczb - zieloneOdp == 2 && zieloneOdp > 0) || (niebieskieLiczb - niebieskieOdp == 2 && niebieskieOdp > 0))
+ || (żółteLiczb - żółteOdp == 2 && żółteOdp > 0) || (czarneLiczb - czarneOdp == 2 && czarneOdp > 0) || (białeLiczb - białeOdp == 2 && białeOdp > 0))
+ dobrykolor -= 2;
+
+ //System.out.println("Dobre miejsce2: " + dobremiejsce + "\n" + "Dobry kolor2: " + dobrykolor);
+ if (( (czerwoneLiczb == 2 && zieloneLiczb == 2) || (czerwoneLiczb == 2 && niebieskieLiczb == 2) || (czerwoneLiczb == 2 && żółteLiczb == 2) || (czerwoneLiczb == 2 && czarneLiczb == 2)
+ || (czerwoneLiczb == 2 && białeLiczb == 2) || (zieloneLiczb == 2 && niebieskieLiczb == 2) || (zieloneLiczb == 2 && żółteLiczb == 2) || (zieloneLiczb == 2 && czarneLiczb == 2 )
+ || (zieloneLiczb == 2 && białeLiczb == 2) || (niebieskieLiczb == 2 && żółteLiczb == 2) || (niebieskieLiczb == 2 && czarneLiczb == 2) || (niebieskieLiczb == 2 && białeLiczb == 2)
+ || (żółteLiczb == 2 && czarneLiczb == 2) || (żółteLiczb == 2 && białeLiczb == 2) || (czarneLiczb == 2 && białeLiczb == 2))
+ && (((dobrykolor == 3) || (dobremiejsce == 1 && dobrykolor == 2)) && !(czerwoneOdp == 3 || zieloneOdp == 3 || niebieskieOdp == 3 || żółteOdp == 3 || czarneOdp == 3 || białeOdp == 3)))
+ dobrykolor -= 1;
+
+
+ if (dobrykolor < 0)
+ dobrykolor = 0;
+
+ System.out.println(dobremiejsce + " " + dobrykolor);
+ if (dobremiejsce == 4) {
+ dobremiejsce = 4;
+// System.out.println("Brawo, wygrałeś!");
+ } else
+ dobremiejsce = 0;
+ dobrykolor = 0;
+
+ czerwoneLiczb = 0; zieloneLiczb = 0; niebieskieLiczb = 0; żółteLiczb = 0; czarneLiczb = 0; białeLiczb = 0;
+ czerwoneOdp = 0; zieloneOdp = 0; niebieskieOdp = 0; żółteOdp = 0; czarneOdp = 0; białeOdp = 0;
+ licznik++;
+ // if (licznik == 8)
+ // System.out.println("Przykro mi - przegrałeś.");
+ // }
+// while (dobremiejsce != 4 && licznik != 8);
+ }
+
+ public static String jakiKolor(int liczba)
+ {
+ String kolor = "";
+ switch (liczba) {
+ case 1 :
+ kolor = "Czerwony";
+ break;
+ case 2 :
+ kolor = "Zielony";
+ break;
+ case 3 :
+ kolor = "Niebieski";
+ break;
+ case 4 :
+ kolor = "Żółty";
+ break;
+ case 5 :
+ kolor = "Czarny";
+ break;
+ case 6 :
+ kolor = "Biały";
+ break;
+ }
+ return kolor;
+ }
+}
diff --git a/Mastermind/MiguelEngine.java b/Mastermind/MiguelEngine.java new file mode 100644 index 0000000..544c4c0 --- /dev/null +++ b/Mastermind/MiguelEngine.java @@ -0,0 +1,63 @@ +package Mastermind; +public class MiguelEngine{ + + static int M=4; + + public static void main(String []args){ + + int S[]={Integer.parseInt(args[0]),Integer.parseInt(args[1]),Integer.parseInt(args[2]),Integer.parseInt(args[3])}; // nasz kod + int T[]={Integer.parseInt(args[4]),Integer.parseInt(args[5]),Integer.parseInt(args[6]),Integer.parseInt(args[7])}; // nasz kod + + int dobry_kolor_i_dobra_pozycja=0; + int dobry_kolor_ale_zla_pozycja=0; + int dupa_nigdzie_nie_pasuje=0; + + boolean used[]=new boolean[M+1]; // array pomocniczy Boolow, dlugosci M. + for (int i=0;i<M;i++) used[M]=false; // na poczatek ustawiamy wszystkie nasze pozycje na un-used. + + for (int i=0;i<M;i++) // jedzeimy po wszsytkich pozycjach + { + if(T[i]==S[i]) // jak ta pozycja jest idetnyczna w obu sekwenjach -> sprawa prosta + { + dobry_kolor_i_dobra_pozycja+=1; + used[i]=true; // dodatkowo oznaczymy ze ta pozycja naszego "kolor-kodu" zostala "sonkumowana" + } + } + + for (int i=0;i<M;i++) // jedzeimy ponownie po wszsytkich pozycjach + { + if(T[i]==S[i])continue; // jedziemy dalej, bo to juz przeprocesowala pierwsza petla! + + // w przeciwnym razie wolamy funkcje pomicnicza ktora sprawdza czy taki kolor wystepuje na innej pozycji. + int idx=wystepuje_gdzie_indziej(T[i],used,S); + if(idx!=-1) + { + dobry_kolor_ale_zla_pozycja+=1; + used[idx]=true; + continue; + } + + dupa_nigdzie_nie_pasuje+=1; + } + + /* + System.out.println ("dobrze:"+dobry_kolor_i_dobra_pozycja); + System.out.println ("dobry kolor ale zla pozycja:"+dobry_kolor_ale_zla_pozycja); + System.out.println ("dupa:"+dupa_nigdzie_nie_pasuje); + */ + + System.out.println (dobry_kolor_i_dobra_pozycja + " " + dobry_kolor_ale_zla_pozycja); + + } + // funkcja pomocnicza. + static int wystepuje_gdzie_indziej(int color,boolean used[],int S[]) + { + for(int i=0;i<M;i++) + { + if (used[i])continue; // jak juz zostalo przedtem skonsumowane przeskakujemy i patrzymy na kolejne. + if (S[i]==color)return i; // hurra znalezlismy nie-skonsumowna na dowolnej pozycji. + } + return -1; // dupa + } + +} |
