Генерирование интернет-викторин
Mathematica позволяет легко создавать и развертывать онлайн-формы, используя новые встроенные функции. Такие формы могут быть развернуты в облачной системе файлов, что обеспечивает постоянное хранение кода, данных, и вычислений, а также мгновенный доступ к данным с помощью активных документов и приложений. Эти возможности показаны здесь за счет создания двух онлайн-викторин, в которых пользователи отгадывают крупные города и популярные фильмы.
Создадим викторину о крупных городах США в облачной системе файлов.

CloudDeploy[
FormFunction[{"city",
"How many of the 10 most populous US cities can you name?"} ->
RepeatingElement[
Restricted[
"City", {"Country" -> Entity["Country", "UnitedStates"],
"Population" -> TakeLargest[10]}], {1, {1, 10}}],
GeoListPlot[{#city,
Complement[
EntityList@
Entity["City", {"Country" -> Entity["Country", "UnitedStates"],
"Population" -> TakeLargest[10]}], #city]},
GeoLabels -> True, PlotLegends -> {"OK", "Missed"}] &, "PNG"]]
Просмотрим созданную форму для данной викторины.

Если хотя бы одно из полей ввода не содержит название города, входящего в десятку крупнейших городов США, форма будет отображать сообщение об ошибке.


Теперь создадим викторину о популярных фильмах в облачной системе файлов.

CloudDeploy[
FormFunction[{"movies",
"How many of the 10 top grossing movies by Steven Spielberg can \
you name?"} ->
RepeatingElement[
Restricted[
"Movie", {"Director" ->
Entity["Person", "StevenSpielberg::76z25"],
"DomesticBoxOfficeGross" -> TakeLargest[10]}], {1, {1, 10}}],
With[{images =
EntityValue[
EntityClass[
"Movie", {"Director" ->
Entity["Person", "StevenSpielberg::76z25"],
"DomesticBoxOfficeGross" -> TakeLargest[10]}], "Image",
"EntityAssociation"]},
Grid[{
{"you guessed", Length[#movies],
ImageCollage[Values[KeyTake[images, #movies]]]}, {"you missed",
10 - Length[#movies],
ImageCollage[Values[KeyDrop[images, #movies]]]}
}, Frame -> All, Alignment -> Left]] &]]
Перейдем на созданную страницу, чтобы протестировать форму с вопросами викторины.

