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> |
||
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") |
|||
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> |
||