Этот метод создает массив bools, который определяет, какие символы будут сохранены, а какие будут заменены с помощью встроенной функции shuffled
.
let string = "Hello playground"
let charsToKeep = string.count / 4
let bools = (Array<Bool>(repeating: true, count: charsToKeep)
+ Array<Bool>(repeating: false, count: string.count - charsToKeep)).shuffled()
let output = zip(string, bools).map
{
char, bool in
return bool ? char : "_"
}
print(String(output))
Редактировать Вышеприведенное не правильно работает с пробелами, но я все равно оставлю это здесь в качестве общего примера.
Вот версия, которая имеет дело с пробелами.
let string = "Hello playground and stackoverflow"
let nonSpaces = string.filter{ [111] != " " }.count
let bools = (Array<Bool>(repeating: true, count: nonSpaces / 4) + Array<Bool>(repeating: false, count: nonSpaces - nonSpaces / 4)).shuffled()
var nextBool = bools.makeIterator()
let output = string.map
{
char in
return char == " " ? " " : (nextBool.next()! ? char : "_")
}
print(String(output))
// Hel__ __________ a__ __a____e____w
// ___l_ _l__g_____ _n_ __a_____r__o_
Я вместо этого советовал бы Вам устанавливать SESSION_COOKIE_NAME
к различным значениям для этих двух приложений. Ваши пользователи должны будут все еще войти в систему дважды первоначально, но их сессии не будут конфликтовать - если они войдут в систему приложения A, затем приложения B, и возвратятся к A, то у них все еще будет их сессией.
Совместное использование сессий между экземплярами Django является, вероятно, не хорошей идеей. Если Вы хотите некоторую единую точку входа, изучаете что-то как django-авария. У Вас все еще будет 2 сессии (как Вы должны), но пользователь только войдет в систему однажды.
Я соглашаюсь, что совместное использование сессий между экземплярами Django является, вероятно, не хорошей идеей. Если бы Вы действительно хотели, то Вы могли:
Однако я на самом деле не попробовал все это, таким образом, можно все еще испытать затруднения!