Подсчет вхождений определенных переменных в пределах «для l oop» и / или «в то время как l oop» в lua и определение их индекса - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь выяснить, сколько раз определенная переменная встречается в течение или в течение l oop, а затем t ie их до правильного индекса (i). Я буду использовать буквы, чтобы привести пример того, что я пробовал.

Пример: «Список писем (индекс)» содержит случайные буквы из az в каждом индексе. Я хочу посмотреть, сколько раз буква b встречается в l oop.

for i = 1, 10 do
  B_LetterCount = 0
  letter = Letterlist(i)
  if letter == b then
    B_LetterID = i
    B_LetterCount = B_LetterCount + 1
  end
end

. Как вы, вероятно, можете сказать, что l oop не будет работать, потому что последнее вхождение буквы B будет перезаписать идентификатор любого из других вхождений. Например, если:

1 = a
2 = b
3 = h
4 = b
5 = y
6 = t
7 = a
8 = b
9 = e
10 = k

Тогда b встречается в индексах 2, 4 и 8. Есть ли способ подсчитать их, а также установить для них переменную ID, как показано в моем примере l oop: B_LetterID = i, B_LetterID2 = i и так далее. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 апреля 2020

Я предоставлю вам право изменять код в соответствии с вашими потребностями. Вы должны получить идею.

local list = {"a", "b", "h", "b", "y", "t", "a", "b", "e", "k"}

local indices = {}
local counts = {}
for i,v in ipairs(list) do
  indices[v] = indices[v] or {}
  table.insert(indices[v], i)
  counts[v] = counts[v] and (counts[v] + 1) or 1
end

for k,v in pairs(counts) do
  print(string.format("%d %q at:", v, k)) 
  print(table.unpack(indices[k]))
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...