How to resolve the algorithm Random Latin squares step by step in the Arturo programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Random Latin squares step by step in the Arturo programming language

Table of Contents

Problem Statement

A Latin square of size n is an arrangement of n symbols in an n-by-n square in such a way that each row and column has each symbol appearing exactly once. For the purposes of this task, a random Latin square of size n is a Latin square constructed or generated by a probabilistic procedure such that the probability of any particular Latin square of size n being produced is non-zero. Strict uniformity in the random generation is a hard problem and not a requirement of the task.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Random Latin squares step by step in the Arturo programming language

Source code in the arturo programming language

latinSquare: function [n][
    square: new []
    variants: shuffle permutate 0..n-1
    while -> n > size square [
        row: sample variants
        'square ++ @[row]
        filter 'variants 'variant [
            reject: false
            loop.with:'i variant 'col [
                if col = row\[i] ->
                    reject: true
            ]
            reject
        ]
    ]
    return square
]

loop 2 'x [
    ls: latinSquare 5
    loop ls 'row ->
        print row
    print "---------"
]


  

You may also check:How to resolve the algorithm CUSIP step by step in the PicoLisp programming language
You may also check:How to resolve the algorithm 100 doors step by step in the TorqueScript programming language
You may also check:How to resolve the algorithm Pi step by step in the PicoLisp programming language
You may also check:How to resolve the algorithm Increment a numerical string step by step in the Rascal programming language
You may also check:How to resolve the algorithm Roots of a function step by step in the Perl programming language