Order by pair comparisons: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: added solution) |
(Added solution for Action!) |
||
Line 28: | Line 28: | ||
* A routine that does not ask the user "too many" comparison questions should be used. |
* A routine that does not ask the user "too many" comparison questions should be used. |
||
<br><br> |
<br><br> |
||
=={{header|Action!}}== |
|||
<lang Action!>DEFINE PTR="CARD" |
|||
PROC PrintArray(PTR ARRAY a BYTE size) |
|||
BYTE i |
|||
Put('[) |
|||
FOR i=0 TO size-1 |
|||
DO |
|||
IF i>0 THEN Put(' ) FI |
|||
Print(a(i)) |
|||
OD |
|||
Put(']) PutE() |
|||
RETURN |
|||
BYTE FUNC IsBefore(CHAR ARRAY a,b) |
|||
DEFINE NO_KEY="255" |
|||
DEFINE KEY_Y="43" |
|||
DEFINE KEY_N="35" |
|||
BYTE CH=$02FC ;Internal hardware value for last key pressed |
|||
BYTE k |
|||
PrintF("Is %S before %S (y/n)? ",a,b) |
|||
CH=NO_KEY ;Flush the keyboard |
|||
DO |
|||
k=CH |
|||
UNTIL k=KEY_Y OR k=KEY_N |
|||
OD |
|||
CH=NO_KEY ;Flush the keyboard |
|||
IF k=KEY_Y THEN |
|||
PrintE("yes") |
|||
RETURN (1) |
|||
FI |
|||
PrintE("no") |
|||
RETURN (0) |
|||
PROC InteractiveInsertionSort(PTR ARRAY a BYTE size) |
|||
INT i,j |
|||
PTR value |
|||
FOR i=1 TO size-1 |
|||
DO |
|||
value=a(i) |
|||
j=i-1 |
|||
WHILE j>=0 AND IsBefore(value,a(j))=1 |
|||
DO |
|||
a(j+1)=a(j) |
|||
j==-1 |
|||
OD |
|||
a(j+1)=value |
|||
OD |
|||
RETURN |
|||
PROC Main() |
|||
DEFINE COUNT="7" |
|||
PTR ARRAY arr(COUNT) |
|||
arr(0)="violet" arr(1)="red" |
|||
arr(2)="green" arr(3)="indigo" |
|||
arr(4)="blue" arr(5)="yellow" |
|||
arr(6)="orange" |
|||
Print("Shuffled array: ") |
|||
PrintArray(arr,COUNT) PutE() |
|||
InteractiveInsertionSort(arr,COUNT) |
|||
PutE() Print("Sorted array: ") |
|||
PrintArray(arr,COUNT) |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Order_by_pair_comparisons.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
Shuffled array: [violet red green indigo blue yellow orange] |
|||
Is red before violet (y/n)? yes |
|||
Is green before violet (y/n)? yes |
|||
Is green before red (y/n)? no |
|||
Is indigo before violet (y/n)? yes |
|||
Is indigo before green (y/n)? no |
|||
Is blue before violet (y/n)? yes |
|||
Is blue before indigo (y/n)? yes |
|||
Is blue before green (y/n)? no |
|||
Is yellow before violet (y/n)? yes |
|||
Is yellow before indigo (y/n)? yes |
|||
Is yellow before blue (y/n)? yes |
|||
Is yellow before green (y/n)? yes |
|||
Is yellow before red (y/n)? no |
|||
Is orange before violet (y/n)? yes |
|||
Is orange before indigo (y/n)? yes |
|||
Is orange before blue (y/n)? yes |
|||
Is orange before green (y/n)? yes |
|||
Is orange before yellow (y/n)? yes |
|||
Is orange before red (y/n)? no |
|||
Sorted array: [red orange yellow green blue indigo violet] |
|||
</pre> |
|||
=={{header|Arturo}}== |
=={{header|Arturo}}== |