| Код |
sum_bin(A, B) when is_list(A), is_list(B) -> sum_bin2(lists:reverse(A), lists:reverse(B), "0").
sum_bin2([], [], A) -> A;
sum_bin2([], L, "0") -> lists:reverse(L);
sum_bin2([], L, "1") -> sum_bin2(L, "1", "0");
sum_bin2(L, [], "0") -> lists:reverse(L);
sum_bin2(L, [], "1") -> sum_bin2(L, "1", "0");
sum_bin2([48|R1], [48|R2], A) -> sum_bin2(R1, R2, "0") ++ A;
sum_bin2([49|R1], [49|R2], A) -> sum_bin2(R1, R2, "1") ++ A;
sum_bin2([49|R1], [48|R2], "0") -> sum_bin2(R1, R2, "0") ++ "1";
sum_bin2([49|R1], [48|R2], "1") -> sum_bin2(R1, R2, "1") ++ "0";
sum_bin2([48|R1], [49|R2], "0") -> sum_bin2(R1, R2, "0") ++ "1";
sum_bin2([48|R1], [49|R2], "1") -> sum_bin2(R1, R2, "1") ++ "0".
|
Боюсь что здесь нет декларативного подхода тк по коду видно что тут показано не что должно получиться, а как
Жду ваших отзывов: замечаний, комментариев, других способов решения(декларативных) |