mirror of
https://github.com/tgorordo/smithy.git
synced 2026-06-05 16:22:15 -07:00
init. core algorithm, initial testing, basic cli.
This commit is contained in:
commit
8836c49091
12 changed files with 2297 additions and 0 deletions
5
test/test_ballot.csv
Normal file
5
test/test_ballot.csv
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
Alice,Bob,Carol
|
||||
1 ,2 ,3
|
||||
2 ,1 ,3
|
||||
1 ,3 ,2
|
||||
3 ,1 ,2
|
||||
|
47
test/test_nb.py
Normal file
47
test/test_nb.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import marimo
|
||||
|
||||
__generated_with = "0.23.6"
|
||||
app = marimo.App(width="medium")
|
||||
|
||||
|
||||
@app.cell
|
||||
def _():
|
||||
import marimo as mo
|
||||
from pathlib import Path
|
||||
|
||||
return (mo,)
|
||||
|
||||
|
||||
@app.cell
|
||||
def _():
|
||||
import polars as pl
|
||||
from smithy import smith_set
|
||||
|
||||
return pl, smith_set
|
||||
|
||||
|
||||
@app.cell
|
||||
def _(mo, pl):
|
||||
df = pl.read_csv(mo.notebook_dir() / "test_ballot.csv")
|
||||
df = df.with_columns([ pl.col(c) # make safe, clean up
|
||||
.cast(pl.Utf8)
|
||||
.str.strip_chars()
|
||||
.cast(pl.Int64, strict=False).fill_null(df.width + 1)
|
||||
for c in df.columns ])
|
||||
df
|
||||
return (df,)
|
||||
|
||||
|
||||
@app.cell
|
||||
def _(df, smith_set):
|
||||
smith_set(df) # find the smith set (should be "Alice" and "Bob" as a pair)
|
||||
return
|
||||
|
||||
|
||||
@app.cell
|
||||
def _():
|
||||
return
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run()
|
||||
35
test/test_rcvs.py
Normal file
35
test/test_rcvs.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import polars as pl
|
||||
from smithy import smith_set
|
||||
|
||||
def test_condorcet():
|
||||
df = pl.DataFrame({
|
||||
'A': [1, 1, 2, 1],
|
||||
'B': [2, 2, 1, 2],
|
||||
'C': [3, 3, 3, 3],
|
||||
})
|
||||
assert smith_set(df) == ['A']
|
||||
|
||||
def test_rockpprscrcycle():
|
||||
df = pl.DataFrame({
|
||||
'A': [1, 2, 3],
|
||||
'B': [2, 3, 1],
|
||||
'C': [3, 1, 2],
|
||||
})
|
||||
assert smith_set(df) == ['A', 'B', 'C']
|
||||
|
||||
def test_abpair():
|
||||
df = pl.DataFrame({
|
||||
"A": [1, 2, 1, 3],
|
||||
"B": [2, 1, 3, 1],
|
||||
"C": [3, 3, 2, 2]
|
||||
})
|
||||
assert smith_set(df) == ['A', 'B']
|
||||
|
||||
def test_fourcycle():
|
||||
df = pl.DataFrame({
|
||||
"A": [1,2,3,4],
|
||||
"B": [2,3,4,1],
|
||||
"C": [3,4,1,2],
|
||||
"D": [4,1,2,3],
|
||||
})
|
||||
assert smith_set(df) == ['A', 'B', 'C', 'D']
|
||||
Loading…
Add table
Add a link
Reference in a new issue