@problem@
	@problemtype@
		dragdrop
	@;problemtype@
	@name@
		tutorial_19_drag_and_drop_questions
	@endname@
	@background@
		@label@ background1 @;label@
		@image@ images/dd_equation.png @;image@
	@;background@
	@drag@
		@label@ plus @;label@
		@image@ images/dd_plus.png @;image@
		@group@ 1 @;group@
	@;drag@
	@drag@
		@label@ minus @;label@
		@image@ images/dd_minus.png @;image@
		@group@ 1 @;group@
	@;drag@
	@drag@
		@label@ lessequal @;label@
		@image@ images/dd_lessequal.png @;image@
		@group@ 1 @;group@
	@;drag@
	@drop@
		@label@ position1 @;label@
		@left@ 199 @;left@
		@top@ 14 @;top@
	@;drop@
	@drop@
		@label@ position2 @;label@
		@left@ 199 @;left@
		@top@ 140 @;top@
	@;drop@
	@drop@
		@label@ position3 @;label@
		@left@ 377 @;left@
		@top@ 140 @;top@
	@;drop@
	@content@
		The 'dragdrop' problem type, as the name implies, can be used to create basic drag-and-drop type problems. Such a problem consists of four main parts:
		@itemize@
			@item@ a background image,@;item@
			@item@ multiple drag items, each with a different image,@;item@
			@item@ multiple drop positions,@;item@
			@item@ a solution specifying which drag item needs to be placed in each position.@;item@
		@;itemize@
		It is possible to define multiple background images as well as more drag items or drop positions than required. In that case, the choice for each problem instance can be randomized with the appropriate code in the preamble.
		@lb;@
		For the background and the drag items, it is sufficient to provide the path to a single image file each. The drop positions are defined via their offset (in pixels) from the top left corner of the background image. In addition, each background, drag item and drop position needs to have a unique label in the form of an arbitrary string.
		@lb;@
		Finally, in the content of every drag-and-drop type problem, there needs to be exactly one call to the function 'dragdrop'. The arguments of this function are, in order,
		@itemize@
			@item@ the number of points awarded for the correct solution,@;item@
			@item@ the label of the background image,@;item@
			@item@ the solution to the problem (a dictionary) in the form {positionLabel:itemLabel, ...}, where each drop position is assigned exactly one correct corresponding drag item (note that there can be more drag items than drop positions),@;item@
			@item@ a list of all drop positions to be used,@;item@
			@item@ a list of all drag items to be used.@;item@
		@;itemize@
		The last two arguments can be omitted, in which case all drop positions and drag items are included.
		@lb;@
		Using the definitions above, we can specify the following drag-and-drop problem.
		
		@pb;@
		@hr;@
		@pb;@
		
		Place the symbols such that the resulting statements are true.
		@pb;@

		@dragdrop(100, "background1", { "position1":"plus", "position2":"minus", "position3":"lessequal" }, ["position1","position2","position3"], ["plus","minus","lessequal"])@
	@;content@
@;problem@