|
@@ -0,0 +1,66 @@
|
|
|
|
|
+package eu.fibane;
|
|
|
|
|
+
|
|
|
|
|
+import java.io.BufferedReader;
|
|
|
|
|
+import java.io.FileReader;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Arrays;
|
|
|
|
|
+
|
|
|
|
|
+public class Main {
|
|
|
|
|
+
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
|
+ try(BufferedReader br = new BufferedReader(new FileReader(Main.class.getClassLoader().getResource("codes.txt").getPath()))){
|
|
|
|
|
+ String line;
|
|
|
|
|
+ while((line = br.readLine()) != null){
|
|
|
|
|
+ String [] lineParts = line.split("=");
|
|
|
|
|
+ String title = lineParts[0];
|
|
|
|
|
+ String result = decodeIRCommand(lineParts[1]);
|
|
|
|
|
+
|
|
|
|
|
+ System.out.println(title);
|
|
|
|
|
+ int count = result.split(" ").length;
|
|
|
|
|
+ StringBuilder builder = new StringBuilder(result.length());
|
|
|
|
|
+ for (int i = 0; i < count; i++) {
|
|
|
|
|
+ builder.append(String.format("%1$8d", i+1));
|
|
|
|
|
+ builder.append(" ");
|
|
|
|
|
+ }
|
|
|
|
|
+ System.out.println(builder.toString());
|
|
|
|
|
+ System.out.println(result);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String decodeIRCommand(String input){
|
|
|
|
|
+ String[] signals = input.split(" ");
|
|
|
|
|
+ ArrayList<Integer> codes = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Arrays.stream(signals).forEach(s -> {
|
|
|
|
|
+ if(s.startsWith("-")){
|
|
|
|
|
+ codes.add(Integer.valueOf(s.substring(1)));
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ codes.forEach(code -> {
|
|
|
|
|
+ if (code < 800) {
|
|
|
|
|
+ builder.append(0);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ builder.append(1);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ builder.delete(1,2);
|
|
|
|
|
+ builder.delete(builder.length() -1, builder.length());
|
|
|
|
|
+ int nbBits = builder.length();
|
|
|
|
|
+ int nbSpacesToAdd = nbBits / 8;
|
|
|
|
|
+ for (int i = 0; i < nbSpacesToAdd; i++) {
|
|
|
|
|
+ builder.insert((i + 1) * 8 + i, " ");
|
|
|
|
|
+ }
|
|
|
|
|
+ return builder.toString();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|