Towers of Hanoi: Difference between revisions
Content added Content deleted
(provide verbose approach) |
No edit summary |
||
Line 1,256: | Line 1,256: | ||
<xsl:call-template name="hanoi"><xsl:with-param name="n" select="4"/></xsl:call-template> |
<xsl:call-template name="hanoi"><xsl:with-param name="n" select="4"/></xsl:call-template> |
||
=={{header|XQuery}}== |
|||
<lang xquery> |
|||
declare function local:hanoi($disk as xs:integer, $from as xs:integer, |
|||
$to as xs:integer, $via as xs:integer) as element()* |
|||
{ |
|||
if($disk > 0) |
|||
then ( |
|||
local:hanoi($disk - 1, $from, $via, $to), |
|||
<move disk='{$disk}'><from>{$from}</from><to>{$to}</to></move>, |
|||
local:hanoi($disk - 1, $via, $to, $from) |
|||
) |
|||
else () |
|||
}; |
|||
<hanoi> |
|||
{ |
|||
local:hanoi(4, 1, 2, 3) |
|||
} |
|||
</hanoi> |
|||
</lang> |
|||
Result is: |
|||
<lang xml> |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<hanoi> |
|||
<move disk="1"> |
|||
<from>1</from> |
|||
<to>3</to> |
|||
</move> |
|||
<move disk="2"> |
|||
<from>1</from> |
|||
<to>2</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>3</from> |
|||
<to>2</to> |
|||
</move> |
|||
<move disk="3"> |
|||
<from>1</from> |
|||
<to>3</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>2</from> |
|||
<to>1</to> |
|||
</move> |
|||
<move disk="2"> |
|||
<from>2</from> |
|||
<to>3</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>1</from> |
|||
<to>3</to> |
|||
</move> |
|||
<move disk="4"> |
|||
<from>1</from> |
|||
<to>2</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>3</from> |
|||
<to>2</to> |
|||
</move> |
|||
<move disk="2"> |
|||
<from>3</from> |
|||
<to>1</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>2</from> |
|||
<to>1</to> |
|||
</move> |
|||
<move disk="3"> |
|||
<from>3</from> |
|||
<to>2</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>1</from> |
|||
<to>3</to> |
|||
</move> |
|||
<move disk="2"> |
|||
<from>1</from> |
|||
<to>2</to> |
|||
</move> |
|||
<move disk="1"> |
|||
<from>3</from> |
|||
<to>2</to> |
|||
</move> |
|||
</hanoi> |
|||
</lang> |