[Java] According to Matrix67's article "prisoner and Lightbulb": According to Matrix67's article "prisoner and Lightbulb: [java] public class Wakeup {static class People {// records the position 0 that was determined when the first entry was made.-1 left 1 right 1. public int Position; // the ball on the hand public int BallNum; // identifies the public int Id; // whether the ball is still in the seesaw game public boolean OnLine; public People (int Id) {this. id = Id; Position = 0; BallNum = 2; OnLine = true;} private static int lelecount = 100; // Number of participants private static boolean BoxIsEmpt Y = true; // whether the box is empty private static boolean LeftIsWeight = false; // the low public static void main (String [] args) on the left of the seesaw) {People [] thePeoples = new People [100]; for (int I = 0; I <PeopleCount; I ++) {thePeoples [I] = new People (I );} boolean finished = false; int k = 0; int I = 0; int outNum = 0; while (! Finished) {k ++; I = (new Random (). nextInt (PeopleCount) % PeopleCount; People theP = thePeoples [I]; if (theP. onLine) {if (theP. position = 0) {theP. position = LeftIsWeight? -1: 1; LeftIsWeight =! LeftIsWeight;} else {if (theP. Position =-1) {if (LeftIsWeight) {// The left-side low. if there is a ball, take if (! BoxIsEmpty) {BoxIsEmpty = true; theP. ballNum ++ ;}} else {// height of the current side. if it is null, place the ball if (BoxIsEmpty) {if (theP. ballNum> 0) {theP. ballNum --; BoxIsEmpty = false ;}}} else {if (LeftIsWeight) {// The height of the current side. if it is empty, put the ball if (BoxIsEmpty) {if (theP. ballNum> 0) {theP. ballNum --; BoxIsEmpty = false ;}} else {// The current side is low. if (! BoxIsEmpty) {BoxIsEmpty = true; theP. ballNum ++ ;}}}// exit if no ball exists and if (theP) is not used. ballNum <= 0) {LeftIsWeight =! LeftIsWeight; theP. onLine = false; outNum ++; System. out. println ("Out:" + theP. id);} // If 200 or 199 balls are collected and the other ball is in the box, it indicates victory. if (theP. ballNum + (BoxIsEmpty? 0: 1)> = PeopleCount * 2) {System. out. println ("Winner:" + theP. id + ", executed in total:" + k); finished = true ;}}}}} public class Wakeup {static class People {// records the position 0 determined when the first entry is made.-1 left and 1 right. public int Position; // the ball on the hand public int BallNum; // identifies the public int Id; // whether the ball is still in the seesaw game public boolean OnLine; public People (int Id) {this. id = Id; Position = 0; BallNum = 2; OnLine = true ;}} private static int lelecount = 100; // participant Private static boolean BoxIsEmpty = true; // whether the box is empty private static boolean LeftIsWeight = false; // The left-side low public static void main (String [] args) {People [] thePeoples = new People [100]; for (int I = 0; I <PeopleCount; I ++) {thePeoples [I] = new People (I );} boolean finished = false; int k = 0; int I = 0; int outNum = 0; while (! Finished) {k ++; I = (new Random (). nextInt (PeopleCount) % PeopleCount; People theP = thePeoples [I]; if (theP. onLine) {if (theP. position = 0) {theP. position = LeftIsWeight? -1: 1; LeftIsWeight =! LeftIsWeight;} else {if (theP. Position =-1) {if (LeftIsWeight) {// The left-side low. if there is a ball, take if (! BoxIsEmpty) {BoxIsEmpty = true; theP. ballNum ++ ;}} else {// height of the current side. if it is null, place the ball if (BoxIsEmpty) {if (theP. ballNum> 0) {theP. ballNum --; BoxIsEmpty = false ;}}} else {if (LeftIsWeight) {// The height of the current side. if it is empty, put the ball if (BoxIsEmpty) {if (theP. ballNum> 0) {theP. ballNum --; BoxIsEmpty = false ;}} else {// The current side is low. if (! BoxIsEmpty) {BoxIsEmpty = true; theP. ballNum ++ ;}}}// exit if no ball exists and if (theP) is not used. ballNum <= 0) {LeftIsWeight =! LeftIsWeight; theP. onLine = false; outNum ++; System. out. println ("Out:" + theP. id);} // If 200 or 199 balls are collected and the other ball is in the box, it indicates victory. if (theP. ballNum + (BoxIsEmpty? 0: 1)> = PeopleCount * 2) {System. out. println ("Winner:" + theP. id + ", executed in total:" + k); finished = true ;}}}ps: This algorithm provides a good idea, however, it is generally not used in the actual election strategy, because the conditions are not as harsh as described in the article.