| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/3951572/root/tmp/rrpkg/ |
Upload File : |
// Replikat der Logik aus slf.js
let R = { players: [] };
function downVoters(s, cat, id) {
const v = (s.votes || {})[cat + '|' + id] || {};
return Object.keys(v).filter((k) => v[k] && Number(k) !== id).map(Number);
}
function rejected(s, cat, id) {
const down = downVoters(s, cat, id);
const remove = down.length;
if (remove === 0) return false;
const keep = R.players.length - remove;
if (remove > keep) return true;
if (remove === keep) return down.includes(0);
return false;
}
const P = (n) => { R.players = Array.from({length:n},(_,i)=>({id:i})); };
const votes = (obj) => ({ votes: { 'Stadt|1': obj } }); // Antwort von Spieler 1
let pass=0, fail=0;
function t(desc, got, exp){ const ok=got===exp; (ok?pass++:fail++); console.log((ok?'✓':'✗')+' '+desc+' => '+got+(ok?'':' (erwartet '+exp+')')); }
// 4 Spieler (0=Host/Autor? nein, Autor ist id1). Spieler 0 ist Host.
P(4);
t('4P, 0 downvotes -> bleibt', rejected(votes({}),'Stadt',1), false);
t('4P, 1 downvote -> bleibt (kein Überzahl)', rejected(votes({2:1}),'Stadt',1), false);
t('4P, 2 downvotes (2 vs 2, Host NICHT dabei) -> 50/50 Host=keep -> bleibt', rejected(votes({2:1,3:1}),'Stadt',1), false);
t('4P, 2 downvotes inkl. Host(0) -> 50/50 Host=remove -> raus', rejected(votes({0:1,2:1}),'Stadt',1), true);
t('4P, 3 downvotes -> Überzahl -> raus', rejected(votes({0:1,2:1,3:1}),'Stadt',1), true);
// Autor-Stimme wird ignoriert
t('4P, Autor(1) stimmt gegen sich + 1 anderer -> nur 1 zählt -> bleibt', rejected({votes:{'Stadt|1':{1:1,2:1}}},'Stadt',1), false);
// 3 Spieler (ungerade, kein 50/50 möglich)
P(3);
t('3P, 1 downvote -> bleibt', rejected(votes({2:1}),'Stadt',1), false);
t('3P, 2 downvotes (beide anderen) -> raus', rejected(votes({0:1,2:1}),'Stadt',1), true);
// 2 Spieler: Autor 1, Host 0
P(2);
t('2P, Host(0) zweifelt Gast(1) an -> 1 vs 1 -> Host entscheidet -> raus', rejected(votes({0:1}),'Stadt',1), true);
// Gast(1) zweifelt Host(0)-Antwort an: Antwort von id0, downvoter id1
t('2P, Gast(1) zweifelt Host(0) an -> 1 vs 1 -> Host(0) ist keep -> bleibt', rejected({votes:{'Stadt|0':{1:1}}},'Stadt',0), false);
console.log('\n'+pass+' bestanden, '+fail+' fehlgeschlagen');
process.exit(fail?1:0);