Order by pair comparisons: Difference between revisions

Content added Content deleted
(Code inputs)
Line 32: Line 32:


=={{header|Julia}}==
=={{header|Julia}}==
{{Clarified-review|Julia}}
=== Using external function ===
Uses shell sort, just because it sort of fits the task, metaphorically, as if it were with variously colored peas.
<lang julia>const nrequests = [0]
<lang julia>const nrequests = [0]
const ordering = Dict("violet" => 7, "red" => 1, "green" => 4, "indigo" => 6, "blue" => 5,
const ordering = Dict("violet" => 7, "red" => 1, "green" => 4, "indigo" => 6, "blue" => 5,
"yellow" => 3, "orange" => 2)
"yellow" => 3, "orange" => 2)

tellmeifgt(x, y) = (nrequests[1] += 1; ordering[x] > ordering[y])
function tellmeifgt(x, y)
nrequests[1] += 1
s = " "
while true
print("Is $x greater than $y? (Y/N) => ")
s = strip(readline())
if length(s) > 0
(s[1] == 'Y' || s[1] == 'y') && return true
(s[1] == 'N' || s[1] == 'n') && return false
s = ""
end
end
end


function orderbypair!(a::Vector)
function orderbypair!(a::Vector)
Line 66: Line 76:
</lang>{{out}}
</lang>{{out}}
<pre>
<pre>
Unsorted: ["violet", "red", "green", "indigo", "blue", "yellow", "orange"]
Is violet greater than indigo? (Y/N) => y
Is red greater than blue? (Y/N) => n
Sorted: ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]. Total requests: 14.
Is green greater than yellow? (Y/N) => y
</pre>
Is violet greater than orange? (Y/N) => y

Is indigo greater than orange? (Y/N) => y
=== Using the builtin sort function ===
Is orange greater than red? (Y/N) => n
Probably this uses MergeSort internally, per the Julia documentation.
Is red greater than yellow? (Y/N) => n
<lang julia>const nrequests = [0]
Is yellow greater than indigo? (Y/N) => n
const ordering = Dict("violet" => 7, "red" => 1, "green" => 4, "indigo" => 6, "blue" => 5,
Is indigo greater than blue? (Y/N) => y
"yellow" => 3, "orange" => 2)
Is yellow greater than blue? (Y/N) => n
tellmeiflt(x, y) = (nrequests[1] += 1; ordering[x] < ordering[y])
Is indigo greater than green? (Y/N) => n
const words = String.(split("violet red green indigo blue yellow orange", r"\s+"))
Is green greater than violet? (Y/N) => n
println("Unsorted: $words")
println("Sorted: $(sort!(words, lt=tellmeiflt)). Total requests: $(nrequests[1]).")
Sorted: ["orange", "red", "yellow", "blue", "indigo", "green", "violet"]. Total requests: 12.
</lang>{{out}}
<pre>
Unsorted: ["violet", "red", "green", "indigo", "blue", "yellow", "orange"]
Sorted: ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]. Total requests: 19.
</pre>
</pre>