function* permutation(s) {
if (s.length < 3) {
yield s;
if (s.length == 2) yield s[1] + s[0];
} else {
for (let i = 0; i < s.length; i++) {
let h = s[i];
for (let t of permutation(s.substr(0, i) +
s.substr(i + 1))) yield h + t;
}
}
}
function* spread(s, i, cnt) {
for (; i < s.length; i++) {
let c = s[i];
if (cnt[c] > 1) {
let cn = Object.assign({}, cnt);
cn[c]--;
i++;
for (let j = i; j <= s.length; j++) {
for (let t of spread(s.substr(0, j)
+ c + s.substr(j), i, cn)) yield t;
}
return
}
}
yield s;
}
function* permUniq(s) {
let cnt = {};
for (let c of s) cnt[c] = (cnt[c] || 0) + 1;
for (let t of permutation(''.concat(...new Set(s)))) {
for (let u of spread(t, 0, cnt)) {
yield u
}
}
}
for (let s of ["aaa", "aab", "abc", "aabb",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]) {
for (let t of permUniq(s)) console.log(t);
console.log("~~~~");
}
s = "2567" # здесь придумывают тестовые данные
l = [' '] * 10 # здесь можно попробовать что-то поменять
# и ниже тоже можно
print(l)
for c in s:
x = ord(c) - ord('0')
l[x] = c
print(l, "с = %r, x = %d" % (c, x))
t = ''.join(l)
print(repr(t), "t = ''.join(l)")
m = t.split()
print(m, "m = t.split()")
l = [d for d in m if len(d) == 4]
print(l)
print("yes\n" + l[0] if l else "no")