code: public static boolean alg_68(int[] blz, int[] number) {
          // 10-stellige
          if (number[0] != 0) {
              if (number[3] != 9) {
                  return false;
              }
              int sum = addProducts(number, 3, 8, new int[]{1, 2, 1, 2, 1, 2}, true);
              int crc = (10 - sum % 10) % 10;
              return number[9] == crc;
          }
  
          // 9-stellige Ausnahme (Ausnahme nur bei Variante 2??)
          if (number[1] == 4) {
              // nicht pruefbar
              return true;
          }
  
          // auf 6stelligkeit pruefen
          int sumfirstfive = 0;
          for (int i = 0; i <= 4; i++) {
              sumfirstfive += number[i];
          }
          //mindestens 6-stellig
          if (sumfirstfive == 0) {
              return false;
          }
  
          //Variante 1
          int sum = addProducts(number, 1, 8, new int[]{1, 2, 1, 2, 1, 2, 1, 2}, true);
          int crc = (10 - sum % 10) % 10;
          if (number[9] == crc) {
              return true;
          }
  
          //Variante 2
          sum = addProducts(number, 1, 8, new int[]{1, 0, 0, 2, 1, 2, 1, 2}, true);
          crc = (10 - sum % 10) % 10;
          return number[9] == crc;
      }
docs: TODO: more tests