Компонент MathJax React - это то, что вы искали.
Импортируйте пакет и заполните свойство math некоторым текстом, содержащим ваши форматы. Wrap TeX в $ или $$ и ASCIImath в `. Paste MathML as is.
Вот пример:
import React, {Component} from 'react'
import {render} from 'react-dom'
import MathJax from 'react-mathjax-preview'
const asciimath = '`sum_(i=1)^n i^3=((n(n+1))/2)^2`' # Because of the backtick
const math = String.raw`
$$\lim_{x \to \infty} \exp(-x) = 0$$
${asciimath}`
class Demo extends Component {
constructor(props) {
super(props);
this.state = {
math: tex
}
render() {
return
}
}
У них также есть более продвинутое демо внутри репозитория.
PS: Я видел одну проблему , связанную с MathML в своем репо. Обходной путь описан там.
Сначала я собрал бы ваши позиции в сетке в collections.defaultdict
или наборах, а затем перестроил строки строчными буквами, если их позиции существуют в этих наборах.
Демонстрация:
from collections import defaultdict
grid1 = ["PIGATOS", "ANRBKFD", "TMCAOXA", "OOBBYQU", "MACOUIV", "EEJMIWL"]
positions_words_occupy = (
(0, 0),
(1, 0),
(2, 0),
(3, 0),
(0, 2),
(0, 3),
(0, 4),
(0, 5),
(3, 2),
(4, 3),
(5, 4),
(2, 2),
(2, 3),
(2, 4),
)
d = defaultdict(set)
for grid, pos in positions_words_occupy:
d[grid].add(pos)
result = []
for grid, pos in d.items():
result.append(
"".join(x.lower() if i in pos else x for i, x in enumerate(grid1[grid]))
)
print(result)
Выход:
['pIgatoS', 'aNRBKFD', 'tMcaoXA', 'oObBYQU', 'MACoUIV', 'EEJMiWL']
Вы очень близки! Вы фактически добавляете в свой новый список new
каждый раз, когда заменяете письмо. Вот почему вы получаете так много значений в вашем списке.
Еще один способ запуска кода - создать копию grid1, а затем заменять каждое слово при каждой замене буквы. Вот новая функция, реализующая эти небольшие изменения:
def lower_words(grid, positions_words_occupy):
new = grid1.copy()
for position in positions_words_occupy:
line= position[0]
column= position[1]
row= new[line]
element= row[column]
#new.remove(row)
new_word = row[:column] + element.lower() + row[column+1:]
new[line] = new_word
return new
Выход работает lower_words(grid1, positions_words_occupy)
:
['pIgatoS', 'aNRBKFD', 'tMcaoXa', 'oObBYQU', 'MACoUIV', 'EEJMiWL']