Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
124
Task/Non-transitive-dice/C++/non-transitive-dice.cpp
Normal file
124
Task/Non-transitive-dice/C++/non-transitive-dice.cpp
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
void print_vector(const std::vector<uint32_t>& list) {
|
||||
std::cout << "[";
|
||||
for ( uint64_t i = 0; i < list.size() - 1; ++i ) {
|
||||
std::cout << list[i] << ", ";
|
||||
}
|
||||
std::cout << list.back() << "]";
|
||||
}
|
||||
|
||||
void display_table(const std::vector<std::vector<uint32_t>> table) {
|
||||
std::cout << "[";
|
||||
for ( uint64_t i = 0; i < table.size() - 1; ++i ) {
|
||||
print_vector(table[i]);
|
||||
std::cout << ", ";
|
||||
}
|
||||
print_vector(table.back());
|
||||
std::cout << "]" << "\n";
|
||||
}
|
||||
|
||||
std::vector<std::vector<uint32_t>> four_face_combinations() {
|
||||
std::vector<std::vector<uint32_t>> result = { };
|
||||
std::set<uint32_t> found = { };
|
||||
|
||||
for ( uint32_t i = 1; i <= 4; ++i ) {
|
||||
for ( uint32_t j = 1; j <= 4; ++j ) {
|
||||
for ( uint32_t k = 1; k <= 4; ++k ) {
|
||||
for ( uint32_t l = 1; l <= 4; ++l ) {
|
||||
std::vector<uint32_t> combo = { i, j, k, l };
|
||||
std::sort(combo.begin(), combo.end());
|
||||
|
||||
const uint32_t key = 64 * combo[0] + 16 * combo[1] + 4 * combo[2] + combo[3];
|
||||
if ( found.insert(key).second ) {
|
||||
result.emplace_back(combo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool comparator(const std::vector<uint32_t>& one, const std::vector<uint32_t>& two) {
|
||||
uint32_t one_wins = 0;
|
||||
uint32_t two_wins = 0;
|
||||
for ( uint32_t i = 0; i < 4; ++i ) {
|
||||
for ( uint32_t j = 0; j < 4; ++j ) {
|
||||
if ( one[i] > two[j] ) {
|
||||
one_wins++;
|
||||
} else if ( one[i] < two[j] ) {
|
||||
two_wins++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ( one_wins < two_wins );
|
||||
}
|
||||
|
||||
std::vector<std::vector<std::vector<uint32_t>>> find_intransitive_3(
|
||||
const std::vector<std::vector<uint32_t>>& combos) {
|
||||
std::vector<std::vector<std::vector<uint32_t>>> result = { };
|
||||
|
||||
for ( uint64_t i = 0; i < combos.size(); ++i ) {
|
||||
for ( uint64_t j = 0; j < combos.size(); ++j ) {
|
||||
if ( comparator(combos[i], combos[j]) ) {
|
||||
for ( const std::vector<uint32_t>& combo : combos ) {
|
||||
if ( comparator(combos[j], combo) && comparator(combo, combos[i]) ) {
|
||||
std::vector<std::vector<uint32_t>> entry = { combos[i], combos[j], combo };
|
||||
result.emplace_back(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<std::vector<std::vector<uint32_t>>> find_intransitive_4(
|
||||
const std::vector<std::vector<uint32_t>>& combos) {
|
||||
std::vector<std::vector<std::vector<uint32_t>>> result = { };
|
||||
|
||||
for ( uint64_t i = 0; i < combos.size(); ++i ) {
|
||||
for ( uint64_t j = 0; j < combos.size(); ++j ) {
|
||||
if ( comparator(combos[i], combos[j]) ) {
|
||||
for ( uint64_t k = 0; k < combos.size(); ++k ) {
|
||||
if ( comparator(combos[j], combos[k]) ) {
|
||||
for ( const std::vector<uint32_t>& combo : combos ) {
|
||||
if ( comparator(combos[k], combo) && comparator(combo, combos[i]) ) {
|
||||
std::vector<std::vector<uint32_t>> entry =
|
||||
{ combos[i], combos[j], combos[k], combo };
|
||||
result.emplace_back(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::vector<std::vector<uint32_t>> combinations = four_face_combinations();
|
||||
std::cout << "The number of eligible 4-faced dice: " << combinations.size() << "\n\n";
|
||||
|
||||
std::vector<std::vector<std::vector<uint32_t>>> intransitive_3 = find_intransitive_3(combinations);
|
||||
std::cout << intransitive_3.size() << " ordered lists of 3 non-transitive dice found, namely:" << "\n";
|
||||
for ( const std::vector<std::vector<uint32_t>>& table : intransitive_3 ) {
|
||||
display_table(table);
|
||||
}
|
||||
std::cout << "\n";
|
||||
|
||||
std::vector<std::vector<std::vector<uint32_t>>> intransitive_4 = find_intransitive_4(combinations);
|
||||
std::cout << intransitive_4.size() << " ordered lists of 4 non-transitive dice found, namely:" << "\n";
|
||||
for ( const std::vector<std::vector<uint32_t>>& table : intransitive_4 ) {
|
||||
display_table(table);
|
||||
}
|
||||
}
|
||||
145
Task/Non-transitive-dice/FreeBASIC/non-transitive-dice.basic
Normal file
145
Task/Non-transitive-dice/FreeBASIC/non-transitive-dice.basic
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
'#include "sort.bas"
|
||||
|
||||
Sub fourFaceCombs(res() As Integer Ptr, found() As Boolean)
|
||||
Dim As Integer i, j, k, l, m, index, key
|
||||
|
||||
index = 0
|
||||
For i = 1 To 4
|
||||
For j = 1 To 4
|
||||
For k = 1 To 4
|
||||
For l = 1 To 4
|
||||
Dim As Integer c(3) = {i, j, k, l}
|
||||
Sort(c())
|
||||
|
||||
key = 64 * (c(0) - 1) + 16 * (c(1) - 1) + 4 * (c(2) - 1) + (c(3) - 1)
|
||||
If Not found(key) Then
|
||||
found(key) = true
|
||||
Redim Preserve res(index)
|
||||
res(index) = Callocate(4 * Sizeof(Integer))
|
||||
For m = 0 To 3
|
||||
res(index)[m] = c(m)
|
||||
Next
|
||||
index += 1
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Function cmp(x As Integer Ptr, y As Integer Ptr) As Integer
|
||||
Dim As Integer i, j, xw, yw
|
||||
|
||||
xw = 0
|
||||
yw = 0
|
||||
For i = 0 To 3
|
||||
For j = 0 To 3
|
||||
If x[i] > y[j] Then
|
||||
xw += 1
|
||||
Elseif y[j] > x[i] Then
|
||||
yw += 1
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
Return Sgn(xw - yw)
|
||||
End Function
|
||||
|
||||
Sub findIntransitive3(cs() As Integer Ptr, res() As Integer Ptr Ptr)
|
||||
Dim As Integer i, j, k, c, index
|
||||
|
||||
c = Ubound(cs)
|
||||
index = 0
|
||||
For i = 0 To c
|
||||
For j = 0 To c
|
||||
For k = 0 To c
|
||||
If cmp(cs(i), cs(j)) = -1 Then
|
||||
If cmp(cs(j), cs(k)) = -1 Then
|
||||
If cmp(cs(i), cs(k)) = 1 Then
|
||||
Redim Preserve res(index)
|
||||
res(index) = Callocate(3 * Sizeof(Integer Ptr))
|
||||
res(index)[0] = cs(i)
|
||||
res(index)[1] = cs(j)
|
||||
res(index)[2] = cs(k)
|
||||
index += 1
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Sub findIntransitive4(cs() As Integer Ptr, res() As Integer Ptr Ptr)
|
||||
Dim As Integer i, j, k, l, c, index
|
||||
|
||||
c = Ubound(cs)
|
||||
index = 0
|
||||
For i = 0 To c
|
||||
For j = 0 To c
|
||||
For k = 0 To c
|
||||
For l = 0 To c
|
||||
If cmp(cs(i), cs(j)) = -1 Then
|
||||
If cmp(cs(j), cs(k)) = -1 Then
|
||||
If cmp(cs(k), cs(l)) = -1 Then
|
||||
If cmp(cs(i), cs(l)) = 1 Then
|
||||
Redim Preserve res(index)
|
||||
res(index) = Callocate(4 * Sizeof(Integer Ptr))
|
||||
res(index)[0] = cs(i)
|
||||
res(index)[1] = cs(j)
|
||||
res(index)[2] = cs(k)
|
||||
res(index)[3] = cs(l)
|
||||
index += 1
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Sub Main()
|
||||
Dim As Integer i, j, k
|
||||
Dim As Integer Ptr combs()
|
||||
Dim As Boolean found(255)
|
||||
fourFaceCombs(combs(), found())
|
||||
Print "Number of eligible 4-faced dice"; Ubound(combs) + 1
|
||||
|
||||
Dim it3() As Integer Ptr Ptr
|
||||
findIntransitive3(combs(), it3())
|
||||
Print
|
||||
Print Ubound(it3) + 1; " ordered lists of 3 non-transitive dice found, namely:"
|
||||
For i = 0 To Ubound(it3)
|
||||
Print "[";
|
||||
For j = 0 To 2
|
||||
Print "[";
|
||||
For k = 0 To 3
|
||||
Print it3(i)[j][k]; ",";
|
||||
Next
|
||||
Print Chr(8); " ], ";
|
||||
Next
|
||||
Print Chr(8); Chr(8); "]"
|
||||
Next
|
||||
|
||||
Dim it4() As Integer Ptr Ptr
|
||||
findIntransitive4(combs(), it4())
|
||||
Print
|
||||
Print Ubound(it4) + 1; " ordered lists of 4 non-transitive dice found, namely:"
|
||||
For i = 0 To Ubound(it4)
|
||||
Print "[";
|
||||
For j = 0 To 3
|
||||
Print "[";
|
||||
For k = 0 To 3
|
||||
Print it4(i)[j][k]; ",";
|
||||
Next
|
||||
Print Chr(8); " ], ";
|
||||
Next
|
||||
Print Chr(8); Chr(8); "]"
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Main()
|
||||
|
||||
Sleep
|
||||
|
|
@ -1,221 +1,217 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #7060A8;">requires</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"0.8.2"</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- (added sq_cmp() builtin that returns nested -1/0/+1 compare() results, just like the existing sq_eq() does for equal().)</span>
|
||||
with javascript_semantics
|
||||
integer mx = 4, -- max number of a die side (later set to 6)
|
||||
mn = 1 -- min number of a die side (later set to 0)
|
||||
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">mx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">-- max number of a die side (later set to 6)</span>
|
||||
<span style="color: #000000;">mn</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- min number of a die side (later set to 0)</span>
|
||||
function possible_dice(integer sides)
|
||||
--
|
||||
-- construct all non-descending permutes of mn..mx,
|
||||
-- ie/eg {1,1,1,1}..{4,4,4,4} with (say), amongst
|
||||
-- others, {1,1,2,4} but not {1,1,4,2}.
|
||||
--
|
||||
sequence die = repeat(mn,sides), -- (main work area)
|
||||
res = {deep_copy(die)}
|
||||
while true do
|
||||
-- find rightmost incrementable side
|
||||
-- ie/eg {1,2,4,4} -> set rdx to 2 (if 1-based indexing)
|
||||
integer rdx = rfind(true,sq_lt(die,mx))
|
||||
if rdx=0 then exit end if
|
||||
-- set that and all later to that incremented
|
||||
-- ie/eg {1,2,4,4} -> {1,3,3,3}
|
||||
die[rdx..$] = die[rdx]+1
|
||||
res = append(res,deep_copy(die))
|
||||
end while
|
||||
printf(1,"There are %d possible %d..%d %d-sided dice\n",{length(res),mn,mx,sides})
|
||||
return res
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">possible_dice</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">sides</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000080;font-style:italic;">--
|
||||
-- construct all non-descending permutes of mn..mx,
|
||||
-- ie/eg {1,1,1,1}..{4,4,4,4} with (say), amongst
|
||||
-- others, {1,1,2,4} but not {1,1,4,2}.
|
||||
--</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">die</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">mn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sides</span><span style="color: #0000FF;">),</span> <span style="color: #000080;font-style:italic;">-- (main work area)</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die</span><span style="color: #0000FF;">)}</span>
|
||||
<span style="color: #008080;">while</span> <span style="color: #004600;">true</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000080;font-style:italic;">-- find rightmost incrementable side
|
||||
-- ie/eg {1,2,4,4} -> set rdx to 2 (if 1-based indexing)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">rdx</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">rfind</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sq_lt</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mx</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">rdx</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000080;font-style:italic;">-- set that and all later to that incremented
|
||||
-- ie/eg {1,2,4,4} -> {1,3,3,3}</span>
|
||||
<span style="color: #000000;">die</span><span style="color: #0000FF;">[</span><span style="color: #000000;">rdx</span><span style="color: #0000FF;">..$]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">die</span><span style="color: #0000FF;">[</span><span style="color: #000000;">rdx</span><span style="color: #0000FF;">]+</span><span style="color: #000000;">1</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"There are %d possible %d..%d %d-sided dice\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">),</span><span style="color: #000000;">mn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mx</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sides</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function Dnn(sequence die)
|
||||
-- reconstruct the python die numbering (string)
|
||||
-- essentially just treat it as a base-N number.
|
||||
integer l = length(die), -- (sides)
|
||||
N = mx-mn+1, -- (base)
|
||||
n = 0 -- (result)
|
||||
for k=1 to l do
|
||||
n += (die[k]-mn)*power(N,l-k)
|
||||
end for
|
||||
return sprintf("D%d",n+1)
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">Dnn</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">die</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000080;font-style:italic;">-- reconstruct the python die numbering (string)
|
||||
-- essentially just treat it as a base-N number.</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die</span><span style="color: #0000FF;">),</span> <span style="color: #000080;font-style:italic;">-- (sides)</span>
|
||||
<span style="color: #000000;">N</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">mx</span><span style="color: #0000FF;">-</span><span style="color: #000000;">mn</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">-- (base)</span>
|
||||
<span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span> <span style="color: #000080;font-style:italic;">-- (result)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">l</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">n</span> <span style="color: #0000FF;">+=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">die</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]-</span><span style="color: #000000;">mn</span><span style="color: #0000FF;">)*</span><span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">N</span><span style="color: #0000FF;">,</span><span style="color: #000000;">l</span><span style="color: #0000FF;">-</span><span style="color: #000000;">k</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"D%d"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function cmpd(sequence die1, die2)
|
||||
-- compares two die returning -1, 0, or +1 for <, =, >
|
||||
integer res = 0
|
||||
for i=1 to length(die1) do
|
||||
res += sum(sq_cmp(die1[i],die2))
|
||||
end for
|
||||
return sign(res)
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">cmpd</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">die1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">die2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000080;font-style:italic;">-- compares two die returning -1, 0, or +1 for <, =, ></span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die1</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">+=</span> <span style="color: #7060A8;">sum</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_cmp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die1</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #000000;">die2</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #7060A8;">sign</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function low_rotation(sequence set)
|
||||
integer k = find(min(set),set)
|
||||
return set[k..$]&set[1..k-1]
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">low_rotation</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">min</span><span style="color: #0000FF;">(</span><span style="color: #000000;">set</span><span style="color: #0000FF;">),</span><span style="color: #000000;">set</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">..$]&</span><span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">k</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
integer rotations
|
||||
function find_non_trans(sequence dice, integer n=3)
|
||||
atom t1 = time()+1
|
||||
integer l = length(dice), sk, sk1, c
|
||||
sequence set = repeat(1,n), -- (indexes to dice)
|
||||
cache = repeat(repeat(-2,l),l),
|
||||
res = {}
|
||||
while true do
|
||||
bool valid = true
|
||||
for k=1 to n-1 do
|
||||
sk = set[k]
|
||||
sk1 = set[k+1]
|
||||
c = cache[sk][sk1]
|
||||
if c=-2 then
|
||||
c = cmpd(dice[sk],dice[sk1])
|
||||
cache[sk][sk1] = c
|
||||
end if
|
||||
if c!=-1 then
|
||||
valid = false
|
||||
-- force k+1 to be incremented next:
|
||||
set[k+2..$] = l
|
||||
exit
|
||||
end if
|
||||
end for
|
||||
if valid then
|
||||
sk = set[1]
|
||||
sk1 = set[$]
|
||||
c = cache[sk][sk1]
|
||||
if c=-2 then
|
||||
c = cmpd(dice[sk],dice[sk1])
|
||||
cache[sk][sk1] = c
|
||||
end if
|
||||
if c=+1 then
|
||||
res = append(res,low_rotation(set))
|
||||
end if
|
||||
end if
|
||||
-- find rightmost incrementable die index
|
||||
-- ie/eg if l is 35 and set is {1,2,35,35}
|
||||
-- -> set rdx to 2 (if 1-based indexing)
|
||||
integer rdx = rfind(true,sq_lt(set,l))
|
||||
if rdx=0 then exit end if
|
||||
-- increment that and reset all later
|
||||
-- ie/eg {1,2,35,35} -> {1,3,1,1}
|
||||
set[rdx] += 1
|
||||
set[rdx+1..$] = 1
|
||||
if time()>t1 and platform()!=JS then
|
||||
progress("working... (%d/%d)\r",{set[1],l})
|
||||
t1 = time()+1
|
||||
end if
|
||||
end while
|
||||
if platform()!=JS then
|
||||
progress("")
|
||||
end if
|
||||
rotations = length(res)
|
||||
res = unique(res)
|
||||
rotations -= length(res)
|
||||
return res
|
||||
end function
|
||||
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">rotations</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">t1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()+</span><span style="color: #000000;">1</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">sk</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">sk1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">c</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">set</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">),</span> <span style="color: #000080;font-style:italic;">-- (indexes to dice)</span>
|
||||
<span style="color: #000000;">cache</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">l</span><span style="color: #0000FF;">),</span><span style="color: #000000;">l</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
|
||||
<span style="color: #008080;">while</span> <span style="color: #004600;">true</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">bool</span> <span style="color: #000000;">valid</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">true</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">sk</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #000000;">sk1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cache</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk</span><span style="color: #0000FF;">][</span><span style="color: #000000;">sk1</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=-</span><span style="color: #000000;">2</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cmpd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk</span><span style="color: #0000FF;">],</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk1</span><span style="color: #0000FF;">])</span>
|
||||
<span style="color: #000000;">cache</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk</span><span style="color: #0000FF;">][</span><span style="color: #000000;">sk1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">c</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">!=-</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">valid</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">false</span>
|
||||
<span style="color: #000080;font-style:italic;">-- force k+1 to be incremented next:</span>
|
||||
<span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..$]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">l</span>
|
||||
<span style="color: #008080;">exit</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">valid</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">sk</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #000000;">sk1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">[$]</span>
|
||||
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cache</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk</span><span style="color: #0000FF;">][</span><span style="color: #000000;">sk1</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=-</span><span style="color: #000000;">2</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cmpd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk</span><span style="color: #0000FF;">],</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk1</span><span style="color: #0000FF;">])</span>
|
||||
<span style="color: #000000;">cache</span><span style="color: #0000FF;">[</span><span style="color: #000000;">sk</span><span style="color: #0000FF;">][</span><span style="color: #000000;">sk1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">c</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=+</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #000000;">low_rotation</span><span style="color: #0000FF;">(</span><span style="color: #000000;">set</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000080;font-style:italic;">-- find rightmost incrementable die index
|
||||
-- ie/eg if l is 35 and set is {1,2,35,35}
|
||||
-- -> set rdx to 2 (if 1-based indexing)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">rdx</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">rfind</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sq_lt</span><span style="color: #0000FF;">(</span><span style="color: #000000;">set</span><span style="color: #0000FF;">,</span><span style="color: #000000;">l</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">rdx</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000080;font-style:italic;">-- increment that and reset all later
|
||||
-- ie/eg {1,2,35,35} -> {1,3,1,1}</span>
|
||||
<span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">rdx</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">rdx</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..$]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()></span><span style="color: #000000;">t1</span> <span style="color: #008080;">and</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">progress</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"working... (%d/%d)\r"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">],</span><span style="color: #000000;">l</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #000000;">t1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()+</span><span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">progress</span><span style="color: #0000FF;">(</span><span style="color: #008000;">""</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000000;">rotations</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">unique</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">rotations</span> <span style="color: #0000FF;">-=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function verbose_cmp(sequence die1, die2)
|
||||
-- compares two die returning their relationship of their names as a string
|
||||
integer c = cmpd(die1,die2)
|
||||
string op = {"<","=",">"}[c+2],
|
||||
n1 = Dnn(die1),
|
||||
n2 = Dnn(die2)
|
||||
return sprintf("%s %s %s",{n1,op,n2})
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">verbose_cmp</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">die1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">die2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000080;font-style:italic;">-- compares two die returning their relationship of their names as a string</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cmpd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">die2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">string</span> <span style="color: #000000;">op</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"<"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"="</span><span style="color: #0000FF;">,</span><span style="color: #008000;">">"</span><span style="color: #0000FF;">}[</span><span style="color: #000000;">c</span><span style="color: #0000FF;">+</span><span style="color: #000000;">2</span><span style="color: #0000FF;">],</span>
|
||||
<span style="color: #000000;">n1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">Dnn</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die1</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">n2</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">Dnn</span><span style="color: #0000FF;">(</span><span style="color: #000000;">die2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%s %s %s"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">n1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">op</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n2</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function verbose_dice_cmp(sequence dice, set)
|
||||
sequence c = {}, d1, d2
|
||||
for j=1 to length(set)-1 do
|
||||
d1 = dice[set[j]]
|
||||
d2 = dice[set[j+1]]
|
||||
c = append(c,verbose_cmp(d1,d2))
|
||||
end for
|
||||
d1 = dice[set[1]]
|
||||
d2 = dice[set[$]]
|
||||
c = append(c,verbose_cmp(d1,d2))
|
||||
return join(c,", ")
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">verbose_dice_cmp</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">set</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{},</span> <span style="color: #000000;">d1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">d2</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">set</span><span style="color: #0000FF;">)-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">d1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]]</span>
|
||||
<span style="color: #000000;">d2</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]]</span>
|
||||
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,</span><span style="color: #000000;">verbose_cmp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">d1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d2</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #000000;">d1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">set</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]]</span>
|
||||
<span style="color: #000000;">d2</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">set</span><span style="color: #0000FF;">[$]]</span>
|
||||
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,</span><span style="color: #000000;">verbose_cmp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">d1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d2</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,</span><span style="color: #008000;">", "</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
procedure show_dice(sequence dice, non_trans, integer N)
|
||||
integer l = length(non_trans),
|
||||
omissions = 0,
|
||||
last = 0
|
||||
if N then
|
||||
printf(1,"\n Non_transitive length-%d combinations found: %d\n",{N,l+rotations})
|
||||
end if
|
||||
for i=1 to l do
|
||||
object ni = non_trans[i]
|
||||
if sequence(ni) then
|
||||
if i<5 then
|
||||
printf(1,"\n")
|
||||
for j=1 to length(ni) do
|
||||
sequence d = dice[ni[j]]
|
||||
printf(1," %s:%v\n",{Dnn(d),d})
|
||||
end for
|
||||
last = i
|
||||
else
|
||||
omissions += 1
|
||||
end if
|
||||
end if
|
||||
end for
|
||||
if omissions then
|
||||
printf(1," (%d omitted)\n",omissions)
|
||||
end if
|
||||
if rotations then
|
||||
printf(1," (%d rotations omitted)\n",rotations)
|
||||
end if
|
||||
if last then
|
||||
printf(1,"\n")
|
||||
if mx<=6 and mn=1 then
|
||||
printf(1," More verbose comparison of last result:\n")
|
||||
end if
|
||||
printf(1," %s\n",{verbose_dice_cmp(dice,non_trans[last])})
|
||||
printf(1,"\n ====\n")
|
||||
end if
|
||||
printf(1,"\n")
|
||||
end procedure
|
||||
|
||||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">non_trans</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">N</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">non_trans</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">omissions</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">last</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">N</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n Non_transitive length-%d combinations found: %d\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">N</span><span style="color: #0000FF;">,</span><span style="color: #000000;">l</span><span style="color: #0000FF;">+</span><span style="color: #000000;">rotations</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">l</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">object</span> <span style="color: #000000;">ni</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">non_trans</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #004080;">sequence</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ni</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">i</span><span style="color: #0000FF;"><</span><span style="color: #000000;">5</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ni</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">d</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">dice</span><span style="color: #0000FF;">[</span><span style="color: #000000;">ni</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]]</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" %s:%v\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">Dnn</span><span style="color: #0000FF;">(</span><span style="color: #000000;">d</span><span style="color: #0000FF;">),</span><span style="color: #000000;">d</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #000000;">last</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">i</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #000000;">omissions</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">omissions</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" (%d omitted)\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">omissions</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">rotations</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" (%d rotations omitted)\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">rotations</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">last</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">mx</span><span style="color: #0000FF;"><=</span><span style="color: #000000;">6</span> <span style="color: #008080;">and</span> <span style="color: #000000;">mn</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" More verbose comparison of last result:\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">verbose_dice_cmp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">non_trans</span><span style="color: #0000FF;">[</span><span style="color: #000000;">last</span><span style="color: #0000FF;">])})</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n ====\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
|
||||
atom t0 = time()
|
||||
sequence dice = possible_dice(4)
|
||||
for N=3 to 4 do
|
||||
show_dice(dice,find_non_trans(dice,N),N)
|
||||
end for
|
||||
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">possible_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">4</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">N</span><span style="color: #0000FF;">=</span><span style="color: #000000;">3</span> <span style="color: #008080;">to</span> <span style="color: #000000;">4</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">N</span><span style="color: #0000FF;">),</span><span style="color: #000000;">N</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
-- From the numberphile video (Efron's dice):
|
||||
mx = 6
|
||||
mn = 0
|
||||
dice = possible_dice(6)
|
||||
--show_dice(dice,find_non_trans(dice,4),4)
|
||||
-- ok, dunno about you but I'm not waiting for power(924,4) permutes...
|
||||
-- limit to the ones discussed, plus another 4 random ones
|
||||
-- (hopefully it'll just pick out the right ones...)
|
||||
printf(1,"\nEfron's dice\n")
|
||||
dice = {{0,0,4,4,4,4},
|
||||
{1,1,1,1,1,1}, -- (rand)
|
||||
{1,1,1,5,5,5},
|
||||
{1,2,3,4,5,6}, -- (rand)
|
||||
{2,2,2,2,6,6},
|
||||
{5,5,5,6,6,6}, -- (rand)
|
||||
{3,3,3,3,3,3},
|
||||
{6,6,6,6,6,6}} -- (rand)
|
||||
|
||||
<span style="color: #000080;font-style:italic;">-- From the numberphile video (Efron's dice):</span>
|
||||
<span style="color: #000000;">mx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">6</span>
|
||||
<span style="color: #000000;">mn</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">possible_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">6</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000080;font-style:italic;">--show_dice(dice,find_non_trans(dice,4),4)
|
||||
-- ok, dunno about you but I'm not waiting for power(924,4) permutes...
|
||||
-- limit to the ones discussed, plus another 4 random ones
|
||||
-- (hopefully it'll just pick out the right ones...)</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\nEfron's dice\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- (rand)</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- (rand)</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- (rand)</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">}}</span> <span style="color: #000080;font-style:italic;">-- (rand)</span>
|
||||
show_dice(dice,find_non_trans(dice,4),0)
|
||||
|
||||
<span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">),</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
|
||||
-- and from wp:
|
||||
mx = 9
|
||||
mn = 1
|
||||
dice = possible_dice(6)
|
||||
printf(1,"\nFrom wp\n")
|
||||
dice = {{1,1,6,6,8,8},
|
||||
{2,2,4,4,9,9},
|
||||
{3,3,5,5,7,7}}
|
||||
|
||||
<span style="color: #000080;font-style:italic;">-- and from wp:</span>
|
||||
<span style="color: #000000;">mx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">9</span>
|
||||
<span style="color: #000000;">mn</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">possible_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">6</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\nFrom wp\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">}}</span>
|
||||
show_dice(dice,find_non_trans(dice,3),0)
|
||||
|
||||
<span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">),</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
|
||||
-- Miwin's dice
|
||||
printf(1,"Miwin's dice\n")
|
||||
dice = {{1,2,5,6,7,9},
|
||||
{1,3,4,5,8,9},
|
||||
{2,3,4,6,7,8}}
|
||||
|
||||
<span style="color: #000080;font-style:italic;">-- Miwin's dice</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Miwin's dice\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">},</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">}}</span>
|
||||
|
||||
<span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">),</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s\n\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">))</span>
|
||||
<!--
|
||||
show_dice(dice,find_non_trans(dice,3),0)
|
||||
printf(1,"%s\n\n",elapsed(time()-t0))
|
||||
|
|
|
|||
|
|
@ -1,15 +1,13 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #000000;">mx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">6</span>
|
||||
<span style="color: #000000;">mn</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">possible_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">6</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">),</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s\n\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">))</span>
|
||||
t0 = time()
|
||||
mx = 6
|
||||
mn = 1
|
||||
dice = possible_dice(6)
|
||||
show_dice(dice,find_non_trans(dice,3),3)
|
||||
printf(1,"%s\n\n",elapsed(time()-t0))
|
||||
|
||||
<span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #000000;">mx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">6</span>
|
||||
<span style="color: #000000;">mn</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #000000;">dice</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">possible_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">6</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">show_dice</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">find_non_trans</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dice</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">),</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s\n\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">))</span>
|
||||
<!--
|
||||
t0 = time()
|
||||
mx = 6
|
||||
mn = 0
|
||||
dice = possible_dice(6)
|
||||
show_dice(dice,find_non_trans(dice,3),3)
|
||||
printf(1,"%s\n\n",elapsed(time()-t0))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue