Order by pair comparisons: Difference between revisions

Added solution for Action!
(→‎{{header|Haskell}}: added solution)
(Added solution for Action!)
Line 28:
* A routine that does not ask the user "too many" comparison questions should be used.
<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}}==
Anonymous user