  We present a deterministic algorithm for computing the entire weight
distribution of polar codes. As the first step, we derive an efficient
recursive procedure to compute the weight distributions that arise in
successive cancellation decoding of polar codes along any decoding path. This
solves the open problem recently posed by Polyanskaya, Davletshin, and
Polyanskii. Using this recursive procedure, we can compute the entire weight
distribution of certain polar cosets in time O(n^2). Any polar code can be
represented as a disjoint union of such cosets; moreover, this representation
extends to polar codes with dynamically frozen bits. This implies that our
methods can be also used to compute the weight distribution of polar codes with
CRC precoding, of polarization-adjusted convolutional (PAC) codes and, in fact,
general linear codes. However, the number of polar cosets in such
representation scales exponentially with a parameter introduced herein, which
we call the mixing factor. To reduce the exponential complexity of our
algorithm, we make use of the fact that polar codes have a large automorphism
group, which includes the lower-triangular affine group LTA(m,2). We prove that
LTA(m,2) acts transitively on certain sets of monomials, thereby drastically
reducing the number of polar cosets we need to evaluate. This complexity
reduction makes it possible to compute the weight distribution of any polar
code of length up to n=128.
