Ученые установили, что прирост какого-либо вида живых организмов за счет рождаемости прямо пропорционален их количеству, а убыль за счет смертности прямо пропорциональна квадрату их количества. этот закон известен под названием закона мальтуса. пусть в одном хозяйстве собираются разводить карпов. прежде чем запускать мальков в пруд, решили провести расчеты. согласно закону мальтуса, изменение числа рыб за один год вычисляется по формуле δn= kn – qn^2. здесь n — число карпов в начале года, k — коэффициент прироста, q — коэффициент смертности. экспериментально установлено, что для данного вида рыб (карпы) и в данных условиях (состояние водоема, наличие корма) k = 1, q = 0,001. если первоначально в пруд запущено n0 рыб, то из закона следует, что количество карпов через год будет таким: n1 = n0 + (kn0 - qn0^2). через два года: n2 = n1 + (kn1 - qn1^2) и так далее. эта формула является моделью процесса размножения рыб в водоеме. проведите вычислительный эксперимент в таблице расчета количества рыб в пруду, поставив следующую цель: подобрать такие значения параметров k и q, при которых количество рыб за 10 лет может быть доведено до 2000. к решению добавьте графическую обработку результатов: график изменения численности рыб с течением времени. выполнить средствами excel.
ответ:Для начала в onCreate() уберите эту строку:
chatContainer.clear()
Нет смысла чистить только созданный пустой список. Дальше я бы вам советовал следующим образом. Для начала при объявлении адаптера не нужно сразу ему передавать список:
lateinit var adapter: RecyclerChatAdapter
Дальше как только ваш список заполнен вы это проверяете в цикле и инициализируете адаптер:
when {
documentSnapshot != null -> {
for (dc in documentSnapshot.documentChanges) {
when (dc.type) {
DocumentChange.Type.ADDED -> {
val chat = dc.document.toObject(Chat::class.java)
chatContainer.add(chat) // Добавление данных в Recycler
if(chatContainer.size == documentSnapshot.documentChanges)
{
adapter = RecyclerChatAdapter(chatContainer)
}
}
}
}
}
}
и дальше сеттинг адаптера как и было у вас в вашем примере. Так же второй вариант как решить вашу проблему, но не уверен что получится, можно в цикле там где вы выводите сообщение в лог обновлять адаптер:
for (i in chatContainer) {
adapter.notifyDataSetChanged()
}
Если создать шаблон строки с автозаполнением, то можно немного у код:
import sys
num_steps = int(sys.argv[1])
fmt_template = '{}.{:>%d}' % num_steps
for x in range(1, num_steps + 1):
print(fmt_template.format(x, '#' * x))
При num_steps = 4:
1. #
2. ##
3. ###
4.
Объяснение:
Все аргументы функции print, указанные через запятую, выводятся разделенные пробелом, отсюда и нестыковка.
Можно так попробовать:
for x in range(1, c+1):
print('{0}{1}{2}'.format(x, " " * (c - x), '#' * x))
Для c = 3:
1 #
2 ##
3###
Либо заменить запятую конкатенацией (знак +):
print(str(x) + " " * (c - x) + '#' * x)