Non-transitive dice: Difference between revisions
Content added Content deleted
(→{{header|F_Sharp|F#}}: Neater nicer naming) |
|||
Line 88: | Line 88: | ||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |
||
<lang fsharp> |
<lang fsharp> |
||
⚫ | |||
// Find all 3(d1,d2,d3) four sided dice with faces valued 1,2,3,or 4 such that over a run d1 beats d2, d2 betas d3, but d3 beats d1. |
|||
let die=let g=[for n0 in [1..4] do for n1 in [n0..4] do for n2 in [n1..4] do for n3 in [n2..4]->[n0;n1;n2;n3]] |
|||
⚫ | |||
[for n in g do for g in g->(n,g)]|>List.filter(fun(n,g)->seq{for n in n do for g in g->compare n g}|>Seq.sum<0) |
|||
match Map.tryFind -1 n,Map.tryFind 1 n with (Some n,Some g)->n>g |(Some _,_)->true |_->false |
|||
let |
let n3=seq{for d1,d2 in die do for _,d3 in die|>List.filter(fun(n,g)->n=d2 && List.contains (g,d1) die)->(d1,d2,d3)} |
||
let |
let n4=seq{for d1,d2 in die do for _,d3 in die|>List.filter(fun(n,_)->n=d2) do for _,d4 in die|>List.filter(fun(n,g)->n=d3 && List.contains (g,d1) die)->(d1,d2,d3,d4)} |
||
⚫ | |||
let l3=seq{for n in i do for g in i->(n,g)}|>Seq.filter(fun((a,n),(g,b))->n=g && List.contains (b,a) i) |
|||
n4|>Seq.iter(fun(d1,d2,d3,d4)->printfn "%A<%A; %A<%A; %A<%A; %A>%A" d1 d2 d2 d3 d3 d4 d1 d4)</lang> |
|||
let l4=seq{for n in i do for g in i do for i in i->(n,g,i)}|>Seq.filter(fun((a,n),(g,b),(x,y))->n=g && b=x && List.contains (y,a) i) |
|||
⚫ | |||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Line 104: | Line 101: | ||
[1; 3; 3; 3]<[1; 1; 4; 4]; [1; 1; 4; 4]<[2; 2; 2; 4]; [1; 3; 3; 3]>[2; 2; 2; 4] |
[1; 3; 3; 3]<[1; 1; 4; 4]; [1; 1; 4; 4]<[2; 2; 2; 4]; [1; 3; 3; 3]>[2; 2; 2; 4] |
||
[2; 2; 2; 4]<[1; 3; 3; 3]; [1; 3; 3; 3]<[1; 1; 4; 4]; [2; 2; 2; 4]>[1; 1; 4; 4] |
[2; 2; 2; 4]<[1; 3; 3; 3]; [1; 3; 3; 3]<[1; 1; 4; 4]; [2; 2; 2; 4]>[1; 1; 4; 4] |
||
Real: 00:00:00.830 |
|||
[1; 1; 4; 4]<[2; 2; 2; 4]; [2; 2; 2; 4]<[2; 2; 3; 3]; [2; 2; 3; 3]<[1; 3; 3; 3]; [1; 1; 4; 4]>[1; 3; 3; 3] |
[1; 1; 4; 4]<[2; 2; 2; 4]; [2; 2; 2; 4]<[2; 2; 3; 3]; [2; 2; 3; 3]<[1; 3; 3; 3]; [1; 1; 4; 4]>[1; 3; 3; 3] |
||
Line 109: | Line 107: | ||
[2; 2; 2; 4]<[2; 2; 3; 3]; [2; 2; 3; 3]<[1; 3; 3; 3]; [1; 3; 3; 3]<[1; 1; 4; 4]; [2; 2; 2; 4]>[1; 1; 4; 4] |
[2; 2; 2; 4]<[2; 2; 3; 3]; [2; 2; 3; 3]<[1; 3; 3; 3]; [1; 3; 3; 3]<[1; 1; 4; 4]; [2; 2; 2; 4]>[1; 1; 4; 4] |
||
[2; 2; 3; 3]<[1; 3; 3; 3]; [1; 3; 3; 3]<[1; 1; 4; 4]; [1; 1; 4; 4]<[2; 2; 2; 4]; [2; 2; 3; 3]>[2; 2; 2; 4] |
[2; 2; 3; 3]<[1; 3; 3; 3]; [1; 3; 3; 3]<[1; 1; 4; 4]; [1; 1; 4; 4]<[2; 2; 2; 4]; [2; 2; 3; 3]>[2; 2; 2; 4] |
||
Real: 00:00:05.867 |
|||
</pre> |
</pre> |
||