İçeriğe geç

3-Bant Solver Veri Seti — Açık Karambol Pozisyon Verisi

100 karambol pozisyonu; 249 model içinde geçerli simülatör sonucu ve 151 boş/reddedilmiş yuva, sürümlü manifest ve ücretsiz JSON.

Yazar: Setviva Engineering 518 kelime 3 dk okuma

100 karambol pozisyonu, 249 model içinde geçerli sonuç ve 151 boş veya reddedilmiş yuvadan (toplam 400 değerlendirilen sonuç yuvası) oluşan özgün ve sürümlenmiş simülatör veri seti. Değerler makine öğrenmesinden veya gerçek masa başarı araştırmasından değil, sürümlü deterministik fizik önbelleğinden gelir.

100
pozisyon
249
geçerli çözücü sonucu
151
boş veya reddedilmiş sonuç yuvası
400
değerlendirilen sonuç yuvası
50
3-bant
50
serbest karambol

Metodoloji

Yayımlanan veri, sürümlü çözücü önbelleğinden üretilir. İndirme bağımsız doğrulanabilsin diye motor profili, kaynak parmak izi, sayımlar ve SHA-256 aşağıda kaydedilir. Bir satır yalnız kurala duyarlı motor seçilen modu tamamladığında simülatör sonucu sayılır; gerçek masa başarı oranı iddiası değildir.

Sürümlenmiş simülatör verisi

Motor sözleşmesi
3ball-carom-match-v2 / physics 2.0.0 / solver 4.2.0
Veri seti SHA-256
256a8ec7e7e9a66d907bd43f5fdd6b87628dc067fd9621f2d2ebd2472c3e43ed
geçerli çözücü sonucu
249
boş veya reddedilmiş sonuç yuvası
151
İnceleme durumu
machine-assisted-reviewed

Manifesti indir

Alan sözlüğü

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.

Herkese açık indirmeleri doğrula

İndirme kontrolü dosya bütünlüğünü ve sayıları doğrular. Fizik motorunu yeniden üretmez, vuruşu bağımsız doğrulamaz veya gerçek masa doğruluğunu kanıtlamaz. Tam üretim ortamı herkese açık dağıtılmıyor.

Aşağıdakini verify_3ball.py olarak kaydedip Python 3 ile çalıştır. Yalnız standart kitaplığı kullanır ve 3ball.app üzerindeki açık JSON dosyalarını indirir; hesap veya proje kopyası gerekmez.

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'])

Kapsam ve sınırlamalar

Bu, gerçek masa başarı araştırması değil deterministik simülatör veri setidir. Yayımlanan önbellek dondurulmuş V2 profilini kullanır. Physics V3 bağımsız gerçek masa ölçümünü beklemektedir. Marj ve sağlamlık alanları model tanısıdır; gerçek dünya olasılığı değildir.

Lisans ve gizlilik

İndirme yalnız hesaplanmış masa koordinatlarını ve çözücü çıktılarını içerir; fotoğraf, hesap kimliği, serbest metin veya kişisel veri içermez. CC BY 4.0 lisanslıdır.

Örnek pozisyonlar

PozisyonModTopSolver atışıEn iyi marj
3cushion::white::r2.130,0.710|w0.710,0.528|y0.710,0.7103-bant331.15
freecarom::white::r2.130,0.710|w0.710,0.528|y0.710,0.710serbest karambol311.32
3cushion::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.7103-bant310.94
freecarom::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710serbest karambol311.36
3cushion::white::r2.550,0.500|w0.300,0.300|y2.500,1.1003-bant340.28
freecarom::white::r2.550,0.500|w0.300,0.300|y2.500,1.100serbest karambol340.50
3cushion::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.1003-bant320.97
freecarom::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100serbest karambol342.13
3cushion::white::r0.550,0.300|w1.420,0.710|y1.950,1.1003-bant311.47
freecarom::white::r0.550,0.300|w1.420,0.710|y1.950,1.100serbest karambol321.50
3cushion::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.1003-bant310.24
freecarom::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100serbest karambol320.92

Tam veri setini indir

Eksiksiz makine-okunur veri seti, atıf ile ücretsiz indirilip yeniden kullanılabilir.

JSON indir

Nasıl kullanılır

Örnek koordinatları ve vuruş topu kimliğini kullanarak pozisyonu antrenöre yerleştir. Sabit V2 sonucu ile güncel V3 tekrarı farklı olabilir; karşılaştırırken motor sürümünü kaydet.

Antrenörü aç

Örnek koordinatları ve vuruş topu kimliğini kullanarak pozisyonu antrenöre yerleştir. Sabit V2 sonucu ile güncel V3 tekrarı farklı olabilir; karşılaştırırken motor sürümünü kaydet.

Antrenörü aç →