summaryrefslogtreecommitdiff
path: root/MiguelEngine.java
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2021-04-06 12:21:43 +0200
committerMiguel <m.i@gmx.at>2021-04-06 12:21:43 +0200
commit5f1294e89468841f1e1396cb39af873993826cf7 (patch)
tree1b79a0328a4dea3c9c7759dcdba7ad64578ee777 /MiguelEngine.java
Initial commit for Mastermind
Diffstat (limited to 'MiguelEngine.java')
-rw-r--r--MiguelEngine.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/MiguelEngine.java b/MiguelEngine.java
new file mode 100644
index 0000000..bc11748
--- /dev/null
+++ b/MiguelEngine.java
@@ -0,0 +1,62 @@
+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
+ }
+
+}