Created
October 29, 2016 18:17
-
-
Save LucasAlfare/1745ce11e35f97a5625bdefdfd57ec30 to your computer and use it in GitHub Desktop.
Tentando criar uma coisa aqui..
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.main; | |
/** | |
* Created by familia on 19/10/16. | |
*/ | |
public class Clock { | |
private RelogioPequeno[] relogiosPequenos; | |
private int[] pinos = {0, 0, 0, 0}; | |
public Clock() { | |
relogiosPequenos = new RelogioPequeno[9]; | |
for (int i = 0; i < relogiosPequenos.length; i++){ | |
relogiosPequenos[i] = new RelogioPequeno(i); | |
} | |
} | |
public void moverSlotsAfetados(int para){ | |
if (temPinoLevantado()){ | |
for (int i = 0; i < pinos.length; i++){ | |
if (pinoLevantado(i)){ | |
for (int x : slotsAfetadosByPino(i)){ | |
relogiosPequenos[x].moverPonteiro(para); | |
} | |
} | |
} | |
} else { | |
for (int i = 0; i <= 6; i += 2){ | |
relogiosPequenos[i].moverPonteiro(para); | |
} | |
} | |
} | |
public int[] slotsAfetadosByPino(int pino){ | |
int[] r; | |
switch (pino){ | |
case 0: | |
//System.out.println("switch " + pino); | |
return new int[]{0,1,7,8}; | |
case 1: | |
//System.out.println("switch " + pino); | |
return new int[]{1,2,3,8}; | |
case 2: | |
//System.out.println("switch " + pino); | |
return new int[]{3,4,5,8}; | |
case 3: | |
//System.out.println("switch " + pino); | |
return new int[]{5,6,7,8}; | |
} | |
return null; | |
} | |
public boolean temPinoLevantado(){ | |
boolean r = false; | |
for (int x : pinos){ | |
if (x == 1){ | |
r = true; | |
break; | |
} | |
} | |
return r; | |
} | |
public void baixarTodosOsPinos(){ | |
pinos = new int[]{0,0,0,0}; | |
} | |
public void levantarTodosOsPinos(){ | |
pinos = new int[]{1,1,1,1}; | |
} | |
public boolean pinoLevantado(int pino){ | |
return pinos[pino] == 1; | |
} | |
public void pressionarPino(int pino){ | |
pinos[pino] = pinos[pino] == 0 ? 1 : 0; | |
} | |
public RelogioPequeno[] getRelogiosPequenos() { | |
return relogiosPequenos; | |
} | |
public int[] getPinos() { | |
return pinos; | |
} | |
@Override | |
public String toString() { | |
String r = ""; | |
for (int i = 0; i < relogiosPequenos.length; i++){ | |
r += relogiosPequenos[i].toString() + "\n"; | |
} | |
return r; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.main; | |
/** | |
* Created by familia on 19/10/16. | |
*/ | |
public class ClockSolver { | |
private Clock clock; | |
public ClockSolver(Clock clock) { | |
this.clock = clock; | |
clock.baixarTodosOsPinos(); | |
} | |
public Clock resolverCruz(){ | |
Clock r = this.clock; | |
int posiçãoAlvo; | |
posiçãoAlvo = r.getRelogiosPequenos()[1].posiçãoPonteiro(); | |
r.pressionarPino(2); | |
r.moverSlotsAfetados(posiçãoAlvo); | |
r.pressionarPino(2); | |
posiçãoAlvo = r.getRelogiosPequenos()[7].posiçãoPonteiro(); | |
r.pressionarPino(1); | |
r.moverSlotsAfetados(posiçãoAlvo); | |
r.pressionarPino(1); | |
posiçãoAlvo = r.getRelogiosPequenos()[5].posiçãoPonteiro(); | |
r.pressionarPino(0); | |
r.moverSlotsAfetados(posiçãoAlvo); | |
posiçãoAlvo = r.getRelogiosPequenos()[3].posiçãoPonteiro(); | |
r.pressionarPino(3); | |
r.moverSlotsAfetados(posiçãoAlvo); | |
/* | |
for (int i = 0; i < sequenciaSlotsCruz().length; i++){ | |
if (i < 2){ | |
posiçãoAlvo = r.getRelogiosPequenos()[sequenciaSlotsCruz()[i]].posiçãoPonteiro(); | |
r.pressionarPino(sequenciaPinosCruz()[i]); | |
r.moverSlotsAfetados(posiçãoAlvo); | |
r.pressionarPino(sequenciaPinosCruz()[i]); | |
} else { | |
posiçãoAlvo = r.getRelogiosPequenos()[sequenciaSlotsCruz()[i]].posiçãoPonteiro(); | |
r.pressionarPino(sequenciaPinosCruz()[i]); | |
r.moverSlotsAfetados(posiçãoAlvo); | |
} | |
} | |
*/ | |
//r.levantarTodosOsPinos(); | |
//r.moverSlotsAfetados(0); | |
return r; | |
} | |
private int[] sequenciaSlotsCruz(){ | |
return new int[]{1, 7, 5, 3}; | |
} | |
private int[] sequenciaPinosCruz(){ | |
return new int[]{2, 1, 0, 3}; | |
} | |
public Clock getClock() { | |
return clock; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.main; | |
import java.util.Arrays; | |
import java.util.Random; | |
/** | |
* Created by familia on 19/10/16. | |
*/ | |
public class Main { | |
public static void main(String[] args) { | |
Clock clock = new Clock(); | |
clock.pressionarPino(1); | |
clock.moverSlotsAfetados(8); | |
clock.pressionarPino(1); | |
clock.pressionarPino(3); | |
clock.moverSlotsAfetados(2); | |
clock.pressionarPino(3); | |
/* | |
clock.pressionarPino(1); | |
clock.moverSlotsAfetados(8); | |
clock.pressionarPino(1); | |
clock.pressionarPino(3); | |
clock.moverSlotsAfetados(2); | |
clock.pressionarPino(3); | |
clock.pressionarPino(3); | |
clock.moverSlotsAfetados(3); | |
clock.pressionarPino(3); | |
clock.pressionarPino(2); | |
clock.moverSlotsAfetados(1); | |
clock.pressionarPino(2); | |
clock.pressionarPino(3); | |
clock.moverSlotsAfetados(1); | |
clock.pressionarPino(3); | |
*/ | |
System.out.println(clock); | |
} | |
/* | |
pressionando o pino 1... | |
movendo slots afetados para 8... | |
pressionando o pino 3... | |
movendo slots afetados para 2... | |
pressionando o pino 3... | |
movendo slots afetados para 3... | |
pressionando o pino 2... | |
movendo slots afetados para 1... | |
pressionando o pino 3... | |
movendo slots afetados para 1... | |
slot 0: - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
slot 1: - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - | |
slot 2: - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - | |
slot 3: - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
slot 4: - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
slot 5: - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
slot 6: - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
slot 7: - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
slot 8: - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - | |
*/ | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.main; | |
import java.text.SimpleDateFormat; | |
/** | |
* Created by familia on 19/10/16. | |
*/ | |
public class RelogioPequeno { | |
private int[] marcações = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
private int ID; | |
public RelogioPequeno(int ID) { | |
this.ID = ID; | |
} | |
@Deprecated | |
public void moverPonteiro(int paraOnde){ | |
//TODO corrigir este metodo! | |
marcações[posiçãoPonteiro()] = 0; | |
marcações[paraOnde] = 1; | |
} | |
public int posiçãoPonteiro(){ | |
int r = 0; | |
for (int i = 0; i < marcações.length; i++){ | |
r = i; | |
if (marcações[i] == 1){ | |
break; | |
} | |
} | |
return r; | |
} | |
public int[] getMarcações() { | |
return marcações; | |
} | |
public int getID() { | |
return ID; | |
} | |
@Override | |
public String toString() { | |
String r = "slot " + ID + ": - "; | |
for (int marcação : marcações) { | |
r += marcação + " - "; | |
} | |
return r; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment