Form a list using prime numbers
05AB1E, 13 bytes
Ò.»â€˜ʒ÷DÙQ}θ
Try it online!
A port of my Pyth answer.
Ò
gets the prime factÒrs of each..»
folds a dyadic command,â
(cârtesiân product) between each two elements in the list from right to left with opposite right/left operands.€˜
flattens €ach.ʒ...}
filtʒrs those which satisfy the following condition:÷
pairwise integer division with the input.D
Duplicate (pushes two copies of the item to the stack).Ù
removes duplicate elements, keeping a ÙniqÙe occurrence of each element.Q
checks for eQuality.
θ
gets the last element.
Jelly, 15 14 bytes
³:ŒQẠ
ÆfŒpÇÐfṪ
A full-program which accepts one argument, a list of numbers, and prints a representation of another list of numbers, or 0
if the task is impossible.
Try it online!
How?
³:ŒQẠ - Link 1, unique after division?: list of primes, Ps e.g. [7,2,2] or [7,3,3]
³ - program's first input e.g. [7,8,8] or [7,9,30]
: - integer division by Ps [1,4,4] [1,3,10]
ŒQ - distinct sieve [1,1,0] [1,1,1]
Ạ - all truthy? 0 1
ÆfŒpÇÐfṪ - Main link: list of coin stack sizes, Bs e.g. [7,8,12]
Æf - prime factorisation (vectorises) [[7],[2,2,2],[2,2,3]]
Œp - Cartesian product [[7,2,2],[7,2,2],[7,2,3],[7,2,2],[7,2,2],[7,2,3],[7,2,2],[7,2,2],[7,2,3]]
Ðf - filter keep if:
Ç - call last link (1) as a monad 1 1 0 1 1 0 1 1 0
- [[7,2,2],[7,2,2],[7,2,2],[7,2,2],[7,2,2],[7,2,2]]
Ṫ - tail (note: tailing an empty list yields 0) [7,2,2]
- implicit print
Pyth, 15 bytes
ef{I/VQT.nM*FPM
Try it here!
How?
ef{I/VQT.nM*FPM | Full program, which foregoes the size. | PM | Prime factorisation of each integer. *F | Fold Cartesian Product over the list of primes. .nM | Flatten each. f | Filter. {I/VQT | Filter condition (uses a variable T). /V | Vectorised integer division... QT | Over the input and the current item. {I | Is invariant over deduplication (removing duplicates)? e | Take the last element. | Output the result implicitly.