lots of exercises in java... from https://github.com/exercism/java

HandshakeCalculator.java 732B

123456789101112131415161718192021222324252627282930
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. final class HandshakeCalculator {
  5. private static final int REVERSE_SIGNALS_BIT_POSITION = 4;
  6. List<Signal> calculateHandshake(final int number) {
  7. final List<Signal> result = new ArrayList<>();
  8. for (final Signal signal : Signal.values()) {
  9. if (isBitSet(signal.ordinal(), number)) {
  10. result.add(signal);
  11. }
  12. }
  13. if (isBitSet(REVERSE_SIGNALS_BIT_POSITION, number)) {
  14. Collections.reverse(result);
  15. }
  16. return result;
  17. }
  18. private boolean isBitSet(final int position, final int number) {
  19. return ((number >> position) & 1) == 1;
  20. }
  21. }