Dutch national flag problem: Difference between revisions
Content added Content deleted
(→{{header|AppleScript}}: Further minor tidy. Also added solution using Dijkstra's algorithm.) |
(Added XPL0 example.) |
||
Line 4,089: | Line 4,089: | ||
Before sorting : [Blue, Blue, White, Blue, White, Blue, Red, White, White] |
Before sorting : [Blue, Blue, White, Blue, White, Blue, Red, White, White] |
||
After sorting : [Red, White, White, White, White, Blue, Blue, Blue, Blue] |
After sorting : [Red, White, White, White, White, Blue, Blue, Blue, Blue] |
||
</pre> |
|||
=={{header|XPL0}}== |
|||
<syntaxhighlight lang "XPL0"> |
|||
def Red, White, Blue; |
|||
def Size = 10; |
|||
int A(Size), N; |
|||
proc ShowOrder; |
|||
[for N:= 0 to Size-1 do |
|||
case A(N) of |
|||
Red: Text(0, "Red "); |
|||
Blue: Text(0, "Blue ") |
|||
other Text(0, "White "); |
|||
CrLf(0); |
|||
]; |
|||
proc Part3Ways; \Partition array A three ways (code from Wikipedia) |
|||
int Mid, I, J, K, T; |
|||
[Mid:= White; I:= 0; J:= 0; K:= Size-1; |
|||
while J <= K do |
|||
if A(J) < Mid then |
|||
[T:= A(I); A(I):= A(J); A(J):= T; |
|||
I:= I+1; |
|||
J:= J+1; |
|||
] |
|||
else if A(J) > Mid then |
|||
[T:= A(J); A(J):= A(K); A(K):= T; |
|||
K:= K-1; |
|||
] |
|||
else J:= J+1; |
|||
]; |
|||
[for N:= 0 to Size-1 do A(N):= Ran(3); |
|||
Text(0, "Original order : "); |
|||
ShowOrder; |
|||
Part3Ways; |
|||
Text(0, "Sorted order : "); |
|||
ShowOrder; |
|||
]</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Original order : Red Red Blue Blue White Red Red White Blue Red |
|||
Sorted order : Red Red Red Red Red White White Blue Blue Blue |
|||
</pre> |
</pre> |
||