/**
* Декодирует строку вида %uXXXX%uXXXX и/или %XX в текст
* Боев Григорий (с) 2020 (telegram @ProgrammerForever)
*
* @param {string} encoded Кодированный текст
* @return Декодированный текст
* @customfunction
*/
function uEncode(encoded) {
return encoded.split('%')
.filter(el=>el!='')
.map(el=>el[0]==='u'?el.substring(1):el)
.map(el=>parseInt(el,16))
.map(code=>String.fromCodePoint(code))
.join('');
}
function onEdit(event) {
//* Боев Григорий (с) 2020 (telegram @ProgrammerForever)
const ss = event.source.getActiveSheet(); // Текущий лист
const row = event.range.getRow(); // Номер строки
const col = event.range.getColumn(); // Номер столбца
const rowsCount = ss.getMaxRows(); // Кол-во строк
const inRange = ss.getRange(1,col,rowsCount,1);
var inData = inRange.getValues(); // Получение значений
inRange.clearContent(); // Удаление старых
inData = inData.filter(row=>row[0].getTime); // Оставить только даты
inData.sort((a,b)=>a[0].getTime()-b[0].getTime()); // Сортировка
ss.getRange(1,col,inData.length,1).setValues(inData); //Вывод
};
n, m = 3, 3
bounty = [4, 2, 1]
coins = 0
# Игра установлена
queue = [(0, 0, 0)]
while queue:
score, k, day = queue.pop(0)
# Дни перед турниром
day += 1
if day > m:
# Наступил день турнира
coins = max(coins, score)
else:
# Еще есть время собирать монеты
# Пропустим этот день
queue.append((score, 0, day))
k += 1
# А лучше соберем награду
score += bounty[(k - 1) % n]
queue.append((score, k, day))
print(coins) # 8