Advertisement
Guest User

Untitled

a guest
May 30th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. /**
  4. * Created by mwalko on 30.05.16.
  5. */
  6. public class Main {
  7. public static void main(String[] args)
  8. {
  9. //we have 3 cryptographers and someone of them paid for dinner or NSA did it
  10. /*
  11. int Alice = 0;
  12. int Bob = 1;
  13. int Camilla = 2;
  14. int NSA = 3;
  15. */
  16. Map<String, Integer> cryptographersBits = new LinkedHashMap<String, Integer>(3);
  17. cryptographersBits = fillMapWithNamesAndBits(cryptographersBits);
  18. displayMap(cryptographersBits);
  19. int payer = decideWhoPays();
  20. chceckWhoPaid(cryptographersBits, payer);
  21. }
  22.  
  23. private static int decideWhoPays() {
  24. return new Random().nextInt(5);
  25. }
  26.  
  27.  
  28. private static void chceckWhoPaid(Map<String, Integer> cryptographersBits, int payer) {
  29. int AlicesBit = cryptographersBits.get("AliceBob")^cryptographersBits.get("AliceCamilla");
  30. int BobsBit = cryptographersBits.get("AliceBob")^cryptographersBits.get("BobCamilla");
  31. int CamillasBit = cryptographersBits.get("AliceCamilla")^cryptographersBits.get("BobCamilla");
  32. if(payer == 0)
  33. AlicesBit ^= 1;
  34. else if(payer == 1)
  35. BobsBit ^= 1;
  36. else if(payer == 2)
  37. CamillasBit ^=1;
  38. System.out.println("Result: " + (AlicesBit^BobsBit^CamillasBit));
  39. if((AlicesBit^BobsBit^CamillasBit) == 0)
  40. System.out.println("None paid, probably NSA did");
  41. else
  42. System.out.println("Someone of cryptographers paid");
  43.  
  44. System.out.println("The real payer: " + payer);
  45. }
  46.  
  47. private static void displayMap(Map<String, Integer> cryptographersBits) {
  48. for(Map.Entry<String, Integer> entry : cryptographersBits.entrySet())
  49. {
  50. System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue());
  51. }
  52. }
  53.  
  54. private static Map<String,Integer> fillMapWithNamesAndBits(Map<String, Integer> cryptographersBits) {
  55. cryptographersBits.put("AliceBob", generateRandomBit());
  56. cryptographersBits.put("AliceCamilla", generateRandomBit());
  57. cryptographersBits.put("BobCamilla", generateRandomBit());
  58. return cryptographersBits;
  59. }
  60.  
  61. private static Integer generateRandomBit() {
  62. return new Random().nextInt(2);
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement