Order by pair comparisons: Difference between revisions
Content added Content deleted
(Added Quackery.) |
|||
Line 306: | Line 306: | ||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |
||
{{incorrect|F_Sharp|Does not prompt user}} |
|||
<lang fsharp> |
<lang fsharp> |
||
// Order by pair comparisons. Nigel Galloway: April 23rd., 2021 |
// Order by pair comparisons. Nigel Galloway: April 23rd., 2021 |
||
type colours= Violet |Red |Green |Indigo |Blue |Yellow |Orange |
type colours= Violet |Red |Green |Indigo |Blue |Yellow |Orange |
||
let clrs=printfn "Enter colours seperated by spaces"; System.Console.ReadLine() |
|||
let fN,fG=let mutable z=0 in ((fun()->z),(fun n g->z<-z+1; compare n g)) |
|||
let fN g=match g with "Violet"->Some(Violet) |"Red"->Some(Red) |"Green"->Some(Green) |"Indigo"->Some(Indigo) |"Blue"->Some(Blue) |"Yellow"->Some(Yellow) |"Orange"->Some(Orange) |_->None |
|||
printfn "[Red;Orange;Yellow;Green;Blue;Indigo;Violet] sorted to %A using %d comparisons" ([Red;Orange;Yellow;Green;Blue;Indigo;Violet]|>List.sortWith(fun n g->fG n g)) (fN()) |
|||
let mutable z=0 in printfn "%s sorted to %A using %d comparisons" clrs (clrs.Split ' '|>Array.choose fN|>Array.sortWith(fun n g->z<-z+1; compare n g)) z |
|||
</lang> |
</lang> |
||
{{out}} |
{{out}} |
||
Typical outputs: |
|||
<pre> |
<pre> |
||
Enter colours seperated by spaces |
|||
⚫ | |||
Blue Red Yellow |
|||
Blue Red Yellow sorted to [|Red; Blue; Yellow|] using 3 comparisons |
|||
Enter colours seperated by spaces |
|||
Red Orange Yellow Green Blue Indigo Violet |
|||
⚫ | |||
</pre> |
</pre> |
||