Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- /**
- * Created by mwalko on 30.05.16.
- */
- public class Main {
- public static void main(String[] args)
- {
- //we have 3 cryptographers and someone of them paid for dinner or NSA did it
- /*
- int Alice = 0;
- int Bob = 1;
- int Camilla = 2;
- int NSA = 3;
- */
- Map<String, Integer> cryptographersBits = new LinkedHashMap<String, Integer>(3);
- cryptographersBits = fillMapWithNamesAndBits(cryptographersBits);
- displayMap(cryptographersBits);
- int payer = decideWhoPays();
- chceckWhoPaid(cryptographersBits, payer);
- }
- private static int decideWhoPays() {
- return new Random().nextInt(5);
- }
- private static void chceckWhoPaid(Map<String, Integer> cryptographersBits, int payer) {
- int AlicesBit = cryptographersBits.get("AliceBob")^cryptographersBits.get("AliceCamilla");
- int BobsBit = cryptographersBits.get("AliceBob")^cryptographersBits.get("BobCamilla");
- int CamillasBit = cryptographersBits.get("AliceCamilla")^cryptographersBits.get("BobCamilla");
- if(payer == 0)
- AlicesBit ^= 1;
- else if(payer == 1)
- BobsBit ^= 1;
- else if(payer == 2)
- CamillasBit ^=1;
- System.out.println("Result: " + (AlicesBit^BobsBit^CamillasBit));
- if((AlicesBit^BobsBit^CamillasBit) == 0)
- System.out.println("None paid, probably NSA did");
- else
- System.out.println("Someone of cryptographers paid");
- System.out.println("The real payer: " + payer);
- }
- private static void displayMap(Map<String, Integer> cryptographersBits) {
- for(Map.Entry<String, Integer> entry : cryptographersBits.entrySet())
- {
- System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue());
- }
- }
- private static Map<String,Integer> fillMapWithNamesAndBits(Map<String, Integer> cryptographersBits) {
- cryptographersBits.put("AliceBob", generateRandomBit());
- cryptographersBits.put("AliceCamilla", generateRandomBit());
- cryptographersBits.put("BobCamilla", generateRandomBit());
- return cryptographersBits;
- }
- private static Integer generateRandomBit() {
- return new Random().nextInt(2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement