質問
過去数週間の私をよくお読み書 誤り制御符号化:基礎と応用 について学ぶために、BCH(Bose,Chaudhuri,Hocquenghem)コード、ジュニングの役割を、電気通信会社です。
本書は主に数学や理論の背後にはどうしたらいいのかと悩ん何らかの対策の概念主に次の n codewords.いGUIの実施を通じてボタンひなんですが、ポストのコードとしてのファイルは巨大)とのコードを得るために、次の n 番号:
生成これらの数字をはいています。できればすべてのこれらの内の符号化方式の代わりにループを通じてのGUIは私の人生する時ます。
これが駆動さんのために日にその辺を0000000000からの入力ですが、私として失われてしまうという場所になっていくことになるでしょう思います。いしい創作。
自分の生成上記のコードによりお願い申し上げます。
解決
(ビッグ編集...)もう少しコードで遊ぶこれは仕事に思えるます:
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(final String[] argv)
{
final int startValue;
final int iterations;
final List<String> list;
startValue = Integer.parseInt(argv[0]);
iterations = Integer.parseInt(argv[1]);
list = encodeAll(startValue, iterations);
System.out.println(list);
}
private static List<String> encodeAll(final int startValue, final int iterations)
{
final List<String> allEncodings;
allEncodings = new ArrayList<String>();
for(int i = 0; i < iterations; i++)
{
try
{
final int value;
final String str;
final String encoding;
value = i + startValue;
str = String.format("%06d", value);
encoding = encoding(str);
allEncodings.add(encoding);
}
catch(final BadNumberException ex)
{
// do nothing
}
}
return allEncodings;
}
public static String encoding(String str)
throws BadNumberException
{
final int[] digit;
final StringBuilder s;
digit = new int[10];
for(int i = 0; i < 6; i++)
{
digit[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
}
digit[6] = ((4*digit[0])+(10*digit[1])+(9*digit[2])+(2*digit[3])+(digit[4])+(7*digit[5])) % 11;
digit[7] = ((7*digit[0])+(8*digit[1])+(7*digit[2])+(digit[3])+(9*digit[4])+(6*digit[5])) % 11;
digit[8] = ((9*digit[0])+(digit[1])+(7*digit[2])+(8*digit[3])+(7*digit[4])+(7*digit[5])) % 11;
digit[9] = ((digit[0])+(2*digit[1])+(9*digit[2])+(10*digit[3])+(4*digit[4])+(digit[5])) % 11;
// Insert Parity Checking method (Vandermonde Matrix)
s = new StringBuilder();
for(int i = 0; i < 9; i++)
{
s.append(Integer.toString(digit[i]));
}
if(digit[6] == 10 || digit[7] == 10 || digit[8] == 10 || digit[9] == 10)
{
throw new BadNumberException(str);
}
return (s.toString());
}
}
class BadNumberException
extends Exception
{
public BadNumberException(final String str)
{
super(str + " cannot be encoded");
}
}
私は例外をスローではなく、特別な文字列を返すことを好みます。この場合、私は通常、私が言う悪い習慣である例外を無視するが、この場合のために、私はそれが何をしたいと思います。
他のヒント
難しいがんの問題が読みご質問、もう探:
public List<String> encodeAll() {
List<String> allEncodings = new ArrayList<String>();
for (int i = 0; i < 1000000 ; i++) {
String encoding = encoding(Integer.toString(i));
allEncodings.add(encoding);
}
return allEncodings;
}
あまりの不備ソリューションでは、toOctalString結果にならないのは0-ド.がたいものであることを String.format("<something>", i)
のエンコードます。
更新
ご利用にあたりお電話に置き換えの呼び出し符号化(String str)と呼びます。いを受ける順序付けられたリストのすべてのエンコーディング.
I aasumedさすがに最も人気のあるものをoctal価値観-私の間違いかと今でも思っていくのエンコーディング値000009きの例では、このように取りirretating octal。