Versioneerde simulatordataset met 100 posities, 249 modelgeldige resultaten en 151 lege of verworpen slots (400 beoordeeld). Afkomstig uit een geversioneerde deterministische physics-cache; geen successtudie aan een echte tafel.
Methodologie
Het gepubliceerde bestand wordt uit de versiegebonden solvercache gemaakt. Engineprofiel, bronfingerprint, aantallen en SHA-256 worden vastgelegd voor onafhankelijke controle. Een resultaat is uitsluitend een simulatoruitkomst en geen kans op succes aan een echte tafel.
Simulatordata met versie
- Enginecontract
3ball-carom-match-v2 / physics 2.0.0 / solver 4.2.0- Dataset-SHA-256
256a8ec7e7e9a66d907bd43f5fdd6b87628dc067fd9621f2d2ebd2472c3e43ed- geldige solverresultaten
- 249
- lege of afgewezen resultaatplaatsen
- 151
- Beoordelingsstatus
machine-assisted-reviewed
Veldwoordenboek
position: cueIdx, mode, firstIdx, balls, shots · ball: color, p.x, p.y · shots[]: shot {angle, power, sideSpin, topSpin}, label, length, margin, pct, tol, perturbPct, cushions.
Openbare downloads controleren
De controle toetst bestandsintegriteit en aantallen. Ze reproduceert de fysica-engine niet, valideert geen stoot onafhankelijk en bewijst geen nauwkeurigheid op een echte tafel. De volledige generatieomgeving wordt niet openbaar verspreid.
Sla de onderstaande tekst op als verify_3ball.py en voer hem uit met Python 3. Alleen de standaardbibliotheek en openbare JSON van 3ball.app zijn nodig; geen account of projectkopie.
import hashlib, json, urllib.request
BASE = 'https://3ball.app/'
ALLOWED = {'data/solutions_cache.json', 'data/solutions_cache_v3.json'}
def download(path):
with urllib.request.urlopen(BASE + path, timeout=30) as response:
return response.read(2_000_001)
manifest = json.loads(download('data/research-manifest.json'))
for key in ('source', 'portfolioBeta'):
record = manifest if key == 'source' else manifest[key]
source = record['source']
assert source['path'] in ALLOWED, 'Unexpected dataset path'
raw = download(source['path'])
assert len(raw) == source['bytes'], 'File size mismatch'
assert hashlib.sha256(raw).hexdigest() == source['sha256'], 'Hash mismatch'
data = json.loads(raw)
positions = list(data['positions'].values())
assert len(positions) == record['counts']['positions'], 'Position count mismatch'
if key == 'source':
shots = [s for p in positions for s in p['shots']]
assert sum(s is not None for s in shots) == record['counts']['validShots']
assert sum(s is None for s in shots) == record['counts']['rejectedSlots']
else:
continuations = list(data['continuations'].values())
assert len(continuations) == record['counts']['continuations']
solutions = [s for p in positions + continuations for s in p['solutions']]
assert sum(s is not None for s in solutions) == record['counts']['solutions']
print(source['path'], 'OK', record['counts'])Reikwijdte en beperkingen
Dit is een deterministische simulatordataset, geen succesonderzoek aan een echte tafel. De cache gebruikt het bevroren V2-profiel. Physics V3 wacht nog op onafhankelijke meting. Marge en robuustheid zijn modeldiagnoses, geen echte kansen.
Licentie en privacy
De download bevat alleen berekende tafelcoördinaten en solveruitvoer; geen foto’s, account-ID’s, vrije tekst of persoonsgegevens. Licentie CC BY 4.0.
Voorbeeldposities
| Positie | Modus | Ballen | Solver-stoten | Beste marge |
|---|---|---|---|---|
3cushion::white::r2.130,0.710|w0.710,0.528|y0.710,0.710 | driebanden | 3 | 3 | 1.15 |
freecarom::white::r2.130,0.710|w0.710,0.528|y0.710,0.710 | vrij spel | 3 | 1 | 1.32 |
3cushion::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710 | driebanden | 3 | 1 | 0.94 |
freecarom::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710 | vrij spel | 3 | 1 | 1.36 |
3cushion::white::r2.550,0.500|w0.300,0.300|y2.500,1.100 | driebanden | 3 | 4 | 0.28 |
freecarom::white::r2.550,0.500|w0.300,0.300|y2.500,1.100 | vrij spel | 3 | 4 | 0.50 |
3cushion::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100 | driebanden | 3 | 2 | 0.97 |
freecarom::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100 | vrij spel | 3 | 4 | 2.13 |
3cushion::white::r0.550,0.300|w1.420,0.710|y1.950,1.100 | driebanden | 3 | 1 | 1.47 |
freecarom::white::r0.550,0.300|w1.420,0.710|y1.950,1.100 | vrij spel | 3 | 2 | 1.50 |
3cushion::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100 | driebanden | 3 | 1 | 0.24 |
freecarom::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100 | vrij spel | 3 | 2 | 0.92 |
Download de volledige dataset
De volledige machineleesbare dataset is gratis te gebruiken met bronvermelding.
Hoe te gebruiken
Plaats een positie met de voorbeeldcoördinaten en de identiteit van de speelbal. Het bevroren V2-resultaat kan verschillen van een actuele V3-herhaling; noteer de engineversie bij vergelijking.
Open de trainer
Plaats een positie met de voorbeeldcoördinaten en de identiteit van de speelbal. Het bevroren V2-resultaat kan verschillen van een actuele V3-herhaling; noteer de engineversie bij vergelijking.
Open de trainer →