<jupyter_start><jupyter_text>Демонстрация виджетов Помимо рабочего кода, с которым читатели могут поэкспериментировать, учебник также содержит ряд виджетов, помогающих объяснять определенные концепции. Эта страница содержит выборку из них в качестве указателя. Запустите каждую ячейку, чтобы взаимодействовать с виджетом.**ПРИМЕЧАНИЕ.** Вам потребуется включить интерактивность, нажав «Попробовать» в левом нижнем углу ячейки кода или просмотрев эту страницу в [IBM Quantum Experience](https://quantum-computing.ibm.com/jupyter/user/qiskit-textbook/content/widgets-index.ipynb) . Интерактивный кодВажнейшим интерактивным элементом учебника является возможность изменять и экспериментировать с кодом. Это возможно непосредственно на веб-странице учебника, но читатели также могут просматривать учебник в виде блокнотов Jupyter, где они могут добавлять дополнительные ячейки и сохранять свои изменения. Интерактивный код Python также позволяет использовать виджеты через [ipywidgets](https://ipywidgets.readthedocs.io/en/latest/) , а остальная часть этой страницы посвящена демонстрации некоторых виджетов, предоставляемых учебником Qiskit.<jupyter_code># Click 'try' then 'run' to see the output
print("This is code works!")<jupyter_output><empty_output><jupyter_text>Демонстрация воротЭтот виджет показывает влияние ряда вентилей на кубит, проиллюстрированных через сферу Блоха. Он часто используется в [Single Qubit Gates](https://qiskit.org/textbook/ch-states/single-qubit-gates.html) .<jupyter_code>from qiskit_textbook.widgets import gate_demo
gate_demo()<jupyter_output><empty_output><jupyter_text>Двоичная демонстрацияЭтот простой виджет позволяет читателю взаимодействовать с двоичным числом. Его можно найти в [книге «Атомы вычислений»](https://qiskit.org/textbook/ch-states/atoms-computation.html) .<jupyter_code>from qiskit_textbook.widgets import binary_widget
binary_widget(nbits=5)<jupyter_output><empty_output><jupyter_text>Виджет масштабируемой цепиПри работе со схемами, подобными описанным в [главе «Квантовое преобразование Фурье](https://qiskit.org/textbook/ch-algorithms/quantum-fourier-transform.html) », часто бывает полезно посмотреть, как они масштабируются для разного количества кубитов. Если наша функция принимает схему ( `QuantumCircuit` ) и количество кубитов ( `int` ) в качестве позиционных входных данных, мы можем увидеть, как она масштабируется, используя виджет ниже. Попробуйте изменить код внутри этих функций и перезапустите ячейку.<jupyter_code>from qiskit_textbook.widgets import scalable_circuit
from numpy import pi

def qft_rotations(circuit, n):
    """Performs qft on the first n qubits in circuit (without swaps)"""
    if n == 0:
        return circuit
    n -= 1
    circuit.h(n)
    for qubit in range(n):
        circuit.cp(pi/2**(n-qubit), qubit, n)
    # At the end of our function, we call the same function again on
    # the next qubits (we reduced n by one earlier in the function)
    qft_rotations(circuit, n)

def swap_qubits(circuit, n):
    """Reverse the order of qubits"""
    for qubit in range(n//2):
        circuit.swap(qubit, n-qubit-1)
    return circuit

def qft(circuit, n):
    """QFT on the first n qubits in circuit"""
    qft_rotations(circuit, n)
    swap_qubits(circuit, n)
    return circuit

scalable_circuit(qft)<jupyter_output><empty_output><jupyter_text>Виджет Бернштейна-ВазираниС помощью этого виджета читатель может следить за математикой на примере [алгоритма Бернштейна-Вазирани](https://qiskit.org/textbook/ch-algorithms/bernstein-vazirani.html) . Нажимайте кнопки, чтобы применить различные шаги алгоритма. Первый аргумент устанавливает количество кубитов, а второй устанавливает скрытую двоичную строку, после чего перезапускает ячейку. Вы также можете раскрыть содержимое оракула, установив `hide_oracle=False` и повторно запустив ячейку.<jupyter_code>from qiskit_textbook.widgets import bv_widget
bv_widget(2, "11", hide_oracle=True)<jupyter_output><empty_output><jupyter_text>Виджет Deutsch-JozaПодобно виджету Бернштейна-Вазирани, с помощью виджета Дойча-Йоза читатель может следить за математикой через экземпляр [алгоритма Дойча-Йоза](https://qiskit.org/textbook/ch-algorithms/deutsch-josza.html) . Нажимайте кнопки, чтобы применить различные шаги алгоритма. `case` может быть «сбалансированным» или «постоянным», а `size` может быть «маленьким» или «большим». Повторно запустить ячейку для случайно выбранного оракула. Вы также можете раскрыть содержимое оракула, установив `hide_oracle=False` и повторно запустив ячейку.<jupyter_code>from qiskit_textbook.widgets import dj_widget
dj_widget(size="large", case="balanced", hide_oracle=True)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.07756588815084636, 'fraction_numerical': 0.001928433683308335, 'mean_word_length': 6.159509202453988, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 7, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '566190', 'license': 'Apache-2.0', 'n_tokens_mistral': 1848, 'n_tokens_neox': 2064, 'n_words': 453, 'path': 'notebooks_ru/ch-demos/widgets-index.ipynb', 'repo_name': 'gitlocalize/platypus', 'size': '4667'}